feat(toolkit): complete student toolkit with interactive guides, custom icons, and 3x2 grid layout
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# ─── DATABASE CONNECTION CONFIGURATION ───
|
||||
spring.datasource.url=jdbc:postgresql://localhost:5432/rit_freshers_hub?sslmode=disable
|
||||
spring.datasource.url=jdbc:postgresql://localhost:5433/rit_freshers_hub?sslmode=disable
|
||||
spring.datasource.username=postgres
|
||||
spring.datasource.password=${DB_PASSWORD:murugan06}
|
||||
spring.datasource.password=Anbukathir@#$2006
|
||||
|
||||
# ─── JPA / HIBERNATE SETTINGS ───
|
||||
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
|
||||
|
||||
34
package-lock.json
generated
34
package-lock.json
generated
@@ -50,29 +50,6 @@
|
||||
"vite": "^8.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/core": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
|
||||
"integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@emnapi/wasi-threads": "1.2.2",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/runtime": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
|
||||
"integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@emnapi/wasi-threads": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
|
||||
@@ -2316,6 +2293,7 @@
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.101.3.tgz",
|
||||
"integrity": "sha512-ZjgcRwmQUSCythDPj6pE2NKFi9bpQegxIBxgt3hPytXI1ElFHNaa3A7aWW8vFaLCIRjPv467rbREYHbxcdgQbg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@tanstack/query-core": "5.101.3"
|
||||
},
|
||||
@@ -2361,6 +2339,7 @@
|
||||
"integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~7.18.0"
|
||||
}
|
||||
@@ -2371,6 +2350,7 @@
|
||||
"integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"csstype": "^3.2.2"
|
||||
}
|
||||
@@ -2381,6 +2361,7 @@
|
||||
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@types/react": "^19.2.0"
|
||||
}
|
||||
@@ -2523,6 +2504,7 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"baseline-browser-mapping": "^2.10.42",
|
||||
"caniuse-lite": "^1.0.30001803",
|
||||
@@ -3424,6 +3406,7 @@
|
||||
"integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
@@ -3451,6 +3434,7 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.16",
|
||||
"picocolors": "^1.1.1",
|
||||
@@ -3481,6 +3465,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz",
|
||||
"integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@@ -3490,6 +3475,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz",
|
||||
"integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"scheduler": "^0.27.0"
|
||||
},
|
||||
@@ -3502,6 +3488,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.82.0.tgz",
|
||||
"integrity": "sha512-Zw/uFZ2dO+02GHlBn7JFGn8kZJ7LdM33B/0BXOovzFay+CMhf94JMw5BVu+F1tVkUKjNvBuaE3fz5BJhga10Tg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
@@ -3831,6 +3818,7 @@
|
||||
"integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"lightningcss": "^1.32.0",
|
||||
"picomatch": "^4.0.5",
|
||||
|
||||
@@ -887,14 +887,12 @@ export const CONFESSIONS_DATA: Confession[] = [
|
||||
|
||||
// ─── Toolkit Items ───────────────────────────────────────────────────────────
|
||||
export const TOOLKIT_ITEMS: ToolkitItem[] = [
|
||||
{ id: '1', title: 'Timetable 2025-26', description: 'Semester timetable for all departments', type: 'pdf', url: '#', icon: 'Clock', category: 'Academic' },
|
||||
{ id: '2', title: 'Academic Calendar', description: 'Important dates, holidays, and exams', type: 'pdf', url: '#', icon: 'CalendarDays', category: 'Academic' },
|
||||
{ id: '3', title: 'Fee Payment Form', description: 'Semester fee payment form', type: 'form', url: '#', icon: 'CreditCard', category: 'Administrative' },
|
||||
{ id: '4', title: 'Syllabus 2025', description: 'Updated syllabus for all semesters', type: 'pdf', url: '#', icon: 'BookMarked', category: 'Academic' },
|
||||
{ id: '5', title: 'Regulations 2021', description: 'Anna University regulations document', type: 'pdf', url: '#', icon: 'ScrollText', category: 'Regulatory' },
|
||||
{ id: '6', title: 'ERP Portal Guide', description: 'Step-by-step guide to use ERP system', type: 'pdf', url: '#', icon: 'Monitor', category: 'Guide' },
|
||||
{ id: '7', title: 'Leave Application', description: 'Student leave application form', type: 'form', url: '#', icon: 'FileCheck', category: 'Administrative' },
|
||||
{ id: '8', title: 'Bus Pass Form', description: 'Apply for monthly bus pass', type: 'form', url: '#', icon: 'Bus', category: 'Administrative' },
|
||||
{ id: '1', title: 'CS tools', description: 'Computer Science tools and resources', type: 'link', url: '#', icon: 'Code', category: 'Engineering' },
|
||||
{ id: '2', title: 'Business tools', description: 'Business systems and management resources', type: 'link', url: '#', icon: 'Briefcase', category: 'Engineering' },
|
||||
{ id: '3', title: 'Cybersecurity tools', description: 'Security and networking tools', type: 'link', url: '#', icon: 'Shield', category: 'Engineering' },
|
||||
{ id: '4', title: 'AI tools', description: 'Artificial Intelligence and Machine Learning resources', type: 'link', url: '#', icon: 'Brain', category: 'Engineering' },
|
||||
{ id: '5', title: 'Electrical and Electronic tools', description: 'Electrical and Electronics engineering tools', type: 'link', url: '#', icon: 'Cpu', category: 'Engineering' },
|
||||
{ id: '6', title: 'Biotech tools', description: 'Biotechnology tools and lab resources', type: 'link', url: '#', icon: 'FlaskConical', category: 'Engineering' },
|
||||
];
|
||||
|
||||
// ─── Campus Locations ────────────────────────────────────────────────────────
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Outlet } from 'react-router-dom';
|
||||
import { Outlet, useSearchParams, useLocation } from 'react-router-dom';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import Navbar from '@/components/Navbar/Navbar';
|
||||
import Footer from '@/components/Footer/Footer';
|
||||
|
||||
@@ -12,6 +11,8 @@ const pageVariants = {
|
||||
|
||||
export default function MainLayout() {
|
||||
const location = useLocation();
|
||||
const [searchParams] = useSearchParams();
|
||||
const hideFooter = location.pathname === '/notes' && searchParams.has('toolkit');
|
||||
|
||||
return (
|
||||
<div className="min-h-screen" style={{ backgroundColor: '#FAFAFA' }}>
|
||||
@@ -28,7 +29,7 @@ export default function MainLayout() {
|
||||
<Outlet />
|
||||
</motion.main>
|
||||
</AnimatePresence>
|
||||
<Footer />
|
||||
{!hideFooter && <Footer />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user