diff --git a/public/Roo-Code-Logo-Horiz-white.svg b/public/logo-dark.svg similarity index 100% rename from public/Roo-Code-Logo-Horiz-white.svg rename to public/logo-dark.svg diff --git a/public/Roo-Code-Logo-Horiz-blk.svg b/public/logo.svg similarity index 100% rename from public/Roo-Code-Logo-Horiz-blk.svg rename to public/logo.svg diff --git a/public/placeholder.svg b/public/placeholder.svg deleted file mode 100644 index e763910b27..0000000000 --- a/public/placeholder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/placeholder_pfp.png b/public/placeholder_pfp.png deleted file mode 100644 index f8b690afba..0000000000 Binary files a/public/placeholder_pfp.png and /dev/null differ diff --git a/src/app/(authenticated)/analytics/page.tsx b/src/app/(authenticated)/dashboard/analytics/page.tsx similarity index 85% rename from src/app/(authenticated)/analytics/page.tsx rename to src/app/(authenticated)/dashboard/analytics/page.tsx index 08f8f3f8e2..03566afd01 100644 --- a/src/app/(authenticated)/analytics/page.tsx +++ b/src/app/(authenticated)/dashboard/analytics/page.tsx @@ -3,7 +3,7 @@ import { useTranslations } from 'next-intl'; import { TitleBar } from '@/components/dashboard/TitleBar'; -import { AnalyticsPage } from '@/features/analytics/AnalyticsPage'; +import { AnalyticsPage } from '@/components/analytics/AnalyticsPage'; const AnalyticsPageContainer = () => { const t = useTranslations('Analytics'); diff --git a/src/app/(authenticated)/audit-logs/page.tsx b/src/app/(authenticated)/dashboard/audit-logs/page.tsx similarity index 90% rename from src/app/(authenticated)/audit-logs/page.tsx rename to src/app/(authenticated)/dashboard/audit-logs/page.tsx index e64fc25287..ea7b49b55f 100644 --- a/src/app/(authenticated)/audit-logs/page.tsx +++ b/src/app/(authenticated)/dashboard/audit-logs/page.tsx @@ -5,10 +5,10 @@ import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Drawer } from '@/components/ui/drawer'; import { TitleBar } from '@/components/dashboard/TitleBar'; -import { AuditLogDetails } from '@/features/dashboard/AuditLogDetails'; -import { AuditLogEntry } from '@/features/dashboard/AuditLogEntry'; -import type { AuditLog } from '@/features/dashboard/mockAuditLogs'; -import { getFilteredLogs } from '@/features/dashboard/mockAuditLogs'; +import { AuditLogDetails } from '@/components/dashboard/AuditLogDetails'; +import { AuditLogEntry } from '@/components/dashboard/AuditLogEntry'; +import type { AuditLog } from '@/components/dashboard/mockAuditLogs'; +import { getFilteredLogs } from '@/components/dashboard/mockAuditLogs'; type TimePeriod = '7' | '30' | '90'; diff --git a/src/app/(authenticated)/dashboard/org/[[...organization-profile]]/OrgProfile.tsx b/src/app/(authenticated)/dashboard/org/[[...organization-profile]]/OrgProfile.tsx index fabaea0137..e2a856801e 100644 --- a/src/app/(authenticated)/dashboard/org/[[...organization-profile]]/OrgProfile.tsx +++ b/src/app/(authenticated)/dashboard/org/[[...organization-profile]]/OrgProfile.tsx @@ -5,8 +5,8 @@ import { useTheme } from 'next-themes'; import { dark } from '@clerk/themes'; import { OrganizationProfile } from '@clerk/nextjs'; -import DefaultParametersPage from '@/features/dashboard/DefaultParametersPage'; -import ProviderWhitelistPage from '@/features/dashboard/ProviderWhitelistPage'; +import DefaultParametersPage from '@/components/dashboard/DefaultParametersPage'; +import ProviderWhitelistPage from '@/components/dashboard/ProviderWhitelistPage'; export const OrgProfile = () => { const t = useTranslations('OrganizationProfile'); diff --git a/src/app/(authenticated)/dashboard/page.tsx b/src/app/(authenticated)/dashboard/page.tsx index 5c4945f1f9..59b25e696b 100644 --- a/src/app/(authenticated)/dashboard/page.tsx +++ b/src/app/(authenticated)/dashboard/page.tsx @@ -1,8 +1,8 @@ import { useTranslations } from 'next-intl'; import { TitleBar } from '@/components/dashboard/TitleBar'; -import { AuditLogCard } from '@/features/dashboard/AuditLogCard'; -import { UsageAnalyticsCard } from '@/features/dashboard/UsageAnalyticsCard'; +import { AuditLogCard } from '@/components/dashboard/AuditLogCard'; +import { UsageAnalyticsCard } from '@/components/dashboard/UsageAnalyticsCard'; export default function Page() { const t = useTranslations('DashboardIndex'); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1b3499e61c..4298cbc84d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,7 +2,7 @@ import '@/styles/globals.css'; import type { Metadata } from 'next'; import { NextIntlClientProvider } from 'next-intl'; -import { getLocale } from 'next-intl/server'; +import { getLocale, getTranslations, setRequestLocale } from 'next-intl/server'; import { ClerkProvider } from '@clerk/nextjs'; import { getClerkLocale } from '@/lib/locale'; @@ -11,24 +11,31 @@ import { ToastProvider, ToastViewport } from '@/components/ui/toast'; import { ToastProvider as ToastContextProvider } from '@/components/ui/toast-context'; import { Toaster } from '@/components/ui/toaster'; -export const metadata: Metadata = { - icons: [ - { rel: 'apple-touch-icon', url: '/apple-touch-icon.png' }, - { - rel: 'icon', - type: 'image/png', - sizes: '32x32', - url: '/favicon-32x32.png', - }, - { - rel: 'icon', - type: 'image/png', - sizes: '16x16', - url: '/favicon-16x16.png', - }, - { rel: 'icon', url: '/favicon.ico' }, - ], -}; +export async function generateMetadata(): Promise { + const locale = await getLocale(); + const t = await getTranslations({ locale, namespace: 'Index' }); + + return { + title: t('meta_title'), + description: t('meta_description'), + icons: [ + { rel: 'apple-touch-icon', url: '/apple-touch-icon.png' }, + { + rel: 'icon', + type: 'image/png', + sizes: '32x32', + url: '/favicon-32x32.png', + }, + { + rel: 'icon', + type: 'image/png', + sizes: '16x16', + url: '/favicon-16x16.png', + }, + { rel: 'icon', url: '/favicon.ico' }, + ], + }; +} export default async function RootLayout({ children, @@ -36,6 +43,7 @@ export default async function RootLayout({ children: React.ReactNode; }) { const locale = await getLocale(); + setRequestLocale(locale); return ( diff --git a/src/app/page.tsx b/src/app/page.tsx index 532c9ebd2a..89030f37e9 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,31 +1,7 @@ import { redirect } from 'next/navigation'; import { auth as clerkAuth } from '@clerk/nextjs/server'; -import { getLocale, getTranslations, setRequestLocale } from 'next-intl/server'; - -import { Navbar, Footer } from '@/components/layout'; -import { Hero, Features } from '@/components/landing'; - -export async function generateMetadata() { - const locale = await getLocale(); - const t = await getTranslations({ locale, namespace: 'Index' }); - return { title: t('meta_title'), description: t('meta_description') }; -} export default async function Page() { const { userId } = await clerkAuth(); - - if (userId) { - redirect('/dashboard'); - } - - setRequestLocale(await getLocale()); - - return ( - <> - - - - - > - ); + redirect(userId ? '/dashboard' : '/sign-in'); } diff --git a/src/features/analytics/AnalyticsPage.tsx b/src/components/analytics/AnalyticsPage.tsx similarity index 100% rename from src/features/analytics/AnalyticsPage.tsx rename to src/components/analytics/AnalyticsPage.tsx diff --git a/src/features/dashboard/AuditLogCard.tsx b/src/components/dashboard/AuditLogCard.tsx similarity index 100% rename from src/features/dashboard/AuditLogCard.tsx rename to src/components/dashboard/AuditLogCard.tsx diff --git a/src/features/dashboard/AuditLogDetails.tsx b/src/components/dashboard/AuditLogDetails.tsx similarity index 100% rename from src/features/dashboard/AuditLogDetails.tsx rename to src/components/dashboard/AuditLogDetails.tsx diff --git a/src/features/dashboard/AuditLogEntry.tsx b/src/components/dashboard/AuditLogEntry.tsx similarity index 100% rename from src/features/dashboard/AuditLogEntry.tsx rename to src/components/dashboard/AuditLogEntry.tsx diff --git a/src/features/dashboard/DefaultParametersPage.tsx b/src/components/dashboard/DefaultParametersPage.tsx similarity index 100% rename from src/features/dashboard/DefaultParametersPage.tsx rename to src/components/dashboard/DefaultParametersPage.tsx diff --git a/src/features/dashboard/ProviderWhitelistPage.tsx b/src/components/dashboard/ProviderWhitelistPage.tsx similarity index 100% rename from src/features/dashboard/ProviderWhitelistPage.tsx rename to src/components/dashboard/ProviderWhitelistPage.tsx diff --git a/src/features/dashboard/UsageAnalyticsCard.tsx b/src/components/dashboard/UsageAnalyticsCard.tsx similarity index 100% rename from src/features/dashboard/UsageAnalyticsCard.tsx rename to src/components/dashboard/UsageAnalyticsCard.tsx diff --git a/src/features/dashboard/mockAuditLogs.ts b/src/components/dashboard/mockAuditLogs.ts similarity index 100% rename from src/features/dashboard/mockAuditLogs.ts rename to src/components/dashboard/mockAuditLogs.ts diff --git a/src/components/landing/Features.tsx b/src/components/landing/Features.tsx deleted file mode 100644 index 9460c359eb..0000000000 --- a/src/components/landing/Features.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { useTranslations } from 'next-intl'; - -import { Section } from '@/components/layout'; - -export const Features = () => { - const t = useTranslations('Features'); - - return ( - - - - {t('section_subtitle')} - - {t('section_title')} - - {t('section_description')} - - - - - - - - } - title={t('feature1_title')} - > - {t('feature_description')} - - - - - - } - title={t('feature2_title')} - > - {t('feature_description')} - - - - - - } - title={t('feature3_title')} - > - {t('feature_description')} - - - - - - } - title={t('feature4_title')} - > - {t('feature_description')} - - - - - - } - title={t('feature5_title')} - > - {t('feature_description')} - - - - - - } - title={t('feature6_title')} - > - {t('feature_description')} - - - - ); -}; - -type FeatureCardProps = { - icon: React.ReactNode; - title: string; - children: React.ReactNode; -}; - -const FeatureCard = ({ icon, title, children }: FeatureCardProps) => ( - - - {icon} - - {title} - - {children} - -); diff --git a/src/components/landing/Hero.tsx b/src/components/landing/Hero.tsx deleted file mode 100644 index e33fe711fe..0000000000 --- a/src/components/landing/Hero.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useTranslations } from 'next-intl'; - -import { Section } from '@/components/layout/Section'; - -export const Hero = () => { - const t = useTranslations('Hero'); - - return ( - - - {t.rich('title', { - important: (chunks) => ( - - {chunks} - - ), - })} - - - {t('description')} - - - ); -}; diff --git a/src/components/landing/index.ts b/src/components/landing/index.ts deleted file mode 100644 index bc116cba6f..0000000000 --- a/src/components/landing/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { Hero } from './Hero'; -export { Features } from './Features'; diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx index 98ea89df7b..2a5201ba21 100644 --- a/src/components/layout/Footer.tsx +++ b/src/components/layout/Footer.tsx @@ -2,7 +2,6 @@ import Link from 'next/link'; import { useTranslations } from 'next-intl'; import { Section } from '@/components/layout'; -import { APP_NAME } from '@/lib/constants'; export const Footer = () => { const t = useTranslations('Footer'); @@ -34,9 +33,7 @@ export const Footer = () => { - - © Copyright {new Date().getFullYear()} {APP_NAME}. - + © Copyright {new Date().getFullYear()} Roo Code. {t('terms_of_service')} diff --git a/src/components/layout/Logo.tsx b/src/components/layout/Logo.tsx index f7ce4980d5..1c6427971f 100644 --- a/src/components/layout/Logo.tsx +++ b/src/components/layout/Logo.tsx @@ -1,11 +1,9 @@ -import { APP_NAME } from '@/lib/constants'; - import Image from 'next/image'; -export const Logo = (props: { isTextHidden?: boolean }) => ( +export const Logo = () => ( ( style={{ height: 'auto' }} /> - {!props.isTextHidden && APP_NAME} ); diff --git a/src/lib/constants.ts b/src/lib/constants.ts deleted file mode 100644 index 8264bede5f..0000000000 --- a/src/lib/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const APP_NAME = 'Roo Code Cloud';