feat: redesign powerby

This commit is contained in:
2026-03-10 17:11:56 +05:30
parent c65fb255f9
commit 53d9b9cb81
13 changed files with 52 additions and 53 deletions

View File

@@ -11,6 +11,7 @@ import { Loader2, CheckCircle2, MapPin, Navigation, Milestone } from "lucide-rea
import { SidebarNavigation } from "@/components/sidebar-navigation" import { SidebarNavigation } from "@/components/sidebar-navigation"
import { DataTable } from "@/components/data-table" import { DataTable } from "@/components/data-table"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { PoweredBy } from "@/components/powered-by"
import { import {
fetchProjects, fetchProjects,
fetchPackagesByProject, fetchPackagesByProject,
@@ -341,12 +342,7 @@ export default function CreateLocationPage() {
/> />
</div> </div>
{/* Footer */} <PoweredBy />
<div className="mt-8 text-center">
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>

View File

@@ -23,6 +23,7 @@ import {
type PackageUpdate type PackageUpdate
} from "@/lib/api" } from "@/lib/api"
import { toast } from "sonner" import { toast } from "sonner"
import { PoweredBy } from "@/components/powered-by"
export default function CreatePackagePage() { export default function CreatePackagePage() {
const [packages, setPackages] = useState<PackageType[]>([]) const [packages, setPackages] = useState<PackageType[]>([])
@@ -245,12 +246,7 @@ export default function CreatePackagePage() {
/> />
</div> </div>
{/* Footer */} <PoweredBy />
<div className="mt-8 text-center">
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>

View File

@@ -12,6 +12,7 @@ import { DataTable } from "@/components/data-table"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { createProject, fetchProjects, updateProject, deleteProject, type ProjectCreate, type Project, type ProjectUpdate } from "@/lib/api" import { createProject, fetchProjects, updateProject, deleteProject, type ProjectCreate, type Project, type ProjectUpdate } from "@/lib/api"
import { toast } from "sonner" import { toast } from "sonner"
import { PoweredBy } from "@/components/powered-by"
export default function CreateProjectPage() { export default function CreateProjectPage() {
const [projects, setProjects] = useState<Project[]>([]) const [projects, setProjects] = useState<Project[]>([])
@@ -226,12 +227,7 @@ export default function CreateProjectPage() {
/> />
</div> </div>
{/* Footer */} <PoweredBy />
<div className="mt-8 text-center">
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>
@@ -393,7 +389,7 @@ export default function CreateProjectPage() {
<Button <Button
type="submit" type="submit"
disabled={isSubmitting || !name.trim()} disabled={isSubmitting || !name.trim()}
className="flex-1 bg-gradient-to-r from-blue-500 via-indigo-500 to-blue-700 hover:bg-blue-600 text-white" className="flex-1 bg-linear-to-r from-blue-500 via-indigo-500 to-blue-700 hover:bg-blue-600 text-white"
> >
{isSubmitting ? ( {isSubmitting ? (
<span className="flex items-center gap-2"> <span className="flex items-center gap-2">

View File

@@ -29,6 +29,7 @@ import {
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Filter } from "lucide-react"; import { Filter } from "lucide-react";
import { DashboardSkeleton } from "@/components/dashboard/dashboard-skeleton" import { DashboardSkeleton } from "@/components/dashboard/dashboard-skeleton"
import { PoweredBy } from "@/components/powered-by";
const API_URL = process.env.NEXT_PUBLIC_API_URL; const API_URL = process.env.NEXT_PUBLIC_API_URL;
@@ -609,12 +610,7 @@ export default function DashboardPage() {
</> </>
)} )}
{/* Footer */} <PoweredBy />
<div className="mt-8 text-center">
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>
</div> </div>

View File

@@ -211,6 +211,9 @@ body[data-scroll-locked] {
.heading-blue-gradient { .heading-blue-gradient {
@apply bg-linear-to-r from-blue-400 to-blue-600 bg-clip-text text-transparent; @apply bg-linear-to-r from-blue-400 to-blue-600 bg-clip-text text-transparent;
} }
.powered-blue-gradient {
@apply bg-linear-to-b from-[#225999] to-[#56A5FF] bg-clip-text text-transparent;
}
.btn-blue-gradient { .btn-blue-gradient {
@apply text-white bg-linear-to-r from-blue-400 to-blue-600 hover:bg-linear-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium transition-all duration-200; @apply text-white bg-linear-to-r from-blue-400 to-blue-600 hover:bg-linear-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium transition-all duration-200;

View File

@@ -2,6 +2,7 @@
import { NavigationMenu } from "@/components/navigation-menu" import { NavigationMenu } from "@/components/navigation-menu"
import { DashboardMap } from "@/components/dashboard/dashboard-map" import { DashboardMap } from "@/components/dashboard/dashboard-map"
import { PoweredBy } from "@/components/powered-by"
export default function MapPage() { export default function MapPage() {
return ( return (
@@ -41,12 +42,7 @@ export default function MapPage() {
</div> </div>
</div> </div>
{/* Footer */} <PoweredBy />
<div className="mt-8 text-center">
<p className="text-sm text-muted-foreground">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</div> </div>
) )

View File

@@ -6,6 +6,7 @@ import { SidebarNavigation } from "@/components/sidebar-navigation"
import { type SessionContext, saveSession } from "@/lib/api" import { type SessionContext, saveSession } from "@/lib/api"
import { TrendingUp } from "lucide-react" import { TrendingUp } from "lucide-react"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { PoweredBy } from "@/components/powered-by"
const ProjectSelectionSection = dynamic( const ProjectSelectionSection = dynamic(
() => import("@/components/project-selection-section").then(mod => mod.ProjectSelectionSection), () => import("@/components/project-selection-section").then(mod => mod.ProjectSelectionSection),
@@ -44,12 +45,7 @@ export default function NewAnalysisPage() {
<ProjectSelectionSection onSelectionComplete={handleSelectionComplete} /> <ProjectSelectionSection onSelectionComplete={handleSelectionComplete} />
</div> </div>
{/* Footer */} <PoweredBy />
<div className="mt-12 text-center">
<p className="text-sm text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>
</div> </div>

View File

@@ -7,6 +7,7 @@ import { Loader2, TrendingUp } from "lucide-react"
import VideoPlayerSection from "@/components/video-player-section" import VideoPlayerSection from "@/components/video-player-section"
import { SidebarNavigation } from "@/components/sidebar-navigation" import { SidebarNavigation } from "@/components/sidebar-navigation"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { PoweredBy } from "@/components/powered-by"
import { import {
type SessionContext, type SessionContext,
loadSession, loadSession,
@@ -167,6 +168,7 @@ export default function VideoResultsPage() {
projectId={session?.projectId || undefined} projectId={session?.projectId || undefined}
/> />
)} )}
<PoweredBy />
</div> </div>
</main> </main>
</div> </div>

View File

@@ -6,6 +6,7 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/com
import { Loader2, TrendingUp } from "lucide-react" import { Loader2, TrendingUp } from "lucide-react"
import { SidebarNavigation } from "@/components/sidebar-navigation" import { SidebarNavigation } from "@/components/sidebar-navigation"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { PoweredBy } from "@/components/powered-by"
import { import {
type SessionContext, type SessionContext,
loadSession, loadSession,
@@ -224,11 +225,7 @@ export default function VideoProcessingPage() {
</div> </div>
</Card> </Card>
<div className="mt-4 text-center"> <PoweredBy />
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>
</div> </div>

View File

@@ -10,6 +10,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@
import { Loader2, TrendingUp } from "lucide-react" import { Loader2, TrendingUp } from "lucide-react"
import { SidebarNavigation } from "@/components/sidebar-navigation" import { SidebarNavigation } from "@/components/sidebar-navigation"
import { PageHeader } from "@/components/page-header" import { PageHeader } from "@/components/page-header"
import { PoweredBy } from "@/components/powered-by"
import { import {
type SessionContext, type SessionContext,
loadSession, loadSession,
@@ -358,12 +359,7 @@ export default function UploadPage() {
</CardContent> </CardContent>
</Card> </Card>
{/* Footer */} <PoweredBy />
<div className="mt-4 text-center">
<p className="text-xs text-gray-400 dark:text-gray-500">
Sentient Geeks Pvt. Ltd.
</p>
</div>
</div> </div>
</main> </main>
</div> </div>

View File

@@ -20,6 +20,7 @@ import {
MapPin, MapPin,
Map Map
} from "lucide-react" } from "lucide-react"
import { PoweredBy } from "@/components/powered-by"
interface NavItem { interface NavItem {
title: string title: string
@@ -140,11 +141,8 @@ export function NavigationMenu() {
})} })}
</nav> </nav>
{/* Footer */} <div className="absolute bottom-4 left-4 right-4">
<div className="absolute bottom-4 left-4 right-4 text-center"> <PoweredBy />
<p className="text-xs text-gray-400">
Sentient Geeks Pvt. Ltd.
</p>
</div> </div>
</SheetContent> </SheetContent>
</Sheet> </Sheet>

18
components/powered-by.tsx Normal file
View File

@@ -0,0 +1,18 @@
import Image from "next/image"
export function PoweredBy() {
return (
<div className="mt-8 flex items-center justify-center gap-2 transition-opacity duration-300">
<span className="font-medium powered-blue-gradient">
Powered by
</span>
<Image
src="/sg.svg"
alt="Sentient Geeks"
width={130}
height={20}
className="fill-blue-500"
/>
</div>
)
}

9
public/sg.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB