)
diff --git a/fe/src/components/ui/sidebar.tsx b/fe/src/components/ui/sidebar.tsx
index 8c1d9c4..e8c91f3 100644
--- a/fe/src/components/ui/sidebar.tsx
+++ b/fe/src/components/ui/sidebar.tsx
@@ -251,7 +251,7 @@ function Sidebar({
/>
) {
}
const sidebarMenuButtonVariants = cva(
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>svg]:size-4 [&>svg]:shrink-0 [&>span:last-child]:truncate group-data-[collapsible=icon]:[&>span:last-child]:hidden",
{
variants: {
variant: {
From 3a52e9a0eb6466d60d5c8ad546c7bba6e9b1670a Mon Sep 17 00:00:00 2001
From: suhaibinator
Date: Sat, 24 May 2025 03:20:52 -0400
Subject: [PATCH 3/3] Add claude.md
---
CLAUDE.md | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 CLAUDE.md
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..94a66d6
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,50 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
+
+## Commands
+
+### Development
+```bash
+cd fe
+npm run dev # Start development server with Turbopack
+npm run build # Build for production
+npm run start # Start production server
+npm run lint # Run ESLint
+```
+
+## Architecture Overview
+
+This is a Next.js 15 application using the App Router pattern for a hadith collection website. The codebase is structured as a monorepo with the frontend application in the `/fe` directory.
+
+### Key Technologies
+- **Next.js 15.3.0** with App Router and React 19
+- **TypeScript** with strict mode
+- **Tailwind CSS v4** with CSS variables for theming
+- **shadcn/ui** components (New York style)
+- **Protocol Buffers** for API type definitions via ts-proto
+
+### Important Patterns
+
+1. **API Integration**: The application uses Protocol Buffers for API communication. API types are generated in `/fe/src/proto/` and should not be manually edited. Frontend types are defined separately in `/fe/src/types/` with mapping functions in `/fe/src/lib/`.
+
+2. **Component Structure**:
+ - UI components from shadcn/ui are in `/fe/src/components/ui/`
+ - Custom components are organized by feature (auth, custom)
+ - Use the `fe/*` import alias for cleaner imports
+
+3. **State Management**: The app uses React Context for:
+ - Authentication (`/fe/src/components/auth/auth-provider.tsx`)
+ - Static data (`/fe/src/contexts/static-data-context.tsx`)
+ - Telemetry (`/fe/src/components/telemetry-provider.tsx`)
+
+4. **Incremental Static Regeneration**: Static data (collections, etc.) is cached for 1 hour using ISR. See `/fe/src/lib/isr-data.ts`.
+
+5. **Styling**: The app uses Tailwind CSS v4 with CSS variables. Theme toggle is implemented via next-themes. Always use Tailwind classes and follow the existing component patterns.
+
+## Current Development Focus
+
+The codebase recently migrated from an older version and is being enhanced with:
+- Sidebar navigation for collections
+- Category tabs for organizing content
+- Improved UI/UX with shadcn/ui components
\ No newline at end of file