feat: add company logo and configure Cloudflare tunnel support
- Add company logo to login page and all sidebar variants - Configure Next.js rewrites to proxy /api/* to backend - Enable external access via Cloudflare Zero Trust tunnel Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
import Image from 'next/image';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Input } from '@/components/ui/input';
|
import { Input } from '@/components/ui/input';
|
||||||
import { Label } from '@/components/ui/label';
|
import { Label } from '@/components/ui/label';
|
||||||
@@ -40,6 +41,16 @@ export default function LoginPage() {
|
|||||||
return (
|
return (
|
||||||
<Card>
|
<Card>
|
||||||
<CardHeader className="text-center">
|
<CardHeader className="text-center">
|
||||||
|
<div className="flex justify-center mb-4">
|
||||||
|
<Image
|
||||||
|
src="/logo.jpg"
|
||||||
|
alt="Horux360"
|
||||||
|
width={80}
|
||||||
|
height={80}
|
||||||
|
className="rounded-full"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<CardTitle className="text-2xl">Iniciar Sesión</CardTitle>
|
<CardTitle className="text-2xl">Iniciar Sesión</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription>
|
||||||
Ingresa tus credenciales para acceder a tu cuenta
|
Ingresa tus credenciales para acceder a tu cuenta
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
import Image from 'next/image';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
import {
|
import {
|
||||||
@@ -69,9 +70,13 @@ export function SidebarCompact() {
|
|||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<div className="flex h-14 items-center border-b px-4">
|
<div className="flex h-14 items-center border-b px-4">
|
||||||
<Link href="/dashboard" className="flex items-center gap-2">
|
<Link href="/dashboard" className="flex items-center gap-2">
|
||||||
<div className="h-8 w-8 rounded bg-primary flex items-center justify-center flex-shrink-0">
|
<Image
|
||||||
<span className="text-primary-foreground font-bold text-lg">H</span>
|
src="/logo.jpg"
|
||||||
</div>
|
alt="Horux360"
|
||||||
|
width={32}
|
||||||
|
height={32}
|
||||||
|
className="rounded-full flex-shrink-0"
|
||||||
|
/>
|
||||||
<span className={cn(
|
<span className={cn(
|
||||||
'font-bold text-lg whitespace-nowrap transition-opacity duration-300',
|
'font-bold text-lg whitespace-nowrap transition-opacity duration-300',
|
||||||
expanded ? 'opacity-100' : 'opacity-0 w-0 overflow-hidden'
|
expanded ? 'opacity-100' : 'opacity-0 w-0 overflow-hidden'
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
import Image from 'next/image';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
import {
|
import {
|
||||||
@@ -59,9 +60,13 @@ export function SidebarFloating() {
|
|||||||
<div className="flex h-full flex-col p-4">
|
<div className="flex h-full flex-col p-4">
|
||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<div className="flex items-center gap-3 mb-6 px-2">
|
<div className="flex items-center gap-3 mb-6 px-2">
|
||||||
<div className="h-10 w-10 rounded-xl bg-gradient-to-br from-primary to-accent flex items-center justify-center shadow-lg shadow-primary/25">
|
<Image
|
||||||
<span className="text-primary-foreground font-bold text-xl">H</span>
|
src="/logo.jpg"
|
||||||
</div>
|
alt="Horux360"
|
||||||
|
width={40}
|
||||||
|
height={40}
|
||||||
|
className="rounded-full shadow-lg shadow-primary/25"
|
||||||
|
/>
|
||||||
<div>
|
<div>
|
||||||
<span className="font-bold text-lg block">Horux360</span>
|
<span className="font-bold text-lg block">Horux360</span>
|
||||||
<span className="text-xs text-muted-foreground">Análisis Fiscal</span>
|
<span className="text-xs text-muted-foreground">Análisis Fiscal</span>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
import Image from 'next/image';
|
||||||
import { usePathname } from 'next/navigation';
|
import { usePathname } from 'next/navigation';
|
||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
import {
|
import {
|
||||||
@@ -60,9 +61,13 @@ export function Sidebar() {
|
|||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<div className="flex h-16 items-center border-b px-6">
|
<div className="flex h-16 items-center border-b px-6">
|
||||||
<Link href="/dashboard" className="flex items-center gap-2">
|
<Link href="/dashboard" className="flex items-center gap-2">
|
||||||
<div className="h-8 w-8 rounded-lg bg-primary flex items-center justify-center">
|
<Image
|
||||||
<span className="text-primary-foreground font-bold text-lg">H</span>
|
src="/logo.jpg"
|
||||||
</div>
|
alt="Horux360"
|
||||||
|
width={32}
|
||||||
|
height={32}
|
||||||
|
className="rounded-full"
|
||||||
|
/>
|
||||||
<span className="font-bold text-xl">Horux360</span>
|
<span className="font-bold text-xl">Horux360</span>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,18 @@
|
|||||||
/** @type {import('next').NextConfig} */
|
/** @type {import('next').NextConfig} */
|
||||||
const nextConfig = {
|
const nextConfig = {
|
||||||
transpilePackages: ['@horux/shared'],
|
transpilePackages: ['@horux/shared'],
|
||||||
|
async rewrites() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
source: '/api/:path*',
|
||||||
|
destination: 'http://localhost:4000/api/:path*',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: '/health',
|
||||||
|
destination: 'http://localhost:4000/health',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = nextConfig;
|
module.exports = nextConfig;
|
||||||
|
|||||||
BIN
apps/web/public/logo.jpg
Normal file
BIN
apps/web/public/logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Reference in New Issue
Block a user