Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
f78d323
feat: update environment configuration, enhance error handling, and r…
Mananwebdev160408 Mar 31, 2026
e220850
feat: enhance testing setup and layout structure, update font configu…
Mananwebdev160408 Mar 31, 2026
e57f873
feat: enhance course fetching logic for faculty and admin, improve er…
Mananwebdev160408 Mar 31, 2026
19f1be5
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Mar 31, 2026
1f5be83
feat: update hostel issue status handling, improve attendance data fe…
Mananwebdev160408 Mar 31, 2026
8e8d43d
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Mar 31, 2026
a64e1bc
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Mar 31, 2026
a789431
feat: initialize Prisma ORM with schema and configuration and add Fac…
Mananwebdev160408 Mar 31, 2026
5608a5c
feat: implement core ERP domain schemas and initialize attendance ses…
Mananwebdev160408 Mar 31, 2026
d39aed1
feat: implement social sync, room management, score sheet, and facult…
Mananwebdev160408 Mar 31, 2026
cefb07f
feat: implement protected pages for room management, profile, score s…
Mananwebdev160408 Mar 31, 2026
4d14397
feat: implement student portfolio and faculty bio system modules with…
Mananwebdev160408 Mar 31, 2026
1b539ee
feat: implement payment gateway configuration and expand admin dashbo…
Mananwebdev160408 Apr 1, 2026
9d81a17
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Apr 1, 2026
05fe7f8
feat: add authentication contract and schemas for login and signup
Mananwebdev160408 Apr 1, 2026
03ce80b
feat: implement faculty dashboard infrastructure, including API URL r…
Mananwebdev160408 Apr 1, 2026
758f713
Add Turbo cache files for build artifacts
Mananwebdev160408 Apr 1, 2026
f3b7561
feat: refactor API URL handling and improve session validation logic
Mananwebdev160408 Apr 1, 2026
50b71f3
feat: add academic calendar module, service, and DTOs
Mananwebdev160408 Apr 1, 2026
f7a3fce
feat: update event colors and add sidebar resizing functionality
Mananwebdev160408 Apr 1, 2026
b1ffba2
feat: update academic calendar events for 2026 and enhance event deta…
Mananwebdev160408 Apr 1, 2026
945b33d
feat: enhance InteractiveCalendar with event creation and UI improvem…
Mananwebdev160408 Apr 1, 2026
9061b60
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Apr 1, 2026
f3c0ea7
chore: update picomatch and path-to-regexp versions in package-lock.json
Mananwebdev160408 Apr 1, 2026
255e9f7
feat: initialize project structure with custom design tokens, theme s…
Mananwebdev160408 Apr 1, 2026
aacd34a
feat: initialize root layout with global fonts, metadata, and providers
Mananwebdev160408 Apr 1, 2026
55674c4
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Apr 1, 2026
799ea7e
Fixed merge conflicts from origin/main
Mananwebdev160408 Apr 2, 2026
99bf102
refactor: update API calls and enhance data handling in attendance an…
Mananwebdev160408 Apr 2, 2026
91ea619
feat: implement faculty management server actions for API interaction…
Mananwebdev160408 Apr 2, 2026
626abd3
refactor: streamline data extraction with asArray utility in Attendan…
Mananwebdev160408 Apr 3, 2026
4ae433b
Merge branch 'main' into manan
Mananwebdev160408 Jun 3, 2026
c924a6c
feat: implement dashboard data slots, noticeboard backend services, a…
Mananwebdev160408 Jun 3, 2026
3161d42
feat: implement marketplace module with product browsing, listing man…
Mananwebdev160408 Jun 3, 2026
6e20729
feat: implement AI RAG pipeline with Qdrant and introduce Generative …
Mananwebdev160408 Jun 4, 2026
cfe98ef
feat: implement FloatingAIChat component with voice input, generative…
Mananwebdev160408 Jun 4, 2026
50e3273
feat: implement AI controller and service with tool-based integration…
Mananwebdev160408 Jun 4, 2026
4595662
feat: add UI theme toggler and initialize shared modules for contract…
Mananwebdev160408 Jun 4, 2026
142e6e4
Merge branch 'main' into manan and resolve conflicts
Mananwebdev160408 Jun 6, 2026
a4e1dfe
Merge branch 'main' into manan, resolve conflicts, and configure dev …
Mananwebdev160408 Jun 6, 2026
d916b0f
docs: add comprehensive project documentation and update repository c…
Mananwebdev160408 Jun 6, 2026
74ef13f
Merge branch 'main' into manan
Copilot Jun 6, 2026
a754afa
feat: implement AI agent orchestration system with tool registry and …
Mananwebdev160408 Jun 6, 2026
3619f4f
feat: implement generative UI components for academic data and add AI…
Mananwebdev160408 Jun 6, 2026
ccb67aa
feat: implement timetable management module including UI components a…
Mananwebdev160408 Jun 6, 2026
70b5fe2
feat: implement administrative academic calendar management including…
Mananwebdev160408 Jun 6, 2026
dd78a22
feat: implement student portfolio module with project and skill manag…
Mananwebdev160408 Jun 6, 2026
d1006d6
feat: add CampusMap3D component with interactive building visualizati…
Mananwebdev160408 Jun 6, 2026
d14fef2
feat: add GoogleTranslate component to support multi-language localiz…
Mananwebdev160408 Jun 6, 2026
ca15054
feat: enhance CampusMap3D with dark mode support and UI improvements
Mananwebdev160408 Jun 6, 2026
940ad45
Merge with main
Mananwebdev160408 Jun 7, 2026
4f2beae
feat: implement administrative modal components, marketplace UI featu…
Mananwebdev160408 Jun 7, 2026
dea443c
fix(api): use authClient for token injection and redirect to /auth on…
Mananwebdev160408 Jun 7, 2026
e81aa24
Merge remote-tracking branch 'origin/main' into manan
Mananwebdev160408 Jun 13, 2026
cf5cd1c
feat: implement RBAC system with CASL and custom policy management mo…
Mananwebdev160408 Jun 16, 2026
3bc70d0
feat: implement protected routing with RoleGuard and introduce course…
Mananwebdev160408 Jun 16, 2026
de21475
Merge branch 'main' into manan
Mananwebdev160408 Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ if git diff --cached --name-only | grep -q "apps/server/src"; then
fi

npx lint-staged

Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
import React, { useState } from 'react';
import {
Button,
Input,
Label,
Textarea,
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@pec/ui';
import { EVENT_LABELS, CATEGORY_LABELS } from '@/features/academic-calendar/calendar-utils';
import { format } from 'date-fns';
import { CalendarEvent } from '../types';

export default function EventEditModal({
event,
isOpen,
onClose,
onSave,
}: {
event: CalendarEvent;
isOpen: boolean;
onClose: () => void;
onSave: (event: CalendarEvent) => void;
}) {
const [formData, setFormData] = useState<CalendarEvent>(event);

const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
onSave(formData);
};

if (!isOpen) return null;

return (
<div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4">
<div className="bg-background rounded-lg border max-w-2xl w-full max-h-[90vh] overflow-y-auto">
<div className="p-6 border-b">
<h2 className="text-xl font-semibold">Edit Event</h2>
</div>

<form onSubmit={handleSubmit} className="p-6 space-y-4">
<div>
<Label htmlFor="title">Title</Label>
<Input
id="title"
value={formData.title}
onChange={(e) => setFormData({ ...formData, title: e.target.value })}
required
/>
</div>

<div>
<Label htmlFor="description">Description</Label>
<Textarea
id="description"
value={formData.description}
onChange={(e) => setFormData({ ...formData, description: e.target.value })}
rows={3}
/>
</div>

<div className="grid grid-cols-2 gap-4">
<div>
<Label htmlFor="date">Date</Label>
<Input
id="date"
type="date"
value={formData.date ? format(new Date(formData.date), 'yyyy-MM-dd') : ''}
onChange={(e) =>
setFormData({ ...formData, date: new Date(e.target.value).toISOString() })
}
required
/>
</div>

<div>
<Label htmlFor="eventType">Event Type</Label>
<Select
value={formData.eventType}
onValueChange={(value) => setFormData({ ...formData, eventType: value })}
>
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
{Object.entries(EVENT_LABELS).map(([key, label]) => (
<SelectItem key={key} value={key}>
{label}
</SelectItem>
))}
</SelectContent>
</Select>
</div>
</div>

<div className="grid grid-cols-2 gap-4">
<div>
<Label htmlFor="startTime">Start Time</Label>
<Input
id="startTime"
type="time"
value={formData.startTime || ''}
onChange={(e) => setFormData({ ...formData, startTime: e.target.value })}
/>
</div>

<div>
<Label htmlFor="endTime">End Time</Label>
<Input
id="endTime"
type="time"
value={formData.endTime || ''}
onChange={(e) => setFormData({ ...formData, endTime: e.target.value })}
/>
</div>
</div>

<div className="grid grid-cols-2 gap-4">
<div>
<Label htmlFor="category">Category</Label>
<Select
value={formData.category}
onValueChange={(value) => setFormData({ ...formData, category: value })}
>
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
{Object.entries(CATEGORY_LABELS).map(([key, label]) => (
<SelectItem key={key} value={key}>
{label}
</SelectItem>
))}
</SelectContent>
</Select>
</div>

<div>
<Label htmlFor="importance">Importance</Label>
<Select
value={formData.importance}
onValueChange={(value) => setFormData({ ...formData, importance: value })}
>
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="high">High</SelectItem>
<SelectItem value="medium">Medium</SelectItem>
<SelectItem value="low">Low</SelectItem>
</SelectContent>
</Select>
</div>
</div>

<div>
<Label htmlFor="location">Location</Label>
<Input
id="location"
value={formData.location || ''}
onChange={(e) => setFormData({ ...formData, location: e.target.value })}
/>
</div>

<div>
<Label htmlFor="targetAudience">Target Audience</Label>
<Input
id="targetAudience"
value={formData.targetAudience || ''}
onChange={(e) => setFormData({ ...formData, targetAudience: e.target.value })}
placeholder="e.g., all, students, faculty"
/>
</div>

<div className="flex justify-end gap-3 pt-4">
<Button type="button" variant="outline" onClick={onClose}>
Cancel
</Button>
<Button type="submit">Save Changes</Button>
</div>
</form>
</div>
</div>
);
}
Loading
Loading