feat: Adding dark mode, cleaning the UI a small bit, adding a link to the API documentation, and linting the code. (#2182)

# What does this PR do?

This PR adds a few enhancements:
- Dark mode 
- A dark mode icon
- Adds a link to the API documentation
- Adds prettier and a linter to the code 
- Aligning the default text
- Linted the code 

## Before:
![Screenshot 2025-05-15 at 3 57
15 PM](https://github.com/user-attachments/assets/996db083-4a4f-4683-a2b4-e7c09de96135)

## After (dark mode):
![Screenshot 2025-05-15 at 3 57
50 PM](https://github.com/user-attachments/assets/9d45d26b-2449-4a5f-813e-29e07e94b793)

[//]: # (If resolving an issue, uncomment and update the line below)
[//]: # (Closes #[issue-number])

## Test Plan
[Describe the tests you ran to verify your changes with result
summaries. *Provide clear instructions so the plan can be easily
re-executed.*]

[//]: # (## Documentation)


Related to https://github.com/meta-llama/llama-stack/issues/2085

---------

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
Francisco Arceo 2025-05-16 11:48:26 -06:00 committed by GitHub
parent 7aae8fadbf
commit 7f1f21fd6c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 831 additions and 220 deletions

View file

@ -1,5 +1,7 @@
import type { Metadata } from "next";
import { ThemeProvider } from "@/components/ui/theme-provider";
import { Geist, Geist_Mono } from "next/font/google";
import { ModeToggle } from "@/components/ui/mode-toggle";
import "./globals.css";
const geistSans = Geist({
@ -17,21 +19,37 @@ export const metadata: Metadata = {
description: "Llama Stack UI",
};
import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar"
import { AppSidebar } from "@/components/app-sidebar"
import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
import { AppSidebar } from "@/components/app-sidebar";
export default function Layout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${geistSans.variable} ${geistMono.variable}`}>
<body>
<SidebarProvider>
<AppSidebar />
<main>
<SidebarTrigger />
{children}
</main>
</SidebarProvider>
<html lang="en" suppressHydrationWarning>
<body className={`${geistSans.variable} ${geistMono.variable} font-sans`}>
<ThemeProvider
attribute="class"
defaultTheme="system"
enableSystem
disableTransitionOnChange
>
<SidebarProvider>
<AppSidebar />
<main className="flex flex-col flex-1">
{/* Header with aligned elements */}
<div className="flex items-center p-4 border-b">
<div className="flex-none">
<SidebarTrigger />
</div>
<div className="flex-1 text-center"></div>
<div className="flex-none">
<ModeToggle />
</div>
</div>
<div className="flex flex-col flex-1 p-4">{children}</div>
</main>
</SidebarProvider>
</ThemeProvider>
</body>
</html>
)
);
}

View file

@ -3,5 +3,5 @@ export default function ChatCompletions() {
<div>
<h1>Under Construction</h1>
</div>
)
);
}

View file

@ -3,5 +3,5 @@ export default function Responses() {
<div>
<h1>Under Construction</h1>
</div>
)
);
}

View file

@ -1,6 +1,6 @@
export default function Home() {
return (
<div>
<div className="mt-8">
<h1>Welcome to Llama Stack!</h1>
</div>
);