From 436e6a194d16ca7703ac3ddbc39417968f026275 Mon Sep 17 00:00:00 2001 From: Aman Raj <113578582+huamanraj@users.noreply.github.com> Date: Wed, 22 Oct 2025 03:41:18 +0530 Subject: [PATCH 1/4] created a new ui for the dashboard --- apps/web/package.json | 1 + .../src/app/(main)/dashboard/home/page.tsx | 2 +- apps/web/src/app/(main)/dashboard/layout.tsx | 32 +-- .../app/(main)/dashboard/projects/page.tsx | 11 +- apps/web/src/app/layout.tsx | 3 +- .../dashboard/DashboardContainer.tsx | 36 +-- .../dashboard/ProjectsContainer.tsx | 185 +++++++++------- apps/web/src/components/dashboard/Sidebar.tsx | 163 +++++++++++--- .../src/components/sidebar/SidebarItem.tsx | 31 ++- apps/web/src/components/ui/Filter.tsx | 24 +- .../src/components/ui/FiltersContainer.tsx | 30 ++- apps/web/src/store/useShowSidebar.ts | 5 + apps/web/src/utils/converter.ts | 2 +- pnpm-lock.yaml | 207 ++++++------------ 14 files changed, 412 insertions(+), 320 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 6666c4d..e8d863b 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -25,6 +25,7 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "framer-motion": "^11.15.0", + "geist": "^1.5.1", "lucide-react": "^0.456.0", "next": "15.5.3", "next-auth": "^4.24.11", diff --git a/apps/web/src/app/(main)/dashboard/home/page.tsx b/apps/web/src/app/(main)/dashboard/home/page.tsx index 671d0ec..a93919c 100644 --- a/apps/web/src/app/(main)/dashboard/home/page.tsx +++ b/apps/web/src/app/(main)/dashboard/home/page.tsx @@ -1,5 +1,5 @@ "use client"; - +import React from "react"; import { useProjectTitleStore } from "@/store/useProjectTitleStore"; import Dashboard from "../page"; import { useProjectsData } from "@/store/useProjectsDataStore"; diff --git a/apps/web/src/app/(main)/dashboard/layout.tsx b/apps/web/src/app/(main)/dashboard/layout.tsx index 8bb4abb..893a416 100644 --- a/apps/web/src/app/(main)/dashboard/layout.tsx +++ b/apps/web/src/app/(main)/dashboard/layout.tsx @@ -1,9 +1,10 @@ "use client"; -import { DashboardHeader } from "@/components/dashboard/DashboardHeader"; import Sidebar from "@/components/dashboard/Sidebar"; import FiltersContainer from "@/components/ui/FiltersContainer"; import { useFilterStore } from "@/store/useFilterStore"; import { useShowSidebar } from "@/store/useShowSidebar"; +import { IconWrapper } from "@/components/ui/IconWrapper"; +import { Bars3Icon } from "@heroicons/react/24/outline"; export default function DashboardLayout({ children, @@ -11,20 +12,23 @@ export default function DashboardLayout({ children: React.ReactNode; }) { const { showFilters } = useFilterStore(); - const { showSidebar } = useShowSidebar(); + const { showSidebar, setShowSidebar } = useShowSidebar(); return ( -
-
- -
-
- {showFilters && } - -
{children}
+
+ {showFilters && } + +
+
+ setShowSidebar(true)}> + + +

Opensox

+
+
+ {children} +
); diff --git a/apps/web/src/app/(main)/dashboard/projects/page.tsx b/apps/web/src/app/(main)/dashboard/projects/page.tsx index 8c7c023..3472f8a 100644 --- a/apps/web/src/app/(main)/dashboard/projects/page.tsx +++ b/apps/web/src/app/(main)/dashboard/projects/page.tsx @@ -4,17 +4,20 @@ import { useRenderProjects } from "@/store/useRenderProjectsStore"; import Dashboard from "../page"; import { useEffect } from "react"; import { useProjectTitleStore } from "@/store/useProjectTitleStore"; +import { useProjectsData } from "@/store/useProjectsDataStore"; const Projects = () => { const { setRenderProjects } = useRenderProjects(); const { setProjectTitle } = useProjectTitleStore(); + const { setData } = useProjectsData(); useEffect(() => { - setRenderProjects(false); - setProjectTitle("Projects of the week"); - }, [setRenderProjects, setProjectTitle]); + setRenderProjects(true); // Change to true to always render the container + setProjectTitle("Projects"); + setData([]); // Clear any existing projects + }, [setRenderProjects, setProjectTitle, setData]); - return ; + return ; }; export default Projects; diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index bdba95f..7d41b87 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -10,6 +10,7 @@ import { authConfig } from "@/lib/auth/config"; import { SessionWrapper } from "./SessionWrapper"; import SupportDropdown from "@/components/landing-sections/SupportDropdown"; import { TRPCProvider } from "@/providers/trpc-provider"; +import { GeistSans } from "geist/font/sans"; const dmReg = localFont({ src: "./fonts/DMMono-Regular.ttf", @@ -39,7 +40,7 @@ export default async function RootLayout({ return ( -
- {renderProjects && ( +
+
+ {renderProjects && !loading && ( )} {loading && ( - - )} - {projectsNotFound && ( - +
+ +
)} - {!renderProjects && !loading && ( - + {projectsNotFound && !loading && ( +
+ +
)}
diff --git a/apps/web/src/components/dashboard/ProjectsContainer.tsx b/apps/web/src/components/dashboard/ProjectsContainer.tsx index 172d554..65003a5 100644 --- a/apps/web/src/components/dashboard/ProjectsContainer.tsx +++ b/apps/web/src/components/dashboard/ProjectsContainer.tsx @@ -1,6 +1,7 @@ "use client"; import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { Table, TableBody, @@ -12,6 +13,9 @@ import { import { useProjectTitleStore } from "@/store/useProjectTitleStore"; import { DashboardProjectsProps } from "@/types"; import Image from "next/image"; +import { useFilterStore } from "@/store/useFilterStore"; +import { usePathname } from "next/navigation"; +import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; type ProjectsContainerProps = { projects: DashboardProjectsProps[]; @@ -62,95 +66,122 @@ const getColor = (color: string): string => { return _color; }; +const tableColumns = [ + "Project", + "Issues", + "Language", + "Popularity", + "Stage", + "Competition", + "Activity", +]; + export default function ProjectsContainer({ projects, }: ProjectsContainerProps) { + const pathname = usePathname(); + const { projectTitle } = useProjectTitleStore(); + const { setShowFilters } = useFilterStore(); + const handleClick = (link: string) => { window.open(link, "_blank"); }; - const { projectTitle } = useProjectTitleStore(); - const tableColums = [ - "Project", - "Issues", - "Language", - "Popularity", - "Stage", - "Competition", - "Activity", - ]; + + const isProjectsPage = pathname === "/dashboard/projects"; + return ( -
-
-

+
+
+

{projectTitle}

+ {isProjectsPage && ( + + )}
-
- - - - {tableColums.map((name, index) => ( - - {name} - - ))} - - - - {projects.map((project) => ( - { - handleClick(project.url); - }} - > - -
- -
- - {project.name} - -
- - {project.totalIssueCount} - - - 0 ? ( +
+
+ + + {tableColumns.map((name, index) => ( + - {project.primaryLanguage} - - - - {project.popularity} - - - {project.stage} - - - {project.competition} - - - {project.activity} - + {name} + + ))} - ))} - -
-
+ + + {projects.map((project) => ( + { + handleClick(project.url); + }} + > + +
+ {project.name} +
+ + {project.name} + +
+ + {project.totalIssueCount} + + + + {project.primaryLanguage} + + + + {project.popularity} + + + {project.stage} + + + {project.competition} + + + {project.activity} + +
+ ))} +
+ +
+ ) : isProjectsPage ? ( +
+
+ +

Find Your Next Project

+
+

+ Click the 'Find projects' button above to discover open + source projects that match your interests +

+
+ ) : null}

); } diff --git a/apps/web/src/components/dashboard/Sidebar.tsx b/apps/web/src/components/dashboard/Sidebar.tsx index 2e4ab76..d5998ec 100644 --- a/apps/web/src/components/dashboard/Sidebar.tsx +++ b/apps/web/src/components/dashboard/Sidebar.tsx @@ -1,21 +1,39 @@ "use client"; +import React, { useState } from "react"; import Link from "next/link"; import SidebarItem from "../sidebar/SidebarItem"; import { usePathname } from "next/navigation"; import { IconWrapper } from "../ui/IconWrapper"; -import { XMarkIcon } from "@heroicons/react/24/outline"; +import { + XMarkIcon, + HomeIcon, + FolderIcon, + ArrowLeftOnRectangleIcon, + ChevronDoubleLeftIcon, + ChevronDoubleRightIcon, + MagnifyingGlassIcon, + SparklesIcon, + StarIcon, + HeartIcon, + EnvelopeIcon, +} from "@heroicons/react/24/outline"; import { useShowSidebar } from "@/store/useShowSidebar"; import { signOut } from "next-auth/react"; +import { Twitter } from "../icons/icons"; +import { ProfilePic } from "./ProfilePic"; +import { useFilterStore } from "@/store/useFilterStore"; const SIDEBAR_ROUTES = [ { path: "/dashboard/home", label: "Home", + icon: , }, { path: "/dashboard/projects", label: "Projects", + icon: , }, ]; @@ -25,8 +43,9 @@ const getSidebarLinkClassName = (currentPath: string, routePath: string) => { }; export default function Sidebar() { - const { showSidebar, setShowSidebar } = useShowSidebar(); + const { showSidebar, setShowSidebar, isCollapsed, toggleCollapsed } = useShowSidebar(); const pathname = usePathname(); + const { setShowFilters } = useFilterStore(); const reqFeatureHandler = () => { window.open("https://discord.gg/37ke8rYnRM", "_blank"); @@ -51,63 +70,149 @@ export default function Sidebar() { }; const handleLogout = () => { - signOut({callbackUrl: "/"}); - } + signOut({ callbackUrl: "/" }); + }; + + const handleFindProjects = () => { + setShowFilters(true); + }; return (
-
-
-

Opensox

-
-
- setShowSidebar(false)}> - - + {/* Mobile header */} +
+
+

Opensox

+ setShowSidebar(false)}> + +
-
+ {/* Desktop header with collapse */} +
+ {!isCollapsed && ( + + Opensox + + )} + + {isCollapsed ? ( + + ) : ( + + )} + +
+ +
+ {/* Find projects entry */} + {SIDEBAR_ROUTES.map((route) => { + const activeClass = getSidebarLinkClassName(pathname, route.path); return ( - - + + ); })} + } + collapsed={isCollapsed} + /> + icon={} + collapsed={isCollapsed} + /> + icon={} + collapsed={isCollapsed} + /> + icon={} + collapsed={isCollapsed} + /> - + icon={} + collapsed={isCollapsed} + /> { window.open("https://x.com/ajeetunc", "_blank"); }} - > + icon={ + + + + } + collapsed={isCollapsed} + />
+ + {/* Bottom profile */} + +
+ ); +} + +function ProfileMenu({ isCollapsed }: { isCollapsed: boolean }) { + const [open, setOpen] = useState(false); + return ( +
+
setOpen((s) => !s)} + > + + {!isCollapsed && ( +
+
+ Ajeet + hi@opensox.ai +
+ +
+ )} +
+ {/* Expandable menu */} + {!isCollapsed && open && ( +
+ signOut({ callbackUrl: "/" })} + icon={} + collapsed={false} + /> +
+ )}
); } diff --git a/apps/web/src/components/sidebar/SidebarItem.tsx b/apps/web/src/components/sidebar/SidebarItem.tsx index 656a6e0..5bd2742 100644 --- a/apps/web/src/components/sidebar/SidebarItem.tsx +++ b/apps/web/src/components/sidebar/SidebarItem.tsx @@ -1,9 +1,28 @@ "use client" -export default function SidebarItem({itemName, onclick}: {itemName: string, onclick?: () => void}) { - return ( -
-

{itemName}

-
- ) +import React from "react"; + +type SidebarItemProps = { + itemName: string; + onclick?: () => void; + icon?: React.ReactNode; + collapsed?: boolean; +}; + +export default function SidebarItem({ itemName, onclick, icon, collapsed = false }: SidebarItemProps) { + return ( +
+ {icon && {icon}} + {!collapsed && ( +

+ {itemName} +

+ )} +
+ ); } \ No newline at end of file diff --git a/apps/web/src/components/ui/Filter.tsx b/apps/web/src/components/ui/Filter.tsx index 5c1340b..bd0ab0a 100644 --- a/apps/web/src/components/ui/Filter.tsx +++ b/apps/web/src/components/ui/Filter.tsx @@ -30,32 +30,24 @@ export default function Filter({ return (
- + - {filterName} + {filterName} - - + + {filters.map((filter) => ( -
+
{ - recordFilterInput(filter); - }} + onClick={() => recordFilterInput(filter)} + className="border-[#1a1a1d] text-ox-purple" /> diff --git a/apps/web/src/components/ui/FiltersContainer.tsx b/apps/web/src/components/ui/FiltersContainer.tsx index 9eb79e3..84c92fe 100644 --- a/apps/web/src/components/ui/FiltersContainer.tsx +++ b/apps/web/src/components/ui/FiltersContainer.tsx @@ -57,24 +57,29 @@ export default function FiltersContainer() { }; return ( -
+
+ {/* Backdrop */}
toggleShowFilters()} /> -
-
-

Filters

- + + {/* Filter Panel */} +
+ {/* Header */} +
+

Filters

+ toggleShowFilters()} />
-
- + {/* Filter Content */} +
+
-
+ {/* Footer */} +
diff --git a/apps/web/src/store/useShowSidebar.ts b/apps/web/src/store/useShowSidebar.ts index 622996a..04a4b0a 100644 --- a/apps/web/src/store/useShowSidebar.ts +++ b/apps/web/src/store/useShowSidebar.ts @@ -3,9 +3,14 @@ import { create } from "zustand"; interface showSidebarProps { showSidebar: boolean; setShowSidebar: (value: boolean) => void; + isCollapsed: boolean; + toggleCollapsed: () => void; } export const useShowSidebar = create((set) => ({ showSidebar: false, setShowSidebar: (value) => set({ showSidebar: value }), + isCollapsed: false, + toggleCollapsed: () => + set((state) => ({ isCollapsed: !state.isCollapsed })), })); diff --git a/apps/web/src/utils/converter.ts b/apps/web/src/utils/converter.ts index dbe8f4f..53a5c79 100644 --- a/apps/web/src/utils/converter.ts +++ b/apps/web/src/utils/converter.ts @@ -148,7 +148,7 @@ export const convertApiOutputToUserOutput = ( url: item.url, avatarUrl: item.owner.avatarUrl, totalIssueCount: item.issues.totalCount, - primaryLanguage: item.primaryLanguage.name, + primaryLanguage: item.primaryLanguage?.name || "Other", popularity: filters.Popularity ? filters.Popularity : "-", stage: filters.Stage ? filters.Stage : "-", competition: filters.Competition ? filters.Competition : "-", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d890ba4..564aeec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -76,61 +76,6 @@ importers: specifier: ^5.9.2 version: 5.9.2 - apps/backend: - dependencies: - '@octokit/graphql': - specifier: ^9.0.1 - version: 9.0.1 - '@prisma/client': - specifier: ^5.10.2 - version: 5.22.0(prisma@5.22.0) - cors: - specifier: ^2.8.5 - version: 2.8.5 - dotenv: - specifier: ^16.4.5 - version: 16.5.0 - express: - specifier: ^4.18.3 - version: 4.21.2 - express-rate-limit: - specifier: ^7.1.5 - version: 7.5.0(express@4.21.2) - helmet: - specifier: ^7.1.0 - version: 7.2.0 - jsonwebtoken: - specifier: ^9.0.2 - version: 9.0.2 - devDependencies: - '@types/cors': - specifier: ^2.8.17 - version: 2.8.19 - '@types/express': - specifier: ^4.17.21 - version: 4.17.23 - '@types/jsonwebtoken': - specifier: ^9.0.5 - version: 9.0.9 - '@types/node': - specifier: ^20.11.24 - version: 20.19.0 - depcheck: - specifier: ^1.4.7 - version: 1.4.7 - nodemon: - specifier: ^3.1.10 - version: 3.1.10 - prisma: - specifier: ^5.10.2 - version: 5.22.0 - tsx: - specifier: ^4.20.3 - version: 4.20.3 - typescript: - specifier: ^5.3.3 - version: 5.9.2 - apps/docs: dependencies: '@repo/ui': @@ -221,6 +166,9 @@ importers: framer-motion: specifier: ^11.15.0 version: 11.18.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + geist: + specifier: ^1.5.1 + version: 1.5.1(next@15.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) lucide-react: specifier: ^0.456.0 version: 0.456.0(react@18.3.1) @@ -2803,6 +2751,11 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + geist@1.5.1: + resolution: {integrity: sha512-mAHZxIsL2o3ZITFaBVFBnwyDOw+zNLYum6A6nIjpzCGIO8QtC3V76XF2RnZTyLx1wlDTmMDy8jg3Ib52MIjGvQ==} + peerDependencies: + next: '>=13.2.0' + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2973,9 +2926,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3564,11 +3514,6 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nodemon@3.1.10: - resolution: {integrity: sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==} - engines: {node: '>=10'} - hasBin: true - normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -3880,9 +3825,6 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -4136,10 +4078,6 @@ packages: simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4376,10 +4314,6 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - touch@3.1.1: - resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} - hasBin: true - ts-api-utils@1.4.3: resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} @@ -4522,9 +4456,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -4732,7 +4663,7 @@ snapshots: '@babel/traverse': 7.28.0 '@babel/types': 7.28.2 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4827,7 +4758,7 @@ snapshots: '@babel/parser': 7.27.5 '@babel/template': 7.27.2 '@babel/types': 7.27.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4840,7 +4771,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -4964,7 +4895,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -4984,7 +4915,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -5685,7 +5616,7 @@ snapshots: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -5738,7 +5669,7 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 optionalDependencies: typescript: 5.9.2 @@ -5751,7 +5682,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 optionalDependencies: typescript: 5.9.2 @@ -5764,7 +5695,7 @@ snapshots: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 optionalDependencies: typescript: 5.9.2 @@ -5777,7 +5708,7 @@ snapshots: '@typescript-eslint/types': 8.34.0 '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.34.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 typescript: 5.9.2 transitivePeerDependencies: @@ -5787,7 +5718,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.9.2) '@typescript-eslint/types': 8.34.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -5825,7 +5756,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.2) '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.2) optionalDependencies: @@ -5837,7 +5768,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.2) '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.9.2) optionalDependencies: @@ -5849,7 +5780,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.34.0(typescript@5.9.2) '@typescript-eslint/utils': 8.34.0(eslint@8.57.1)(typescript@5.9.2) - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -5870,7 +5801,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 semver: 7.7.2 @@ -5884,7 +5815,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -5899,7 +5830,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -5914,7 +5845,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -5931,7 +5862,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.34.0(typescript@5.9.2) '@typescript-eslint/types': 8.34.0 '@typescript-eslint/visitor-keys': 8.34.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -6600,11 +6531,9 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.1(supports-color@5.5.0): + debug@4.4.1: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 deep-extend@0.6.0: {} @@ -6651,7 +6580,7 @@ snapshots: callsite: 1.0.0 camelcase: 6.3.0 cosmiconfig: 7.1.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 deps-regex: 0.2.0 findup-sync: 5.0.0 ignore: 5.3.2 @@ -6897,7 +6826,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -6916,7 +6845,7 @@ snapshots: '@typescript-eslint/parser': 8.34.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.5(eslint@8.57.1) @@ -6950,10 +6879,25 @@ snapshots: transitivePeerDependencies: - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.1 + eslint: 8.57.1 + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.14 + unrs-resolver: 1.9.0 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -6961,14 +6905,14 @@ snapshots: tinyglobby: 0.2.14 unrs-resolver: 1.9.0 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 eslint: 8.57.1 get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -6976,7 +6920,7 @@ snapshots: tinyglobby: 0.2.14 unrs-resolver: 1.9.0 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -7001,14 +6945,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.34.0(eslint@8.57.1)(typescript@5.9.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -7047,7 +6991,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7087,7 +7031,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7243,7 +7187,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7490,6 +7434,10 @@ snapshots: functions-have-names@1.2.3: {} + geist@1.5.1(next@15.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + dependencies: + next: 15.5.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -7528,7 +7476,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -7681,14 +7629,14 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -7700,8 +7648,6 @@ snapshots: ieee754@1.2.1: {} - ignore-by-default@1.0.1: {} - ignore@5.3.2: {} ignore@7.0.5: {} @@ -8287,19 +8233,6 @@ snapshots: node-releases@2.0.19: {} - nodemon@3.1.10: - dependencies: - chokidar: 3.6.0 - debug: 4.4.1(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.7.2 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.1 - undefsafe: 2.0.5 - normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -8448,7 +8381,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -8618,7 +8551,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -8630,8 +8563,6 @@ snapshots: proxy-from-env@1.1.0: {} - pstree.remy@1.1.8: {} - punycode@2.3.1: {} qr.js@0.0.0: {} @@ -8967,10 +8898,6 @@ snapshots: is-arrayish: 0.3.4 optional: true - simple-update-notifier@2.0.0: - dependencies: - semver: 7.7.2 - slash@3.0.0: {} smart-buffer@4.2.0: {} @@ -8982,7 +8909,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.1 socks: 2.8.6 transitivePeerDependencies: - supports-color @@ -9240,8 +9167,6 @@ snapshots: toidentifier@1.0.1: {} - touch@3.1.1: {} - ts-api-utils@1.4.3(typescript@5.9.2): dependencies: typescript: 5.9.2 @@ -9384,8 +9309,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undefsafe@2.0.5: {} - undici-types@6.21.0: {} undici-types@7.12.0: {} From 0c3eb08ec11de73e1a300931e3da35fb13305e72 Mon Sep 17 00:00:00 2001 From: Aman Raj <113578582+huamanraj@users.noreply.github.com> Date: Sat, 1 Nov 2025 18:34:11 +0530 Subject: [PATCH 2/4] fix: proejct header sticky --- .../dashboard/ProjectsContainer.tsx | 136 +++++++++--------- apps/web/src/components/ui/Filter.tsx | 6 +- 2 files changed, 67 insertions(+), 75 deletions(-) diff --git a/apps/web/src/components/dashboard/ProjectsContainer.tsx b/apps/web/src/components/dashboard/ProjectsContainer.tsx index 65003a5..4f017ff 100644 --- a/apps/web/src/components/dashboard/ProjectsContainer.tsx +++ b/apps/web/src/components/dashboard/ProjectsContainer.tsx @@ -17,31 +17,9 @@ import { useFilterStore } from "@/store/useFilterStore"; import { usePathname } from "next/navigation"; import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; -type ProjectsContainerProps = { - projects: DashboardProjectsProps[]; -}; - -interface languageColorsTypes { - [key: string]: string; - javascript: string; - typescript: string; - python: string; - go: string; - rust: string; - java: string; - "c#": string; - "c++": string; - c: string; - php: string; - swift: string; - kotlin: string; - ruby: string; - scala: string; - html: string; - elixir: string; -} +type ProjectsContainerProps = { projects: DashboardProjectsProps[] }; -const languageColors: languageColorsTypes = { +const languageColors: Record = { javascript: "bg-yellow-500/15 text-yellow-500", typescript: "bg-blue-500/15 text-blue-500", python: "bg-emerald-500/15 text-emerald-500", @@ -60,11 +38,8 @@ const languageColors: languageColorsTypes = { elixir: "bg-purple-600/15 text-purple-600", }; -const getColor = (color: string): string => { - const lowerColorCase = color.toLowerCase(); - const _color = languageColors[lowerColorCase] || "bg-gray-200 text-gray-800"; - return _color; -}; +const getColor = (c?: string) => + languageColors[(c || "").toLowerCase()] || "bg-gray-200/10 text-gray-300"; const tableColumns = [ "Project", @@ -82,15 +57,10 @@ export default function ProjectsContainer({ const pathname = usePathname(); const { projectTitle } = useProjectTitleStore(); const { setShowFilters } = useFilterStore(); - - const handleClick = (link: string) => { - window.open(link, "_blank"); - }; - const isProjectsPage = pathname === "/dashboard/projects"; return ( -
+

{projectTitle} @@ -104,66 +74,88 @@ export default function ProjectsContainer({ )}

+ {projects && projects.length > 0 ? ( -
- - - - {tableColumns.map((name, index) => ( +
+
+ {/* Sticky header row */} + + + {tableColumns.map((name, i) => ( {name} ))} + - {projects.map((project) => ( + {projects.map((p) => ( { - handleClick(project.url); - }} + key={p.id} + className="border-y border-ox-gray cursor-pointer hover:bg-white/5 transition-colors" + onClick={() => window.open(p.url, "_blank")} > - -
- + +
+
+ +
+ + {p.name} +
- - {project.name} -
- - {project.totalIssueCount} + + + {p.totalIssueCount} + - {project.primaryLanguage} + {p.primaryLanguage} - - {project.popularity} + + + {p.popularity} - - {project.stage} + + {p.stage} - - {project.competition} + + {p.competition} - - {project.activity} + + {p.activity} ))} diff --git a/apps/web/src/components/ui/Filter.tsx b/apps/web/src/components/ui/Filter.tsx index bd0ab0a..b091b81 100644 --- a/apps/web/src/components/ui/Filter.tsx +++ b/apps/web/src/components/ui/Filter.tsx @@ -23,7 +23,7 @@ export default function Filter({ }; const triggerClasses = clsx("text-sm font-medium", { - "text-slate-500": ["Hire contributors", "Funding", "Trending"].includes( + "text-slate-300": ["Hire contributors", "Funding", "Trending"].includes( filterName ), }); @@ -42,12 +42,12 @@ export default function Filter({ value={filter} id={filter} onClick={() => recordFilterInput(filter)} - className="border-[#1a1a1d] text-ox-purple" + className="border-[#28282c] bg-[#141418] text-ox-purple transition data-[state=checked]:border-ox-purple data-[state=checked]:bg-ox-purple/20 data-[state=checked]:ring-2 data-[state=checked]:ring-ox-purple/50" /> From fd396a941e23acb77631b6df8559468e07440816 Mon Sep 17 00:00:00 2001 From: Aman Raj <113578582+huamanraj@users.noreply.github.com> Date: Sat, 1 Nov 2025 18:35:23 +0530 Subject: [PATCH 3/4] fix: table hover --- apps/web/src/components/dashboard/ProjectsContainer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/dashboard/ProjectsContainer.tsx b/apps/web/src/components/dashboard/ProjectsContainer.tsx index 4f017ff..be00403 100644 --- a/apps/web/src/components/dashboard/ProjectsContainer.tsx +++ b/apps/web/src/components/dashboard/ProjectsContainer.tsx @@ -80,8 +80,8 @@ export default function ProjectsContainer({ className=" w-full bg-[#15161a] border border-[#1a1a1d] rounded-lg h-[80vh] overflow-y-auto overflow-x-auto relative - [&::-webkit-scrollbar]:w-1 - [&::-webkit-scrollbar]:hover:w-2 + [&::-webkit-scrollbar]:w-2 + [&::-webkit-scrollbar]:h-1 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-ox-purple/30 From e381661900807d7c48b9b2ece0b3b5a72b79a114 Mon Sep 17 00:00:00 2001 From: apsinghdev Date: Sun, 9 Nov 2025 21:02:39 +0530 Subject: [PATCH 4/4] chore: kyu ni ho rhi typo free coding? --- .../src/app/(main)/dashboard/home/page.tsx | 2 +- apps/web/src/components/dashboard/Sidebar.tsx | 21 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/apps/web/src/app/(main)/dashboard/home/page.tsx b/apps/web/src/app/(main)/dashboard/home/page.tsx index a93919c..9e160ca 100644 --- a/apps/web/src/app/(main)/dashboard/home/page.tsx +++ b/apps/web/src/app/(main)/dashboard/home/page.tsx @@ -16,7 +16,7 @@ const Home = () => { const initializeState = () => { setData(projectsOfTheWeek); setRenderProjects(true); - setProjectTitle("Projects of the week"); + setProjectTitle("Featured projects"); }; initializeState(); diff --git a/apps/web/src/components/dashboard/Sidebar.tsx b/apps/web/src/components/dashboard/Sidebar.tsx index 28cefb5..eabb046 100644 --- a/apps/web/src/components/dashboard/Sidebar.tsx +++ b/apps/web/src/components/dashboard/Sidebar.tsx @@ -9,7 +9,7 @@ import { XMarkIcon, HomeIcon, FolderIcon, - ArrowLeftOnRectangleIcon, + ArrowRightOnRectangleIcon, ChevronDoubleLeftIcon, ChevronDoubleRightIcon, MagnifyingGlassIcon, @@ -43,7 +43,8 @@ const getSidebarLinkClassName = (currentPath: string, routePath: string) => { }; export default function Sidebar() { - const { showSidebar, setShowSidebar, isCollapsed, toggleCollapsed } = useShowSidebar(); + const { showSidebar, setShowSidebar, isCollapsed, toggleCollapsed } = + useShowSidebar(); const pathname = usePathname(); const { setShowFilters } = useFilterStore(); @@ -69,10 +70,6 @@ export default function Sidebar() { window.open(mailtoLink, "_blank"); }; - const handleLogout = () => { - signOut({ callbackUrl: "/" }); - }; - const handleFindProjects = () => { setShowFilters(true); }; @@ -88,7 +85,7 @@ export default function Sidebar() { {/* Mobile header */}
-

Opensox

+

Opensox AI

setShowSidebar(false)}> @@ -99,7 +96,7 @@ export default function Sidebar() {
{!isCollapsed && ( - Opensox + Opensox AI )} } collapsed={isCollapsed} /> @@ -193,7 +190,9 @@ function ProfileMenu({ isCollapsed }: { isCollapsed: boolean }) { {!isCollapsed && (
- Ajeet + + Ajeet + hi@opensox.ai
signOut({ callbackUrl: "/" })} - icon={} + icon={} collapsed={false} />