Spaces:
Sleeping
Sleeping
Changed to sepia theme
Browse files- README.md +11 -0
- docs/DEVELOPER.md +51 -0
- public/theme.json +64 -0
- pyproject.toml +1 -1
- uv.lock +1 -1
README.md
CHANGED
|
@@ -15,6 +15,17 @@ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-
|
|
| 15 |
|
| 16 |
An agentic RAG system for the PsTuts dataset that provides AI-powered answers to Adobe Photoshop questions using video tutorial transcripts.
|
| 17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 18 |
## π Getting Started
|
| 19 |
|
| 20 |
1. Install dependencies:
|
|
|
|
| 15 |
|
| 16 |
An agentic RAG system for the PsTuts dataset that provides AI-powered answers to Adobe Photoshop questions using video tutorial transcripts.
|
| 17 |
|
| 18 |
+
## π¨ Visual Theme
|
| 19 |
+
|
| 20 |
+
The application features a beautiful **sepia-toned color scheme** that gives it a vintage, artistic feel perfect for Adobe Photoshop tutorials:
|
| 21 |
+
|
| 22 |
+
- π
**Light Theme** (default): Warm cream and tan colors reminiscent of old photography
|
| 23 |
+
- π **Dark Theme**: Rich coffee and amber tones for comfortable nighttime usage
|
| 24 |
+
- πΌοΈ **Sepia Filter**: Subtle sepia treatment on images for visual consistency
|
| 25 |
+
- β‘ **Smooth Transitions**: Elegant animations when switching between themes
|
| 26 |
+
|
| 27 |
+
Users can toggle between light and dark variants using the theme switcher in the interface.
|
| 28 |
+
|
| 29 |
## π Getting Started
|
| 30 |
|
| 31 |
1. Install dependencies:
|
docs/DEVELOPER.md
CHANGED
|
@@ -134,6 +134,57 @@ This feature enables controlled access to external resources while maintaining a
|
|
| 134 |
- **`evaluator_utils.py`**: RAG evaluation utilities using RAGAS framework
|
| 135 |
- **Notebook-based evaluation**: `evaluate_rag.ipynb` for systematic testing
|
| 136 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 137 |
## π Running the Applications
|
| 138 |
|
| 139 |
### Multi-Agent RAG (Recommended) π€
|
|
|
|
| 134 |
- **`evaluator_utils.py`**: RAG evaluation utilities using RAGAS framework
|
| 135 |
- **Notebook-based evaluation**: `evaluate_rag.ipynb` for systematic testing
|
| 136 |
|
| 137 |
+
## π¨ UI Customization & Theming
|
| 138 |
+
|
| 139 |
+
### Sepia Theme Implementation πΌοΈ
|
| 140 |
+
|
| 141 |
+
The application features a custom **sepia-toned color scheme** implemented through CSS variables and theme switching:
|
| 142 |
+
|
| 143 |
+
#### π Theme Files
|
| 144 |
+
- **`public/sepia-theme.css`**: Custom CSS file with sepia color schemes
|
| 145 |
+
- **`.chainlit/config.toml`**: Configuration enabling custom CSS and default theme
|
| 146 |
+
|
| 147 |
+
#### π¨ Color Palette Design
|
| 148 |
+
```css
|
| 149 |
+
/* Light Sepia Colors */
|
| 150 |
+
--sepia-lightest: #faf6f0 /* Warm cream background */
|
| 151 |
+
--sepia-lighter: #f4ede1 /* Secondary background */
|
| 152 |
+
--sepia-light: #e8d5b7 /* Tertiary background */
|
| 153 |
+
--sepia-medium: #d4b896 /* Border and accent */
|
| 154 |
+
--sepia-dark: #c19a6b /* Darker accents */
|
| 155 |
+
--sepia-darker: #a67c52 /* Strong borders */
|
| 156 |
+
--sepia-darkest: #8b5a3c /* Deep contrast */
|
| 157 |
+
|
| 158 |
+
/* Dark Sepia Colors */
|
| 159 |
+
--sepia-dark-bg: #2c1810 /* Rich coffee background */
|
| 160 |
+
--sepia-dark-bg-secondary: #3a2318 /* Warmer secondary */
|
| 161 |
+
--sepia-dark-bg-tertiary: #4a2d20 /* Amber tertiary */
|
| 162 |
+
```
|
| 163 |
+
|
| 164 |
+
#### π§ Technical Implementation
|
| 165 |
+
- **CSS Variables**: Dynamic theming with `--custom-property` pattern
|
| 166 |
+
- **Theme Detection**: `[data-theme="light"]` and `[data-theme="dark"]` selectors
|
| 167 |
+
- **Smooth Transitions**: `transition` properties for seamless theme switching
|
| 168 |
+
- **Component Styling**: Custom styling for chat messages, buttons, inputs, sidebar
|
| 169 |
+
- **Image Treatment**: Subtle `filter: sepia(20%)` on images for visual consistency
|
| 170 |
+
|
| 171 |
+
#### βοΈ Configuration Setup
|
| 172 |
+
```toml
|
| 173 |
+
# .chainlit/config.toml
|
| 174 |
+
[UI]
|
| 175 |
+
default_theme = "light" # Set light theme as default
|
| 176 |
+
custom_css = "/public/sepia-theme.css" # Enable custom styling
|
| 177 |
+
```
|
| 178 |
+
|
| 179 |
+
#### π― Features
|
| 180 |
+
- **Responsive Design**: Adapts to both light and dark preferences
|
| 181 |
+
- **Accessibility**: Maintains sufficient contrast ratios in both themes
|
| 182 |
+
- **Visual Cohesion**: Unified sepia treatment across all UI elements
|
| 183 |
+
- **Performance**: CSS-only implementation with minimal runtime overhead
|
| 184 |
+
- **User Control**: Native Chainlit theme switcher toggles between variants
|
| 185 |
+
|
| 186 |
+
The sepia theme creates a warm, nostalgic atmosphere perfect for Adobe Photoshop tutorials, giving the application a distinctive visual identity that stands out from standard blue/gray interfaces. πΈβ¨
|
| 187 |
+
|
| 188 |
## π Running the Applications
|
| 189 |
|
| 190 |
### Multi-Agent RAG (Recommended) π€
|
public/theme.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"custom_fonts": [],
|
| 3 |
+
"variables": {
|
| 4 |
+
"light": {
|
| 5 |
+
"--background": "30 40% 92%",
|
| 6 |
+
"--foreground": "30 90% 15%",
|
| 7 |
+
"--card": "30 30% 85%",
|
| 8 |
+
"--card-foreground": "30 90% 15%",
|
| 9 |
+
"--popover": "30 40% 92%",
|
| 10 |
+
"--popover-foreground": "30 90% 15%",
|
| 11 |
+
"--primary": "25 75% 45%",
|
| 12 |
+
"--primary-foreground": "30 40% 95%",
|
| 13 |
+
"--secondary": "35 25% 75%",
|
| 14 |
+
"--secondary-foreground": "30 90% 15%",
|
| 15 |
+
"--muted": "30 20% 80%",
|
| 16 |
+
"--muted-foreground": "30 40% 35%",
|
| 17 |
+
"--accent": "35 35% 70%",
|
| 18 |
+
"--accent-foreground": "30 90% 15%",
|
| 19 |
+
"--destructive": "0 84% 60%",
|
| 20 |
+
"--destructive-foreground": "30 40% 95%",
|
| 21 |
+
"--border": "30 25% 75%",
|
| 22 |
+
"--input": "30 25% 75%",
|
| 23 |
+
"--ring": "25 75% 45%",
|
| 24 |
+
"--radius": "0.75rem",
|
| 25 |
+
"--sidebar-background": "35 25% 82%",
|
| 26 |
+
"--sidebar-foreground": "30 60% 25%",
|
| 27 |
+
"--sidebar-primary": "30 80% 20%",
|
| 28 |
+
"--sidebar-primary-foreground": "30 40% 95%",
|
| 29 |
+
"--sidebar-accent": "35 20% 88%",
|
| 30 |
+
"--sidebar-accent-foreground": "30 80% 20%",
|
| 31 |
+
"--sidebar-border": "30 25% 70%",
|
| 32 |
+
"--sidebar-ring": "25 75% 45%"
|
| 33 |
+
},
|
| 34 |
+
"dark": {
|
| 35 |
+
"--background": "30 60% 8%",
|
| 36 |
+
"--foreground": "30 40% 85%",
|
| 37 |
+
"--card": "30 50% 12%",
|
| 38 |
+
"--card-foreground": "30 40% 85%",
|
| 39 |
+
"--popover": "30 50% 12%",
|
| 40 |
+
"--popover-foreground": "30 40% 85%",
|
| 41 |
+
"--primary": "25 75% 55%",
|
| 42 |
+
"--primary-foreground": "30 60% 8%",
|
| 43 |
+
"--secondary": "30 40% 18%",
|
| 44 |
+
"--secondary-foreground": "30 40% 85%",
|
| 45 |
+
"--muted": "30 35% 20%",
|
| 46 |
+
"--muted-foreground": "30 25% 65%",
|
| 47 |
+
"--accent": "30 30% 25%",
|
| 48 |
+
"--accent-foreground": "30 40% 85%",
|
| 49 |
+
"--destructive": "0 62% 30%",
|
| 50 |
+
"--destructive-foreground": "30 40% 85%",
|
| 51 |
+
"--border": "30 35% 20%",
|
| 52 |
+
"--input": "30 35% 20%",
|
| 53 |
+
"--ring": "25 75% 55%",
|
| 54 |
+
"--sidebar-background": "30 70% 6%",
|
| 55 |
+
"--sidebar-foreground": "30 30% 80%",
|
| 56 |
+
"--sidebar-primary": "25 65% 50%",
|
| 57 |
+
"--sidebar-primary-foreground": "30 60% 8%",
|
| 58 |
+
"--sidebar-accent": "30 60% 10%",
|
| 59 |
+
"--sidebar-accent-foreground": "30 30% 80%",
|
| 60 |
+
"--sidebar-border": "30 40% 15%",
|
| 61 |
+
"--sidebar-ring": "25 75% 55%"
|
| 62 |
+
}
|
| 63 |
+
}
|
| 64 |
+
}
|
pyproject.toml
CHANGED
|
@@ -15,7 +15,7 @@ dependencies = [
|
|
| 15 |
"langgraph>=0.4.8",
|
| 16 |
"qdrant-client>=1.8.0",
|
| 17 |
# API integration
|
| 18 |
-
"chainlit
|
| 19 |
"requests>=2.31.0",
|
| 20 |
"python-dotenv>=0.9.9",
|
| 21 |
# Utilities
|
|
|
|
| 15 |
"langgraph>=0.4.8",
|
| 16 |
"qdrant-client>=1.8.0",
|
| 17 |
# API integration
|
| 18 |
+
"chainlit",
|
| 19 |
"requests>=2.31.0",
|
| 20 |
"python-dotenv>=0.9.9",
|
| 21 |
# Utilities
|
uv.lock
CHANGED
|
@@ -3806,7 +3806,7 @@ requires-dist = [
|
|
| 3806 |
{ name = "aiofiles", specifier = ">=23.1.0" },
|
| 3807 |
{ name = "bidict", specifier = ">=0.23.1" },
|
| 3808 |
{ name = "black", marker = "extra == 'dev'", specifier = ">=22.0.0" },
|
| 3809 |
-
{ name = "chainlit"
|
| 3810 |
{ name = "datasets", specifier = ">=3.6.0" },
|
| 3811 |
{ name = "deptry", marker = "extra == 'dev'", specifier = ">=0.23.0" },
|
| 3812 |
{ name = "fastapi", marker = "extra == 'web'", specifier = ">=0.115.3,<0.116" },
|
|
|
|
| 3806 |
{ name = "aiofiles", specifier = ">=23.1.0" },
|
| 3807 |
{ name = "bidict", specifier = ">=0.23.1" },
|
| 3808 |
{ name = "black", marker = "extra == 'dev'", specifier = ">=22.0.0" },
|
| 3809 |
+
{ name = "chainlit" },
|
| 3810 |
{ name = "datasets", specifier = ">=3.6.0" },
|
| 3811 |
{ name = "deptry", marker = "extra == 'dev'", specifier = ">=0.23.0" },
|
| 3812 |
{ name = "fastapi", marker = "extra == 'web'", specifier = ">=0.115.3,<0.116" },
|