shak3008 commited on
Commit
a61b280
·
1 Parent(s): d797968

feat: mobile-responsive frontend (bottom nav, stacked layouts, scrollable tables)

Browse files
frontend/src/components/layout/AppLayout.css CHANGED
@@ -52,3 +52,15 @@
52
  padding: var(--space-5);
53
  }
54
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  padding: var(--space-5);
53
  }
54
  }
55
+
56
+ /* Mobile: stack layout vertically */
57
+ @media (max-width: 768px) {
58
+ .dw-app-layout {
59
+ flex-direction: column;
60
+ }
61
+
62
+ .dw-app-layout__content {
63
+ padding: var(--space-4) var(--space-3);
64
+ padding-bottom: 80px; /* space for bottom nav */
65
+ }
66
+ }
frontend/src/components/layout/Sidebar.css CHANGED
@@ -187,3 +187,75 @@
187
  background: var(--color-warning-soft);
188
  color: var(--color-warning);
189
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  background: var(--color-warning-soft);
188
  color: var(--color-warning);
189
  }
190
+
191
+ /* Mobile: bottom navigation bar */
192
+ @media (max-width: 768px) {
193
+ .dw-sidebar {
194
+ width: 100%;
195
+ height: auto;
196
+ position: fixed;
197
+ bottom: 0;
198
+ top: auto;
199
+ left: 0;
200
+ right: 0;
201
+ flex-direction: row;
202
+ border-right: none;
203
+ border-top: 1px solid var(--color-border);
204
+ padding: var(--space-2) var(--space-3);
205
+ z-index: 100;
206
+ overflow-x: auto;
207
+ }
208
+
209
+ .dw-sidebar__top {
210
+ display: none;
211
+ }
212
+
213
+ .dw-sidebar__nav {
214
+ flex-direction: row;
215
+ gap: 0;
216
+ flex: 1;
217
+ justify-content: space-around;
218
+ }
219
+
220
+ .dw-sidebar__footer {
221
+ display: none;
222
+ }
223
+
224
+ .dw-sidebar__link {
225
+ flex-direction: column;
226
+ gap: 2px;
227
+ height: auto;
228
+ padding: var(--space-1) var(--space-2);
229
+ font-size: 10px;
230
+ min-width: 48px;
231
+ align-items: center;
232
+ justify-content: center;
233
+ }
234
+
235
+ .dw-sidebar__link-icon {
236
+ font-size: var(--text-base);
237
+ }
238
+
239
+ .dw-sidebar__link-label {
240
+ font-size: 10px;
241
+ white-space: nowrap;
242
+ }
243
+
244
+ .dw-sidebar__link--active::before {
245
+ display: none;
246
+ }
247
+
248
+ .dw-sidebar__badge {
249
+ position: absolute;
250
+ top: -2px;
251
+ right: -2px;
252
+ margin-left: 0;
253
+ min-width: 14px;
254
+ height: 14px;
255
+ font-size: 9px;
256
+ }
257
+
258
+ .dw-sidebar__collapse-btn {
259
+ display: none;
260
+ }
261
+ }
frontend/src/components/layout/Topbar.css CHANGED
@@ -346,3 +346,39 @@
346
  opacity: 0.5;
347
  cursor: default;
348
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  opacity: 0.5;
347
  cursor: default;
348
  }
349
+
350
+ /* Mobile responsive */
351
+ @media (max-width: 768px) {
352
+ .dw-topbar {
353
+ padding: 0 var(--space-3);
354
+ gap: var(--space-2);
355
+ }
356
+
357
+ .dw-topbar__search {
358
+ display: none;
359
+ }
360
+
361
+ .dw-topbar__workspace {
362
+ max-width: 120px;
363
+ font-size: var(--text-xs);
364
+ padding: 0 var(--space-2);
365
+ }
366
+
367
+ .dw-topbar__notif-dropdown {
368
+ width: calc(100vw - var(--space-6));
369
+ right: calc(-1 * var(--space-3));
370
+ }
371
+ }
372
+
373
+ @media (max-width: 480px) {
374
+ .dw-topbar__upload-btn {
375
+ width: 28px;
376
+ height: 28px;
377
+ font-size: var(--text-sm);
378
+ }
379
+
380
+ .dw-topbar__icon-btn {
381
+ width: 28px;
382
+ height: 28px;
383
+ }
384
+ }
frontend/src/components/ui/DataTable.css CHANGED
@@ -173,3 +173,23 @@
173
  background: var(--color-accent-soft);
174
  color: var(--color-accent);
175
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  background: var(--color-accent-soft);
174
  color: var(--color-accent);
175
  }
176
+
177
+ /* Mobile responsive */
178
+ @media (max-width: 768px) {
179
+ .dw-table__wrapper {
180
+ border-radius: var(--radius-sm);
181
+ }
182
+
183
+ .dw-table__th,
184
+ .dw-table__td {
185
+ padding: var(--space-2) var(--space-3);
186
+ }
187
+
188
+ .dw-table__filename {
189
+ max-width: 150px;
190
+ overflow: hidden;
191
+ text-overflow: ellipsis;
192
+ white-space: nowrap;
193
+ display: inline-block;
194
+ }
195
+ }
frontend/src/pages/Dashboard.css CHANGED
@@ -177,3 +177,43 @@
177
  color: var(--color-text-muted);
178
  font-size: var(--text-sm);
179
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  color: var(--color-text-muted);
178
  font-size: var(--text-sm);
179
  }
180
+
181
+ /* Mobile responsive */
182
+ @media (max-width: 768px) {
183
+ .dw-dashboard__header-row {
184
+ flex-direction: column;
185
+ align-items: flex-start;
186
+ gap: var(--space-3);
187
+ }
188
+
189
+ .dw-dashboard__kpis {
190
+ grid-template-columns: repeat(3, 1fr);
191
+ gap: var(--space-2);
192
+ }
193
+
194
+ .dw-dashboard__kpi {
195
+ padding: var(--space-3) var(--space-2);
196
+ }
197
+
198
+ .dw-dashboard__kpi-value {
199
+ font-size: var(--text-lg);
200
+ }
201
+
202
+ .dw-dashboard__grid {
203
+ grid-template-columns: 1fr;
204
+ }
205
+
206
+ .dw-dashboard__doc-name {
207
+ max-width: 180px;
208
+ }
209
+
210
+ .dw-dashboard__activity-message {
211
+ max-width: 160px;
212
+ }
213
+ }
214
+
215
+ @media (max-width: 480px) {
216
+ .dw-dashboard__kpis {
217
+ grid-template-columns: repeat(2, 1fr);
218
+ }
219
+ }
frontend/src/pages/Documents.css CHANGED
@@ -111,3 +111,29 @@
111
  padding: 0 2px;
112
  line-height: 1;
113
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  padding: 0 2px;
112
  line-height: 1;
113
  }
114
+
115
+ /* Mobile responsive */
116
+ @media (max-width: 768px) {
117
+ .dw-docs__header-row {
118
+ flex-direction: column;
119
+ align-items: flex-start;
120
+ gap: var(--space-3);
121
+ }
122
+
123
+ .dw-docs__controls {
124
+ flex-direction: column;
125
+ align-items: stretch;
126
+ gap: var(--space-3);
127
+ }
128
+
129
+ .dw-docs__filters {
130
+ overflow-x: auto;
131
+ flex-wrap: nowrap;
132
+ padding-bottom: var(--space-1);
133
+ }
134
+
135
+ .dw-docs__filter {
136
+ white-space: nowrap;
137
+ flex-shrink: 0;
138
+ }
139
+ }
frontend/src/styles/global.css CHANGED
@@ -140,3 +140,14 @@ code, .mono {
140
  color: var(--color-text-secondary);
141
  font-size: var(--text-sm);
142
  }
 
 
 
 
 
 
 
 
 
 
 
 
140
  color: var(--color-text-secondary);
141
  font-size: var(--text-sm);
142
  }
143
+
144
+ /* Mobile responsive */
145
+ @media (max-width: 768px) {
146
+ .dw-page {
147
+ gap: var(--space-4);
148
+ }
149
+
150
+ .dw-page__header h1 {
151
+ font-size: var(--text-xl);
152
+ }
153
+ }