Skip to content

Commit af8c85e

Browse files
Merge pull request #90 from NexGenStudioDev/dev
Dev
2 parents 1fb1845 + 7b27bd4 commit af8c85e

53 files changed

Lines changed: 5450 additions & 127 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package-lock.json

Lines changed: 129 additions & 95 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
"markdown-to-jsx": "^9.7.16",
3030
"next-themes": "^0.4.6",
3131
"radix-ui": "^1.4.3",
32-
"react": "^19.2.6",
32+
"react": "19.2.6",
3333
"react-day-picker": "^9.14.0",
34-
"react-dom": "^19.2.6",
34+
"react-dom": "19.2.6",
3535
"react-hook-form": "^7.75.0",
3636
"react-icons": "^5.6.0",
3737
"react-router": "^7.15.0",

src/App.css

Lines changed: 85 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1+
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
2+
13
@import "tailwindcss";
24
@import "tw-animate-css";
35
@import "shadcn/tailwind.css";
46

5-
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
6-
77
@custom-variant dark (&:is(.dark *));
88
@plugin "@tailwindcss/typography";
99

1010
/* ─── Prevent flash on load ─────────────────────────────────────────────── */
1111
html {
1212
color-scheme: light;
1313
}
14+
1415
html.dark {
1516
color-scheme: dark;
1617
}
@@ -91,7 +92,9 @@ body {
9192
--color-cd-primary-subtle: var(--cd-primary-subtle);
9293
--color-cd-primary-text: var(--cd-primary-text);
9394
--color-cd-secondary: var(--cd-secondary);
95+
--color-cd-secondary-subtle: var(--cd-secondary-subtle);
9496
--color-cd-accent: var(--cd-accent);
97+
--color-cd-accent-subtle: var(--cd-accent-subtle);
9598
--color-cd-success: var(--cd-success);
9699
--color-cd-success-subtle: var(--cd-success-subtle);
97100
--color-cd-warning: var(--cd-warning);
@@ -143,17 +146,19 @@ body {
143146
--cd-surface: #ffffff;
144147
--cd-surface-2: #f1f5f9;
145148
--cd-surface-3: #eef2f7;
146-
--cd-border: #e2e8f0;
147-
--cd-border-subtle: #f1f5f9;
149+
--cd-border: #d8e1ee;
150+
--cd-border-subtle: #e9eef6;
148151
--cd-text: #1e293b;
149-
--cd-text-2: #64748b;
150-
--cd-text-muted: #94a3b8;
152+
--cd-text-2: #53657d;
153+
--cd-text-muted: #8392a8;
151154
--cd-primary: #2563eb;
152155
--cd-primary-hover: #1d4ed8;
153156
--cd-primary-subtle: #eff6ff;
154157
--cd-primary-text: #1d4ed8;
155158
--cd-secondary: #9333ea;
159+
--cd-secondary-subtle: #f5f3ff;
156160
--cd-accent: #06b6d4;
161+
--cd-accent-subtle: #ecfeff;
157162
--cd-success: #16a34a;
158163
--cd-success-subtle: #f0fdf4;
159164
--cd-warning: #ca8a04;
@@ -201,12 +206,12 @@ body {
201206
--sidebar-ring: #3b82f6;
202207

203208
/* CommDesk design tokens – dark */
204-
--cd-bg: #0f1320;
205-
--cd-surface: #1a1f2e;
206-
--cd-surface-2: #151929;
207-
--cd-surface-3: #1e293b;
208-
--cd-border: rgba(255, 255, 255, 0.08);
209-
--cd-border-subtle: rgba(255, 255, 255, 0.04);
209+
--cd-bg: #0b0d12;
210+
--cd-surface: #11151d;
211+
--cd-surface-2: #171c25;
212+
--cd-surface-3: #202632;
213+
--cd-border: rgba(255, 255, 255, 0.1);
214+
--cd-border-subtle: rgba(255, 255, 255, 0.065);
210215
--cd-text: #f8fafc;
211216
--cd-text-2: #94a3b8;
212217
--cd-text-muted: #64748b;
@@ -215,14 +220,16 @@ body {
215220
--cd-primary-subtle: rgba(59, 130, 246, 0.12);
216221
--cd-primary-text: #93c5fd;
217222
--cd-secondary: #a855f7;
223+
--cd-secondary-subtle: rgba(168, 85, 247, 0.12);
218224
--cd-accent: #22d3ee;
225+
--cd-accent-subtle: rgba(34, 211, 238, 0.12);
219226
--cd-success: #4ade80;
220227
--cd-success-subtle: rgba(74, 222, 128, 0.1);
221228
--cd-warning: #facc15;
222229
--cd-warning-subtle: rgba(250, 204, 21, 0.1);
223230
--cd-danger: #f87171;
224231
--cd-danger-subtle: rgba(248, 113, 113, 0.1);
225-
--cd-hover: rgba(255, 255, 255, 0.05);
232+
--cd-hover: rgba(255, 255, 255, 0.045);
226233
--cd-shadow: rgba(0, 0, 0, 0.3);
227234
--cd-shadow-md: rgba(0, 0, 0, 0.4);
228235
}
@@ -236,13 +243,15 @@ body {
236243
border-color 0.2s ease,
237244
color 0.15s ease;
238245
}
246+
239247
body {
240248
@apply bg-background text-foreground;
241249
}
242250
}
243251

244252
/* ─── CommDesk utility classes ───────────────────────────────────────────── */
245253
@layer utilities {
254+
246255
/* Cards */
247256
.cd-card {
248257
background-color: var(--cd-surface);
@@ -254,9 +263,11 @@ body {
254263
box-shadow 0.2s ease,
255264
transform 0.2s ease;
256265
}
266+
257267
.cd-card:hover {
258268
box-shadow: 0 4px 12px var(--cd-shadow-md);
259269
}
270+
260271
.cd-card-hover:hover {
261272
transform: translateY(-2px);
262273
}
@@ -285,22 +296,27 @@ body {
285296
font-weight: 500;
286297
line-height: 1.4;
287298
}
299+
288300
.cd-badge-success {
289301
background-color: var(--cd-success-subtle);
290302
color: var(--cd-success);
291303
}
304+
292305
.cd-badge-warning {
293306
background-color: var(--cd-warning-subtle);
294307
color: var(--cd-warning);
295308
}
309+
296310
.cd-badge-danger {
297311
background-color: var(--cd-danger-subtle);
298312
color: var(--cd-danger);
299313
}
314+
300315
.cd-badge-primary {
301316
background-color: var(--cd-primary-subtle);
302317
color: var(--cd-primary-text);
303318
}
319+
304320
.cd-badge-neutral {
305321
background-color: var(--cd-surface-2);
306322
color: var(--cd-text-2);
@@ -320,41 +336,50 @@ body {
320336
transition: all 0.15s ease;
321337
border: 1px solid transparent;
322338
}
339+
323340
.cd-btn:disabled {
324341
opacity: 0.5;
325342
cursor: not-allowed;
326343
}
344+
327345
.cd-btn-primary {
328346
background-color: var(--cd-primary);
329347
color: #ffffff;
330348
border-color: var(--cd-primary);
331349
}
350+
332351
.cd-btn-primary:hover:not(:disabled) {
333352
background-color: var(--cd-primary-hover);
334353
border-color: var(--cd-primary-hover);
335354
}
355+
336356
.cd-btn-secondary {
337357
background-color: var(--cd-surface-2);
338358
color: var(--cd-text);
339359
border-color: var(--cd-border);
340360
}
361+
341362
.cd-btn-secondary:hover:not(:disabled) {
342363
background-color: var(--cd-hover);
343364
}
365+
344366
.cd-btn-ghost {
345367
background-color: transparent;
346368
color: var(--cd-text-2);
347369
border-color: transparent;
348370
}
371+
349372
.cd-btn-ghost:hover:not(:disabled) {
350373
background-color: var(--cd-hover);
351374
color: var(--cd-text);
352375
}
376+
353377
.cd-btn-danger {
354378
background-color: var(--cd-danger-subtle);
355379
color: var(--cd-danger);
356380
border-color: var(--cd-danger-subtle);
357381
}
382+
358383
.cd-btn-danger:hover:not(:disabled) {
359384
background-color: var(--cd-danger);
360385
color: #ffffff;
@@ -374,13 +399,16 @@ body {
374399
border-color 0.15s ease,
375400
box-shadow 0.15s ease;
376401
}
402+
377403
.cd-input::placeholder {
378404
color: var(--cd-text-muted);
379405
}
406+
380407
.cd-input:focus {
381408
border-color: var(--cd-primary);
382409
box-shadow: 0 0 0 3px var(--cd-primary-subtle);
383410
}
411+
384412
.cd-input:disabled {
385413
opacity: 0.5;
386414
cursor: not-allowed;
@@ -391,9 +419,11 @@ body {
391419
width: 100%;
392420
border-collapse: collapse;
393421
}
422+
394423
.cd-table thead {
395424
background-color: var(--cd-surface-2);
396425
}
426+
397427
.cd-table th {
398428
padding: 0.75rem 1.25rem;
399429
text-align: left;
@@ -404,15 +434,18 @@ body {
404434
letter-spacing: 0.05em;
405435
border-bottom: 1px solid var(--cd-border);
406436
}
437+
407438
.cd-table td {
408439
padding: 0.875rem 1.25rem;
409440
font-size: 0.875rem;
410441
color: var(--cd-text);
411442
border-bottom: 1px solid var(--cd-border-subtle);
412443
}
444+
413445
.cd-table tbody tr:hover {
414446
background-color: var(--cd-hover);
415447
}
448+
416449
.cd-table tbody tr:last-child td {
417450
border-bottom: none;
418451
}
@@ -436,10 +469,12 @@ body {
436469
transition: all 0.15s ease;
437470
text-decoration: none;
438471
}
472+
439473
.cd-nav-link:hover {
440474
background-color: var(--cd-hover);
441475
color: var(--cd-text);
442476
}
477+
443478
.cd-nav-link.active {
444479
background-color: var(--cd-primary-subtle);
445480
color: var(--cd-primary-text);
@@ -478,16 +513,19 @@ body {
478513
box-shadow 0.2s ease,
479514
transform 0.2s ease;
480515
}
516+
481517
.section-title {
482518
font-size: 1rem;
483519
font-weight: 600;
484520
color: var(--cd-text);
485521
margin-bottom: 1rem;
486522
}
523+
487524
.text-muted {
488525
font-size: 0.875rem;
489526
color: var(--cd-text-2);
490527
}
528+
491529
.badge-success {
492530
display: inline-flex;
493531
align-items: center;
@@ -499,6 +537,7 @@ body {
499537
background-color: var(--cd-success-subtle);
500538
color: var(--cd-success);
501539
}
540+
502541
.badge-warning {
503542
display: inline-flex;
504543
align-items: center;
@@ -510,6 +549,7 @@ body {
510549
background-color: var(--cd-warning-subtle);
511550
color: var(--cd-warning);
512551
}
552+
513553
.badge-default {
514554
display: inline-flex;
515555
align-items: center;
@@ -521,6 +561,16 @@ body {
521561
background-color: var(--cd-surface-2);
522562
color: var(--cd-text-2);
523563
}
564+
565+
@keyframes shimmer {
566+
100% {
567+
transform: translateX(100%);
568+
}
569+
}
570+
571+
.animate-\[shimmer_1\.4s_infinite\] {
572+
animation: shimmer 1.4s infinite;
573+
}
524574
}
525575

526576
/* ─── Smooth theme transition ────────────────────────────────────────────── */
@@ -540,13 +590,35 @@ html {
540590
width: 6px;
541591
height: 6px;
542592
}
593+
543594
::-webkit-scrollbar-track {
544595
background: transparent;
545596
}
597+
546598
::-webkit-scrollbar-thumb {
547599
background-color: var(--cd-border);
548600
border-radius: 9999px;
549601
}
602+
550603
::-webkit-scrollbar-thumb:hover {
551604
background-color: var(--cd-text-muted);
552605
}
606+
607+
/* ─── Custom Scrollbar Utility ───────────────────────────────────────────── */
608+
.custom-scrollbar::-webkit-scrollbar {
609+
width: 5px;
610+
}
611+
612+
.custom-scrollbar::-webkit-scrollbar-track {
613+
background: transparent;
614+
}
615+
616+
.custom-scrollbar::-webkit-scrollbar-thumb {
617+
background-color: var(--cd-border);
618+
border-radius: 10px;
619+
border: 1px solid transparent;
620+
}
621+
622+
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
623+
background-color: var(--cd-primary);
624+
}

src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import "./App.css";
77
import { dashboardData } from "./features/Member/v1/mock/dashboardData";
88
import { startAutoUpdater } from "./system/updater/autoUpdater";
99

10-
import { ThemeProvider } from "next-themes";
10+
import { ThemeProvider } from "./theme";
1111
import OrgRoute from "./routes/OrgRoute";
1212
import MemberRoutes from "./routes/MemberRoutes";
1313

@@ -19,7 +19,7 @@ function App() {
1919
const user = dashboardData.user;
2020

2121
return (
22-
<ThemeProvider attribute="class" defaultTheme="light">
22+
<ThemeProvider>
2323
<BrowserRouter>
2424

2525
<OrgRoute />

src/config/them.config.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import { theme, type ThemeMode, type ThemeTokens } from "../theme/theme.config";
44

55
export type { ThemeMode };
6-
export type Theme = ThemeTokens[ThemeMode];
6+
export type Theme = ThemeTokens;
77

8-
export function getTheme(mode: ThemeMode): Theme {
9-
return theme[mode];
8+
/** Returns the single flat token object — CSS variables resolve per mode automatically. */
9+
export function getTheme(_mode?: ThemeMode): Theme {
10+
return theme;
1011
}

src/features/Dashboard/components/AISuggestions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Sparkles } from "lucide-react";
2-
import { Task } from "@/features/Dashboard/types/dashboard";
2+
import { Task } from "@/features/Dashboard/Member/v1/Type/dashboard";
33
import { getAISuggestions } from "@/utils/aisuggestions";
44

55
interface Props {

0 commit comments

Comments
 (0)