Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 24


- name: Create .env file and log variables
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
"@radix-ui/react-toggle": "^1.1.0",
"@radix-ui/react-toggle-group": "^1.1.0",
"@radix-ui/react-tooltip": "^1.1.4",
"@supabase/supabase-js": "^2.49.1",
"@supabase/ssr": "^0.12.4",
"@supabase/supabase-js": "^2.112.2",
"@tanstack/react-query": "^5.56.2",
"@tiptap/extension-image": "^2.11.5",
"@tiptap/extension-placeholder": "2.2.4",
Expand Down
52 changes: 30 additions & 22 deletions public/sitemap-0.xml
Original file line number Diff line number Diff line change
@@ -1,25 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://roboticspec.com</loc><lastmod>2025-08-28T11:04:18.075Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/activities</loc><lastmod>2025-08-28T11:04:18.077Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin</loc><lastmod>2025-08-28T11:04:18.077Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ActivitiesEditor</loc><lastmod>2025-08-28T11:04:18.077Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/BubbleMenu</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/EventsEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/FormatButton</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/HeroEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/MarkdownEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/MenuBar</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ProjectsEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ResourceEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/SelectSearch</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/TeamEditor</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/page</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/contact</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/events</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/events/components/EventCalendar</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/project</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/project/components/ProjectCard</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/resources</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/resources/components/ResourceCard</loc><lastmod>2025-08-28T11:04:18.078Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com</loc><lastmod>2026-08-10T09:07:57.626Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/activities</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ActivitiesEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/BlogsEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/BubbleMenu</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/EventsEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/FormatButton</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/HeroEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/MarkdownEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/MenuBar</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ProjectsEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/ResourceEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/Role</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/SelectSearch</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/TeamEditor</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/role/RoleAccordion</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/role/RolesPanel</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/role/UserRow</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/components/role/UsersPanel</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/admin/page</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/contact</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/events</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/events/components/EventCalendar</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/login</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/login/callback</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/project</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/project/components/ProjectCard</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/resources</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
<url><loc>https://roboticspec.com/resources/components/ResourceCard</loc><lastmod>2026-08-10T09:07:57.627Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
</urlset>
81 changes: 51 additions & 30 deletions src/components/Admin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,22 @@ import PageHead from "./layout/PageHead";
import PageSection from "./layout/PageSection";
import ResourceEditor from "@/pages/admin/components/ResourceEditor";
import BlogsEditor from "@/pages/admin/components/BlogsEditor";
import Role from "@/pages/admin/components/Role";

export enum TabValues {
HERO="hero",
PROJECTS="projects",
ACTIVITIES="activities",
EVENTS="events",
TEAM="team",
BLOGS = "blogs",
RESOURCES="resources",
ROLES="roles"

}

const Admin = () => {
const [activeTab, setActiveTab] = useState("hero");
const [activeTab, setActiveTab] = useState(TabValues.HERO);
return (
<>
<PageHead
Expand All @@ -36,80 +49,88 @@ const Admin = () => {
className="max-w-6xl mx-auto"
>

<Tabs defaultValue="hero" value={activeTab} onValueChange={setActiveTab} className="w-full mb-12">
<Tabs defaultValue={TabValues.HERO} value={activeTab} onValueChange={(value: unknown) => setActiveTab(value as TabValues)} className="w-full mb-12">
<div className="overflow-x-auto pb-2">
<TabsList className="mb-8">
<TabsTrigger value="hero" className="flex items-center gap-2">
<TabsTrigger value={TabValues.HERO} className="flex items-center gap-2">
<Home className="h-4 w-4" /> Hero Section
</TabsTrigger>
<TabsTrigger value="projects" className="flex items-center gap-2">
<TabsTrigger value={TabValues.PROJECTS} className="flex items-center gap-2">
<FileText className="h-4 w-4" /> Projects
</TabsTrigger>
<TabsTrigger value="activities" className="flex items-center gap-2">
<TabsTrigger value={TabValues.ACTIVITIES} className="flex items-center gap-2">
<FileText className="h-4 w-4" /> Activities
</TabsTrigger>
<TabsTrigger value="events" className="flex items-center gap-2">
<TabsTrigger value={TabValues.EVENTS} className="flex items-center gap-2">
<Calendar className="h-4 w-4" /> Events
</TabsTrigger>
<TabsTrigger value="team" className="flex items-center gap-2">
<TabsTrigger value={TabValues.TEAM} className="flex items-center gap-2">
<Users className="h-4 w-4" /> Team
</TabsTrigger>
<TabsTrigger value="blogs" className="flex items-center gap-2">
<TabsTrigger value={TabValues.BLOGS} className="flex items-center gap-2">
<Users className="h-4 w-4" /> Blogs
</TabsTrigger>
<TabsTrigger value="resources" className="flex items-center gap-2">
<TabsTrigger value={TabValues.RESOURCES} className="flex items-center gap-2">
<Book className="h-4 w-4" /> Resources
</TabsTrigger>
<TabsTrigger value={TabValues.ROLES} className="flex items-center gap-2">
<Book className="h-4 w-4" /> Roles
</TabsTrigger>
</TabsList>
</div>

<Card className="shadow-md">
<CardHeader>
<CardTitle>
{activeTab === "hero" && "Hero Section Editor"}
{activeTab === "projects" && "Projects Editor"}
{activeTab === "activities" && "Activities Editor"}
{activeTab === "events" && "Events Editor"}
{activeTab === "team" && "Team Members Editor"}
{activeTab === "blogs" && "Blogs Editor"}
{activeTab === "resources" && "Add Resources"}
{activeTab === TabValues.HERO && "Hero Section Editor"}
{activeTab === TabValues.PROJECTS && "Projects Editor"}
{activeTab === TabValues.ACTIVITIES && "Activities Editor"}
{activeTab === TabValues.EVENTS && "Events Editor"}
{activeTab === TabValues.TEAM && "Team Members Editor"}
{activeTab === TabValues.BLOGS && "Blogs Editor"}
{activeTab === TabValues.RESOURCES && "Add Resources"}
{activeTab === TabValues.ROLES && "Define Roles"}
</CardTitle>
<CardDescription>
{activeTab === "hero" && "Edit the main heading, text and background images"}
{activeTab === "projects" && "Add, edit or remove projects"}
{activeTab === "activities" && "Manage robotics activities and workshops"}
{activeTab === "events" && "Add or edit upcoming events and competitions"}
{activeTab === "team" && "Manage team members and their information"}
{activeTab === "blogs" && "Manage blog posts"}
{activeTab === "resources" && "Manage Resources and Links"}
{activeTab === TabValues.HERO && "Edit the main heading, text and background images"}
{activeTab === TabValues.PROJECTS && "Add, edit or remove projects"}
{activeTab === TabValues.ACTIVITIES && "Manage robotics activities and workshops"}
{activeTab === TabValues.EVENTS && "Add or edit upcoming events and competitions"}
{activeTab === TabValues.TEAM && "Manage team members and their information"}
{activeTab === TabValues.BLOGS && "Manage blog posts"}
{activeTab === TabValues.RESOURCES && "Manage Resources and Links"}
{activeTab === TabValues.ROLES && "Manage Roles for different society members"}
</CardDescription>
</CardHeader>
<CardContent>
<TabsContent value="hero" className="mt-0">
<TabsContent value={TabValues.HERO} className="mt-0">
<HeroEditor />
</TabsContent>

<TabsContent value="projects" className="mt-0">
<TabsContent value={TabValues.PROJECTS} className="mt-0">
<ProjectsEditor />
</TabsContent>

<TabsContent value="activities" className="mt-0">
<TabsContent value={TabValues.ACTIVITIES} className="mt-0">
<ActivitiesEditor />
</TabsContent>

<TabsContent value="events" className="mt-0">
<TabsContent value={TabValues.EVENTS} className="mt-0">
<EventsEditor />
</TabsContent>

<TabsContent value="team" className="mt-0">
<TabsContent value={TabValues.TEAM} className="mt-0">
<TeamEditor />
</TabsContent>
<TabsContent value="blogs" className="mt-0">
<TabsContent value={TabValues.BLOGS} className="mt-0">
<BlogsEditor />
</TabsContent>
<TabsContent value="resources" className="mt-0">
<TabsContent value={TabValues.RESOURCES} className="mt-0">
<ResourceEditor />
</TabsContent>
<TabsContent value={TabValues.ROLES} className="mt-0">
<Role />
</TabsContent>
</CardContent>
</Card>
</Tabs>
Expand Down
Loading
Loading