From 846f92d2fe08ab9b8b14e8b949f00bb4529974d2 Mon Sep 17 00:00:00 2001 From: hongjli <3117313295@qq.com> Date: 星期六, 05 四月 2025 15:09:17 +0800 Subject: [PATCH] 导航栏优化 --- src/app/layout.tsx | 50 ++++- public/images/logo.jpg | 0 src/components/Card.tsx | 14 + src/app/globals.css | 167 ++++++++++++++++++++ src/app/page.tsx | 11 + src/components/layout/Navbar.tsx | 214 +++++++++++++++++++++----- 6 files changed, 384 insertions(+), 72 deletions(-) diff --git a/public/images/logo.jpg b/public/images/logo.jpg new file mode 100644 index 0000000..a9924fd --- /dev/null +++ b/public/images/logo.jpg Binary files differ diff --git a/src/app/globals.css b/src/app/globals.css index a2dc41e..9144a3f 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,8 +1,18 @@ @import "tailwindcss"; :root { - --background: #ffffff; - --foreground: #171717; + /* 鐜颁唬绉戞妧鎰熶富棰橀厤鑹� */ + --ai-primary: #1E2B63; /* 娣辫摑鑹� - 涓昏鑳屾櫙鑹� */ + --ai-secondary: #6ADBFF; /* 澶╄摑鑹� - 鐐圭紑鑹茶皟 */ + --ai-accent: #5E72EB; /* 绱摑鑹� - 寮鸿皟鑹茶皟 */ + --ai-highlight: #FF9190; /* 绮夌孩鑹� - 楂樹寒鑹茶皟 */ + --ai-surface: #F7F9FF; /* 娣¤摑鐧借壊 - 鎻愪緵娓呮櫚瑙嗚绌洪棿 */ + --ai-dark: #0A1033; /* 娣辫摑鑹� - 鏆楄壊璋� */ + --ai-contrast: #FF6A88; /* 绮夌孩鑹� - 鐢ㄤ簬琛屽姩鐐瑰己璋� */ + + /* 鍩虹棰滆壊璁剧疆 */ + --background: var(--ai-surface); + --foreground: #1E2B63; } @theme inline { @@ -14,13 +24,160 @@ @media (prefers-color-scheme: dark) { :root { - --background: #0a0a0a; - --foreground: #ededed; + --background: var(--ai-dark); + --foreground: #E9EFFD; } } body { background: var(--background); color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + font-family: 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif; +} + +/* 瀵艰埅鏍忕壒鏁堟牱寮� */ +.hover\:shadow-glow:hover { + box-shadow: 0 0 15px rgba(106, 219, 255, 0.5); +} + +/* Logo鍦嗙幆鑴夊啿鍔ㄧ敾 */ +@keyframes logo-ring-pulse { + 0% { + opacity: 0.15; + box-shadow: 0 0 0 0 rgba(136, 219, 255, 0.15); + } + 25% { + opacity: 0.35; + box-shadow: 0 0 0 1px rgba(136, 219, 255, 0.2); + } + 50% { + opacity: 0.65; + box-shadow: 0 0 0 2px rgba(136, 219, 255, 0.25); + } + 75% { + opacity: 0.35; + box-shadow: 0 0 0 1px rgba(136, 219, 255, 0.2); + } + 100% { + opacity: 0.15; + box-shadow: 0 0 0 0 rgba(136, 219, 255, 0.15); + } +} + +.animate-logo-pulse { + animation: logo-ring-pulse 6s ease-in-out infinite; +} + +/* AI鏁版嵁娴佹晥鏋滃姩鐢� */ +@keyframes dataflowY { + 0% { + transform: translateY(-100%); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + transform: translateY(100%); + opacity: 0; + } +} + +@keyframes dataflowX { + 0% { + transform: translateX(-100%); + opacity: 0; + } + 50% { + opacity: 1; + } + 100% { + transform: translateX(100%); + opacity: 0; + } +} + +.animate-dataflowY { + animation: dataflowY 3s infinite; +} + +.animate-dataflowX { + animation: dataflowX 4s infinite; +} + +/* 鎸夐挳鍊炬枩鍔ㄧ敾 */ +@keyframes tilt { + 0%, 100% { + transform: rotate(0deg); + } + 25% { + transform: rotate(1deg); + } + 75% { + transform: rotate(-1deg); + } +} + +.animate-tilt { + animation: tilt 10s ease-in-out infinite; +} + +/* AI鍏冪礌鎵弿绾垮姩鐢� */ +@keyframes scanline { + 0% { + transform: translateY(-100%); + } + 100% { + transform: translateY(100%); + } +} + +.animate-scanline { + animation: scanline 2s linear infinite; +} + +/* 鍩虹娓愬彉鍔ㄧ敾 */ +@keyframes gradient-flow { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +.bg-gradient-animate { + background-size: 200% 200%; + animation: gradient-flow 8s ease infinite; +} + +/* 鏂板楂樺厜鏁堟灉 */ +@keyframes shimmer { + 0% { + opacity: 0.5; + transform: translateX(-100%); + } + 100% { + opacity: 0; + transform: translateX(100%); + } +} + +.shimmer-effect::after { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: linear-gradient( + to right, + rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 0.3) 50%, + rgba(255, 255, 255, 0) 100% + ); + animation: shimmer 2s infinite; } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8851288..0456c32 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,6 +2,7 @@ import { Inter } from "next/font/google"; import "./globals.css"; import Navbar from "@/components/layout/Navbar"; +import Image from 'next/image'; const inter = Inter({ subsets: ["latin"] }); @@ -19,38 +20,57 @@ <html lang="zh"> <body className={inter.className}> <Navbar /> - <main className="min-h-screen bg-gray-50 pt-16"> + <main className="min-h-screen bg-gradient-to-b from-[var(--ai-surface)] to-white pt-16"> {children} </main> - <footer className="bg-[#2F3C7E] text-white py-8"> + <footer className="bg-gradient-to-br from-[var(--ai-primary)] to-[var(--ai-dark)] text-white py-10"> <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> + <div className="mb-8 flex justify-center flex-col items-center"> + <div className="relative w-16 h-16 mb-3"> + <Image + src="/images/logo.jpg" + alt="甯峰箘鍚涙垚Logo" + width={64} + height={64} + className="object-contain" + priority + /> + </div> + <div className="text-xl font-bold">甯峰箘鍚涙垚</div> + <div className="text-sm text-gray-300 mt-1">鏅鸿兘鐗╂祦瑙e喅鏂规</div> + </div> <div className="grid grid-cols-1 md:grid-cols-3 gap-8"> <div> - <h3 className="text-lg font-semibold mb-4">鍏充簬鎴戜滑</h3> + <h3 className="text-lg font-semibold mb-4 text-[#F5A800]">鍏充簬鎴戜滑</h3> <ul className="space-y-2"> - <li>鍏徃浠嬬粛</li> - <li>鑱旂郴鏂瑰紡</li> - <li>鍔犲叆鎴戜滑</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鍏徃浠嬬粛</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鑱旂郴鏂瑰紡</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鍔犲叆鎴戜滑</li> </ul> </div> <div> - <h3 className="text-lg font-semibold mb-4">浜у搧鏈嶅姟</h3> + <h3 className="text-lg font-semibold mb-4 text-[#F5A800]">浜у搧鏈嶅姟</h3> <ul className="space-y-2"> - <li>鏁板瓧鍛樺伐</li> - <li>鏅鸿兘瀹㈡湇</li> - <li>鐗╂祦瑙e喅鏂规</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鏁板瓧鍛樺伐</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鏅鸿兘瀹㈡湇</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鐗╂祦瑙e喅鏂规</li> </ul> </div> <div> - <h3 className="text-lg font-semibold mb-4">甯姪涓績</h3> + <h3 className="text-lg font-semibold mb-4 text-[#F5A800]">甯姪涓績</h3> <ul className="space-y-2"> - <li>浣跨敤鎸囧崡</li> - <li>甯歌闂</li> - <li>鎶�鏈敮鎸�</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">浣跨敤鎸囧崡</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">甯歌闂</li> + <li className="hover:text-[#F5A800] transition-colors cursor-pointer">鎶�鏈敮鎸�</li> </ul> </div> </div> - <div className="mt-8 pt-8 border-t border-gray-700 text-center"> + <div className="mt-8 pt-8 border-t border-opacity-20 border-[#F5A800] text-center"> + <div className="flex items-center justify-center mb-4"> + <span className="inline-block w-2 h-2 bg-[#00A0E9] rounded-full mr-2 animate-pulse"></span> + <span className="inline-block w-2 h-2 bg-[#5D54A4] rounded-full mx-2 animate-pulse delay-300"></span> + <span className="inline-block w-2 h-2 bg-[#F5A800] rounded-full ml-2 animate-pulse delay-500"></span> + </div> <p>漏 2024 甯峰箘鍚涙垚. All rights reserved.</p> </div> </div> diff --git a/src/app/page.tsx b/src/app/page.tsx index a9101b4..f7bbfb0 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -46,9 +46,16 @@ return ( <div className="flex"> <Sidebar /> - <div className="flex-1 p-6 md:p-8"> + <div className="flex-1 p-6 md:p-8 bg-gradient-to-b from-[var(--ai-surface)] to-white"> <div className="max-w-7xl mx-auto"> - <h1 className="text-2xl font-bold text-[#2F3C7E] mb-6">鍦烘櫙妯℃嫙</h1> + <div className="mb-8"> + <h1 className="text-3xl font-bold text-[var(--ai-primary)] mb-2"> + AI鍦烘櫙妯℃嫙 + <span className="ml-2 inline-block w-2 h-2 rounded-full bg-[var(--ai-secondary)] animate-pulse"></span> + </h1> + <p className="text-gray-600">閫夋嫨浠ヤ笅鍦烘櫙锛屼綋楠屼汉宸ユ櫤鑳藉浣曡В鍐冲疄闄呬笟鍔¢棶棰�</p> + <div className="h-1 w-24 bg-gradient-to-r from-[var(--ai-secondary)] to-[var(--ai-accent)] mt-4"></div> + </div> <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> {services.map((service, index) => ( <Card diff --git a/src/components/Card.tsx b/src/components/Card.tsx index d20e32d..988aae5 100644 --- a/src/components/Card.tsx +++ b/src/components/Card.tsx @@ -13,23 +13,25 @@ const Card = ({ title, description, imageUrl, onClick }: CardProps) => { return ( <motion.div - whileHover={{ scale: 1.02 }} + whileHover={{ scale: 1.02, boxShadow: '0 10px 25px -5px rgba(0, 184, 212, 0.1), 0 10px 10px -5px rgba(0, 184, 212, 0.05)' }} whileTap={{ scale: 0.98 }} - className="bg-white rounded-xl shadow-lg overflow-hidden cursor-pointer" + className="bg-white backdrop-blur-sm bg-opacity-90 rounded-xl border border-[var(--ai-secondary)] border-opacity-20 shadow-md overflow-hidden cursor-pointer transition-all" onClick={onClick} > - <div className="relative h-48"> + <div className="relative h-48 overflow-hidden"> + <div className="absolute inset-0 bg-gradient-to-tr from-[var(--ai-primary)] to-transparent opacity-10 z-0"></div> <Image src={imageUrl} alt={title} fill - className="object-contain p-4" + className="object-contain p-4 z-10" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw" /> </div> - <div className="p-4"> - <h3 className="text-lg font-semibold text-[#2F3C7E] mb-2">{title}</h3> + <div className="p-5 border-t border-[var(--ai-secondary)] border-opacity-10"> + <h3 className="text-lg font-semibold text-[var(--ai-primary)] mb-2">{title}</h3> <p className="text-gray-600 text-sm">{description}</p> + <div className="mt-4 h-1 w-16 bg-gradient-to-r from-[var(--ai-secondary)] to-[var(--ai-highlight)]"></div> </div> </motion.div> ); diff --git a/src/components/layout/Navbar.tsx b/src/components/layout/Navbar.tsx index db6347c..b3cae67 100644 --- a/src/components/layout/Navbar.tsx +++ b/src/components/layout/Navbar.tsx @@ -2,77 +2,203 @@ import Link from 'next/link'; import Image from 'next/image'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; const Navbar = () => { const [isMenuOpen, setIsMenuOpen] = useState(false); + const [scrolled, setScrolled] = useState(false); + const [activeMenu, setActiveMenu] = useState(''); + + // 鐩戝惉婊氬姩浜嬩欢锛屼负瀵艰埅鏍忔坊鍔犳粴鍔ㄦ晥鏋� + useEffect(() => { + const handleScroll = () => { + if (window.scrollY > 10) { + setScrolled(true); + } else { + setScrolled(false); + } + }; + + window.addEventListener('scroll', handleScroll); + return () => window.removeEventListener('scroll', handleScroll); + }, []); return ( - <nav className="fixed top-0 left-0 w-full bg-[#2F3C7E] text-white z-50"> - <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> - <div className="flex items-center justify-between h-16"> - {/* Logo */} - <div className="flex-shrink-0"> + <nav + className={`fixed top-0 left-0 w-full z-50 transition-all duration-300 ${ + scrolled + ? 'bg-gradient-to-r from-[#1E2B63]/95 to-[#0A1033]/95 backdrop-blur-md shadow-lg py-2' + : 'bg-gradient-to-r from-[#1E2B63] to-[#0A1033] py-2' + }`} + > + <div className="absolute top-0 left-0 w-full h-full overflow-hidden opacity-15"> + <div className="absolute top-0 left-0 w-[60%] h-[1px] bg-gradient-to-r from-transparent via-[#6ADBFF] to-transparent"></div> + <div className="absolute top-0 right-0 w-[30%] h-[1px] bg-gradient-to-r from-transparent via-[#FF6A88] to-transparent"></div> + </div> + + <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative"> + <div className="flex items-center justify-between"> + {/* Logo鍖哄煙 */} + <div className="flex-shrink-0 relative z-10 group"> <Link href="/" className="flex items-center"> - <div className="w-8 h-8 bg-[#e1c7f1] rounded-lg flex items-center justify-center"> - <span className="text-[#2F3C7E] text-sm font-bold">甯�</span> + {/* Logo涓讳綋 */} + <div className="flex items-center"> + <div className="relative w-11 h-11"> + {/* 鍩虹Logo鑳屾櫙 */} + <div className="absolute inset-0 rounded-full bg-gradient-to-tr from-[#1E2B63] to-[#131C41] shadow-inner"></div> + + {/* 鍙戝厜鍦嗙幆 - 闂儊鏁堟灉 */} + <div className="absolute inset-0 rounded-full border-[1.5px] border-[#88dbff] animate-logo-pulse"></div> + + {/* Logo鍥剧墖 */} + <Image + src="/images/logo.jpg" + alt="甯峰箘鍚涙垚Logo" + width={44} + height={44} + className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[85%] h-[85%] rounded-full object-cover z-10" + priority + /> + </div> + + {/* 鍏徃鍚嶇О */} + <div className="ml-3 relative"> + <h1 className="text-xl font-bold text-white tracking-wide relative"> + 甯峰箘鍚涙垚 + <span className="absolute -bottom-0.5 left-0 w-full h-[2px] bg-gradient-to-r + from-[#FF6A88] to-[#6ADBFF]"></span> + </h1> + </div> </div> - <span className="ml-2 text-xl font-bold">甯峰箘鍚涙垚</span> </Link> </div> - {/* Desktop Menu */} + {/* 涓ぎ瑁呴グ鍏冪礌 */} + <div className="hidden lg:flex absolute left-1/2 transform -translate-x-1/2 top-1/2 -translate-y-1/2"> + <div className="relative h-4 w-32"> + <div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"> + <span className="block w-1 h-1 rounded-full bg-gradient-to-r from-[#FF6A88] to-[#6ADBFF] opacity-80 animate-ping"></span> + </div> + <div className="absolute top-1/2 left-0 right-0 h-[1px]"> + <div className="h-full w-full bg-gradient-to-r from-transparent via-[#6ADBFF]/30 to-transparent"></div> + </div> + </div> + </div> + + {/* 瀵艰埅鑿滃崟 */} <div className="hidden md:flex items-center space-x-8"> - <Link href="/platform" className="hover:text-[#FBEAEB]">鏁板瓧鍛樺伐骞冲彴</Link> - <Link href="/chat" className="hover:text-[#FBEAEB]">鑱婂ぉ瀹�</Link> - <Link href="/training" className="hover:text-[#FBEAEB]">璁粌鍦�</Link> + <Link + href="/platform" + className="relative px-3 py-2 text-gray-100 text-sm font-medium" + onMouseEnter={() => setActiveMenu('platform')} + onMouseLeave={() => setActiveMenu('')} + > + <span className="relative z-10">鏁板瓧鍛樺伐骞冲彴</span> + <span className={`absolute bottom-0 left-0 h-[2px] bg-gradient-to-r from-[#6ADBFF] to-transparent + transition-all duration-300 ${activeMenu === 'platform' ? 'w-full' : 'w-0'}`}></span> + </Link> + + <Link + href="/chat" + className="relative px-3 py-2 text-gray-100 text-sm font-medium" + onMouseEnter={() => setActiveMenu('chat')} + onMouseLeave={() => setActiveMenu('')} + > + <span className="relative z-10">鑱婂ぉ瀹�</span> + <span className={`absolute bottom-0 left-0 h-[2px] bg-gradient-to-r from-[#6ADBFF] to-transparent + transition-all duration-300 ${activeMenu === 'chat' ? 'w-full' : 'w-0'}`}></span> + </Link> + + <Link + href="/training" + className="relative px-3 py-2 text-gray-100 text-sm font-medium" + onMouseEnter={() => setActiveMenu('training')} + onMouseLeave={() => setActiveMenu('')} + > + <span className="relative z-10">璁粌鍦�</span> + <span className={`absolute bottom-0 left-0 h-[2px] bg-gradient-to-r from-[#6ADBFF] to-transparent + transition-all duration-300 ${activeMenu === 'training' ? 'w-full' : 'w-0'}`}></span> + </Link> + + {/* 鐧诲綍鎸夐挳 */} + <div className="relative group ml-6"> + <button className="relative bg-gradient-to-r from-[#5E72EB] to-[#FF9190] px-7 py-2 + rounded-full text-white font-medium overflow-hidden shadow-[0_2px_10px_rgba(94,114,235,0.3)] + hover:shadow-[0_5px_15px_rgba(94,114,235,0.5)] transition-shadow duration-300"> + <span className="relative z-10">鐧诲綍</span> + <div className="absolute inset-0 bg-gradient-to-r from-[#FF9190] to-[#5E72EB] opacity-0 + group-hover:opacity-100 transition-opacity duration-500"></div> + </button> + </div> </div> - {/* Login Button */} - <div className="hidden md:flex items-center"> - <button className="bg-gradient-to-r from-[#FF416C] to-[#FF4B2B] px-6 py-2 rounded-full"> - 鐧诲綍 - </button> - </div> - - {/* Mobile Menu Button */} + {/* 绉诲姩绔彍鍗曟寜閽� */} <div className="md:hidden"> <button onClick={() => setIsMenuOpen(!isMenuOpen)} - className="inline-flex items-center justify-center p-2 rounded-md text-white hover:text-[#FBEAEB]" + className="relative w-10 h-10 flex items-center justify-center focus:outline-none" + aria-label="Toggle navigation menu" > - <svg - className="h-6 w-6" - fill="none" - viewBox="0 0 24 24" - stroke="currentColor" - > - {isMenuOpen ? ( - <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /> - ) : ( - <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" /> - )} - </svg> + <div className="relative"> + <span className={`block w-5 h-[2px] bg-white rounded-full transition-all duration-300 + transform ${isMenuOpen ? 'rotate-45 translate-y-1.5' : ''}`}></span> + <span className={`block w-5 h-[2px] bg-white rounded-full transition-all duration-300 + mt-1 ${isMenuOpen ? 'opacity-0' : ''}`}></span> + <span className={`block w-5 h-[2px] bg-white rounded-full transition-all duration-300 + mt-1 transform ${isMenuOpen ? '-rotate-45 -translate-y-1.5' : ''}`}></span> + </div> </button> </div> </div> </div> - {/* Mobile Menu */} - {isMenuOpen && ( - <div className="md:hidden"> - <div className="px-2 pt-2 pb-3 space-y-1 sm:px-3"> - <Link href="/platform" className="block px-3 py-2 hover:bg-[#FBEAEB] hover:text-[#2F3C7E]">鏁板瓧鍛樺伐骞冲彴</Link> - <Link href="/chat" className="block px-3 py-2 hover:bg-[#FBEAEB] hover:text-[#2F3C7E]">鑱婂ぉ瀹�</Link> - <Link href="/training" className="block px-3 py-2 hover:bg-[#FBEAEB] hover:text-[#2F3C7E]">璁粌鍦�</Link> - <button className="w-full mt-4 bg-gradient-to-r from-[#FF416C] to-[#FF4B2B] px-6 py-2 rounded-full"> + {/* 绉诲姩绔彍鍗� */} + <div + className={`md:hidden transition-all duration-300 ease-in-out overflow-hidden ${ + isMenuOpen ? 'max-h-80 opacity-100' : 'max-h-0 opacity-0' + }`} + > + <div className="p-3 space-y-1 bg-gradient-to-b from-[#1E2B63] to-[#0A1033] + border-t border-[#6ADBFF]/10"> + <Link + href="/platform" + className="block px-4 py-3 text-white border-l-2 border-transparent hover:border-[#6ADBFF] + hover:bg-[#3B4888]/20 rounded-r-md transition-all duration-200" + > + 鏁板瓧鍛樺伐骞冲彴 + </Link> + + <Link + href="/chat" + className="block px-4 py-3 text-white border-l-2 border-transparent hover:border-[#6ADBFF] + hover:bg-[#3B4888]/20 rounded-r-md transition-all duration-200" + > + 鑱婂ぉ瀹� + </Link> + + <Link + href="/training" + className="block px-4 py-3 text-white border-l-2 border-transparent hover:border-[#6ADBFF] + hover:bg-[#3B4888]/20 rounded-r-md transition-all duration-200" + > + 璁粌鍦� + </Link> + + <div className="pt-3 pb-1"> + <button className="w-full bg-gradient-to-r from-[#5E72EB] to-[#FF9190] + text-white font-medium px-6 py-2 rounded-md"> 鐧诲綍 </button> </div> </div> - )} + </div> </nav> ); }; -export default Navbar; \ No newline at end of file +export default Navbar; + +// 娣诲姞鍒癈SS鏂囦欢涓殑鍏ㄥ眬鏍峰紡 +// .hover:shadow-glow:hover { +// box-shadow: 0 0 15px rgba(255, 65, 108, 0.5); +// } \ No newline at end of file -- Gitblit v1.9.3