latterworks commited on
Commit
e3dbc25
·
verified ·
1 Parent(s): 578747d

User-Facing Civilian Mobile Application Front-End Specification: AEGIS Civilian App (Visual Design Emphasis)

Browse files

This specification refines the front-end development for the AEGIS Civilian App, with a strong focus on a distinctive visual design language: a dark, high-contrast, institutional, and future-sleek aesthetic. The UI will leverage sharp corners, shader-based appearances over gradients, and realistic 3D glass/frosted glass effects for interactive elements, reserving vibrant, high-alert colors only for critical states like low battery or emergencies.

Project Setup & Core Technologies (Visual Design Additions)

Styling: The approach involves React Native's StyleSheet API and a custom component library built with this specific design language in mind. Emphasis is placed on atomic design principles to ensure consistency. Theming will be managed via a dedicated theme.ts file that defines a strict palette of dark grays, near-blacks, and a primary accent color such as a cool blue or electric teal for active states and highlights. High-contrast text colors like crisp white or light gray will be used. A separate emergencyTheme.ts or a state-based override will dictate the shift to red or amber palettes for alerts. Visual effects like custom shaders, if feasible via native modules or libraries such as react-native-skia for advanced effects, or carefully crafted CSS-like properties, will simulate frosted glass, metallic sheens, and distinct material layers. Shadow effects will be minimal, used sparingly to suggest depth rather than soft glows.

Application Structure & Component Architecture (Visual Design Integration)

UI Components: All generic components like Button, TextInput, Modal, and Card will adhere to the sharp-cornered, dark theme. Interactive elements such as buttons, navigation tabs, and input fields, as well as containers like cards and modals, will utilize a "frosted glass" effect. This involves a semi-transparent background with a subtle blur effect on content behind it, giving a sense of depth and layered information. This will be simulated using BlurView from @react-native-community/blur combined with carefully chosen opacity and background colors. Shader-based colors will be flat, or have a subtle, uniform metallic sheen or textured look achieved through specific shader-like effects, avoiding smooth color transitions. Typography will use a sans-serif font like Inter or Montserrat, or a custom futuristic typeface, with crisp, high-contrast white or light gray on dark backgrounds. Font weights will be carefully chosen for readability and hierarchy.

Specific Feature Implementations (Frontend) - Visual Design Focus

5.1 Home/Dashboard Screen: The background will be a deep, institutional dark. Cards for alerts, assets, and chat will appear as distinct "frosted glass" panels, sharp-cornered, slightly translucent, stacked neatly. The Emergency Button's default state will be a dark, glass-like button with a subtle, institutional accent ring. Crucially, upon entering an emergency state or low battery, this button and relevant UI elements will transform to a high-contrast, pulsating, bright red or amber, clearly visible against the dark theme.

5.2 Emergency/SOS Functionality: When activated, the "Emergency/SOS Button" will glow with an intense, sharp-edged red light, potentially with a rapid, stark animation. The entire screen might flash a red overlay or introduce red accent lines to indicate critical status. Text will remain high-contrast white or light gray.

5.3 Asset Tracking View: The map background will be a dark, minimalist rendering. Asset markers will be sharp, geometric icons with subtle accent colors for status, for example, a crisp green dot for active or muted gray for idle. When selected, an asset's marker might emit a subtle, shader-based glow. The Asset Details Modal will be a sharp-cornered modal, rendered with the frosted glass effect, containing high-contrast text and minimalist icons.

5.4 Secure Chat Interface: The chat interface will feature a deep dark background. Chat bubbles will be sharp-cornered, made of a slightly less opaque frosted glass for sent messages, and perhaps a more transparent glass for received messages, creating distinct layers. A crisp accent color, such as electric blue, will be used for the user's own messages. The TextInput for messages will be a dark, frosted glass bar at the bottom.

5.5 Notifications & Alerts: In-app notifications will be displayed as sharp-cornered "toast" messages or cards. Critical alerts like "Active Threat" will use a stark red, while warnings might use a sharp amber, both high-contrast against the dark background.

5.6 Profile & Settings: The design will be a clean, organized layout using dark panels with white or light gray high-contrast text. Input fields and toggles will maintain the sharp-cornered, frosted glass appearance.

Accessibility (A11y) - Visual Design Considerations

Color Contrast: It is critical to ensure WCAG AA compliance with the dark theme and high-contrast elements. Text and interactive elements must have a minimum contrast ratio of 4.5:1. Tools will be used to verify this for all states, especially for emergency colors. Visual Cues: Beyond color, distinct shapes, icons, and animations will be used for critical information, such as a pulsating border for an active alert or a unique icon for low battery.

Performance Optimizations (Visual Design Impact)

Blur Effects: The frosted glass effect, while visually appealing, can be performance-intensive. BlurView will be used judiciously and optimized to ensure smooth animations and transitions, especially on older devices. Shader Simulations: If complex shader effects are attempted, they must be thoroughly profiled to prevent UI lag. Simpler, performant alternatives will be prioritized.

Error Handling & User Feedback (Visual Design Integration)

Loading Indicators: Minimalist, sharp-edged loading spinners, for example, a rotating geometric shape, will be used in a subtle accent color against the dark background. Toast Notifications/Alerts: Sharp-cornered, dark "glass" panels will be used for non-critical messages. Critical errors will use the same stark red or amber palette as emergency states.

By integrating these specific design directives, the AEGIS Civilian App will present a highly distinctive, professional, and functionally clear interface, effectively communicating normal operational states with its sleek, dark "glass" aesthetic, and instantly demanding attention in critical situations through stark, high-contrast color shifts.

Files changed (2) hide show
  1. app.html +191 -0
  2. index.html +4 -1
app.html ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AEGIS Civilian App</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/feather-icons"></script>
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
11
+
12
+ :root {
13
+ --bg-primary: #050505;
14
+ --bg-secondary: #121212;
15
+ --text-primary: #ffffff;
16
+ --text-secondary: #b3b3b3;
17
+ --accent: #00c6ff;
18
+ --emergency: #ff0033;
19
+ --border: 1px solid #1a1a1a;
20
+ }
21
+
22
+ body {
23
+ font-family: 'Inter', sans-serif;
24
+ background-color: var(--bg-primary);
25
+ color: var(--text-primary);
26
+ letter-spacing: -0.02em;
27
+ line-height: 1.5;
28
+ }
29
+
30
+ .frosted-glass {
31
+ background: rgba(18, 18, 18, 0.7);
32
+ backdrop-filter: blur(10px);
33
+ -webkit-backdrop-filter: blur(10px);
34
+ border: var(--border);
35
+ border-radius: 0;
36
+ }
37
+
38
+ .frosted-glass-light {
39
+ background: rgba(30, 30, 30, 0.7);
40
+ }
41
+
42
+ .btn-emergency {
43
+ background: var(--emergency);
44
+ box-shadow: 0 0 15px var(--emergency);
45
+ animation: pulse 1.5s infinite;
46
+ }
47
+
48
+ @keyframes pulse {
49
+ 0% { box-shadow: 0 0 10px var(--emergency); }
50
+ 50% { box-shadow: 0 0 20px var(--emergency); }
51
+ 100% { box-shadow: 0 0 10px var(--emergency); }
52
+ }
53
+
54
+ .chat-bubble-sent {
55
+ background: rgba(0, 198, 255, 0.15);
56
+ border: 1px solid rgba(0, 198, 255, 0.3);
57
+ }
58
+
59
+ .chat-bubble-received {
60
+ background: rgba(255, 255, 255, 0.05);
61
+ border: 1px solid rgba(255, 255, 255, 0.1);
62
+ }
63
+
64
+ .asset-marker {
65
+ width: 12px;
66
+ height: 12px;
67
+ border-radius: 0;
68
+ background: var(--accent);
69
+ transform: rotate(45deg);
70
+ }
71
+
72
+ .asset-marker-active {
73
+ box-shadow: 0 0 0 2px rgba(0, 198, 255, 0.5);
74
+ }
75
+ </style>
76
+ </head>
77
+ <body class="min-h-screen">
78
+ <!-- App Container -->
79
+ <div class="max-w-md mx-auto bg-[var(--bg-primary)] h-screen flex flex-col">
80
+ <!-- Header -->
81
+ <header class="frosted-glass p-4 border-b border-[#1a1a1a]">
82
+ <div class="flex justify-between items-center">
83
+ <div class="flex items-center">
84
+ <i data-feather="shield" class="text-[var(--accent)] h-6 w-6"></i>
85
+ <span class="ml-2 font-bold">AEGIS</span>
86
+ </div>
87
+ <div class="flex items-center space-x-3">
88
+ <i data-feather="bell" class="text-[var(--text-secondary)] h-5 w-5"></i>
89
+ <div class="w-6 h-6 rounded-sm overflow-hidden">
90
+ <img src="http://static.photos/people/200x200/42" class="w-full h-full object-cover" alt="Profile">
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </header>
95
+
96
+ <!-- Main Content -->
97
+ <main class="flex-1 overflow-y-auto p-4 space-y-4">
98
+ <!-- Status Card -->
99
+ <div class="frosted-glass p-4">
100
+ <div class="flex justify-between items-center">
101
+ <div>
102
+ <p class="text-xs text-[var(--text-secondary)]">CURRENT STATUS</p>
103
+ <p class="text-xl font-medium">Normal</p>
104
+ </div>
105
+ <div class="w-10 h-10 flex items-center justify-center bg-[rgba(0,198,255,0.1)]">
106
+ <i data-feather="check-circle" class="text-[var(--accent)]"></i>
107
+ </div>
108
+ </div>
109
+ </div>
110
+
111
+ <!-- Emergency Button -->
112
+ <button class="frosted-glass w-full py-6 flex flex-col items-center justify-center border border-[#1a1a1a] hover:border-[var(--accent)] transition-colors">
113
+ <div class="w-14 h-14 rounded-sm flex items-center justify-center bg-[var(--bg-secondary)] border border-[var(--accent)] mb-2">
114
+ <i data-feather="alert-octagon" class="text-[var(--accent)] h-6 w-6"></i>
115
+ </div>
116
+ <span class="text-sm font-medium">Emergency SOS</span>
117
+ </button>
118
+
119
+ <!-- Quick Actions -->
120
+ <div class="frosted-glass p-4">
121
+ <h3 class="text-sm font-medium mb-3">QUICK ACTIONS</h3>
122
+ <div class="grid grid-cols-3 gap-3">
123
+ <button class="frosted-glass-light p-3 flex flex-col items-center">
124
+ <i data-feather="map" class="text-[var(--accent)] h-5 w-5 mb-1"></i>
125
+ <span class="text-xs">Assets</span>
126
+ </button>
127
+ <button class="frosted-glass-light p-3 flex flex-col items-center">
128
+ <i data-feather="message-square" class="text-[var(--accent)] h-5 w-5 mb-1"></i>
129
+ <span class="text-xs">Chat</span>
130
+ </button>
131
+ <button class="frosted-glass-light p-3 flex flex-col items-center">
132
+ <i data-feather="users" class="text-[var(--accent)] h-5 w-5 mb-1"></i>
133
+ <span class="text-xs">Contacts</span>
134
+ </button>
135
+ </div>
136
+ </div>
137
+
138
+ <!-- Recent Alerts -->
139
+ <div class="frosted-glass p-4">
140
+ <div class="flex justify-between items-center mb-3">
141
+ <h3 class="text-sm font-medium">RECENT ALERTS</h3>
142
+ <span class="text-xs text-[var(--accent)]">View All</span>
143
+ </div>
144
+ <div class="space-y-2">
145
+ <div class="frosted-glass-light p-3 border-l-2 border-[var(--accent)]">
146
+ <p class="text-sm">System update available</p>
147
+ <p class="text-xs text-[var(--text-secondary)]">2 hours ago</p>
148
+ </div>
149
+ <div class="frosted-glass-light p-3 border-l-2 border-[#ffcc00]">
150
+ <p class="text-sm">New security advisory</p>
151
+ <p class="text-xs text-[var(--text-secondary)]">1 day ago</p>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </main>
156
+
157
+ <!-- Bottom Navigation -->
158
+ <nav class="frosted-glass border-t border-[#1a1a1a]">
159
+ <div class="grid grid-cols-4">
160
+ <button class="p-3 flex flex-col items-center text-[var(--accent)]">
161
+ <i data-feather="home" class="h-5 w-5"></i>
162
+ </button>
163
+ <button class="p-3 flex flex-col items-center text-[var(--text-secondary)]">
164
+ <i data-feather="map" class="h-5 w-5"></i>
165
+ </button>
166
+ <button class="p-3 flex flex-col items-center text-[var(--text-secondary)]">
167
+ <i data-feather="message-square" class="h-5 w-5"></i>
168
+ </button>
169
+ <button class="p-3 flex flex-col items-center text-[var(--text-secondary)]">
170
+ <i data-feather="settings" class="h-5 w-5"></i>
171
+ </button>
172
+ </div>
173
+ </nav>
174
+ </div>
175
+
176
+ <script>
177
+ feather.replace();
178
+
179
+ // Emergency mode simulation
180
+ document.querySelector('.emergency-btn').addEventListener('click', function() {
181
+ this.classList.add('btn-emergency');
182
+ document.querySelector('.status-text').textContent = 'EMERGENCY';
183
+ document.querySelector('.status-text').classList.add('text-[var(--emergency)]');
184
+ document.querySelector('.status-icon').classList.remove('text-[var(--accent)]');
185
+ document.querySelector('.status-icon').classList.add('text-[var(--emergency)]');
186
+ document.querySelector('.status-icon').setAttribute('data-feather', 'alert-triangle');
187
+ feather.replace();
188
+ });
189
+ </script>
190
+ </body>
191
+ </html>
index.html CHANGED
@@ -145,7 +145,10 @@
145
  <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
146
  <i data-feather="cpu" class="mr-2 h-4 w-4"></i> AI Inference
147
  </a>
148
- <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
 
 
 
149
  <i data-feather="database" class="mr-2 h-4 w-4"></i> Ledger
150
  </a>
151
  <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
 
145
  <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
146
  <i data-feather="cpu" class="mr-2 h-4 w-4"></i> AI Inference
147
  </a>
148
+ <a href="app.html" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
149
+ <i data-feather="smartphone" class="mr-2 h-4 w-4"></i> Civilian App
150
+ </a>
151
+ <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">
152
  <i data-feather="database" class="mr-2 h-4 w-4"></i> Ledger
153
  </a>
154
  <a href="#" class="nav-item text-gray-300 hover:bg-gray-800 hover:text-white px-3 py-2 rounded-md text-sm font-medium flex items-center">