if-emotion-ux/index.html
Danny Stocker 39f38d19ad feat: Add Export modal, Settings with Personality DNA, Privacy mode
UI Enhancements:
- Add Export button to header with download icon
- Export modal with 4 format options: PDF, Markdown, JSON, Plain Text
- Settings modal with Personality DNA toggle and API configuration
- Privacy mode (Off the Record) toggle in header
- Improved header layout with proper button spacing

Backend:
- Add Claude API server for backend integration
- Add RAG-enabled variant for future document retrieval

Technical:
- Add data-testid for Export button for testing
- Update dependencies for deployment compatibility

Deployed to Proxmox container 200 at 85.239.243.227

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 15:58:55 +01:00

110 lines
No EOL
3.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>if.emotion</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/@tailwindcss/typography@0.5.10/dist/typography.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
sergio: {
50: '#FFF8DC', // Cornsilk (lightest background)
100: '#FAF0E6', // Linen (surface)
200: '#F5DEB3', // Wheat (user messages)
300: '#FFE4B5', // Moccasin (AI messages)
400: '#CD853F', // Peru (accent)
500: '#D2691E', // Chocolate (secondary)
600: '#8B4513', // Saddle brown (primary)
700: '#654321', // Dark brown
800: '#2F4F4F', // Dark slate gray (text)
900: '#1C1C1C', // Almost black (emphasis)
},
privacy: {
active: '#8B0000', // Dark red (off-the-record indicator)
muted: '#A9A9A9', // Gray (inactive state)
}
},
fontFamily: {
'spanish': ['Merriweather', 'serif'], // Emotional warmth
'english': ['Inter', 'sans-serif'], // Technical clarity
'mono': ['JetBrains Mono', 'monospace'],
},
spacing: {
'conversation': '1.5rem',
'message': '1rem 1.5rem',
},
borderRadius: {
'message': '1.25rem',
},
animation: {
'fade-in': 'fadeIn 0.5s ease-out forwards',
'slide-up': 'slideUp 0.3s ease-out forwards',
},
keyframes: {
fadeIn: {
'0%': { opacity: '0' },
'100%': { opacity: '1' },
},
slideUp: {
'0%': { opacity: '0', transform: 'translateY(10px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
}
}
}
},
plugins: [
function({ addBase, theme }) {
addBase({
'body': {
backgroundColor: theme('colors.sergio.50'),
color: theme('colors.sergio.800'),
fontFamily: theme('fontFamily.english'),
},
})
}
]
}
</script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Merriweather:ital,wght@0,300;0,400;0,700;1,300;1,400&family=JetBrains+Mono&display=swap" rel="stylesheet">
<script type="importmap">
{
"imports": {
"react-dom/client": "https://aistudiocdn.com/react-dom@^19.2.0/client",
"react-dom": "https://aistudiocdn.com/react-dom@^19.2.0",
"react": "https://aistudiocdn.com/react@^19.2.0",
"react/jsx-runtime": "https://aistudiocdn.com/react@^19.2.0/jsx-runtime",
"react-markdown": "https://aistudiocdn.com/react-markdown@^9.0.1",
"lucide-react": "https://aistudiocdn.com/lucide-react@^0.344.0",
"jspdf": "https://aistudiocdn.com/jspdf@^2.5.1",
"react-dom/": "https://aistudiocdn.com/react-dom@^19.2.0/",
"react/": "https://aistudiocdn.com/react@^19.2.0/"
}
}
</script>
<style>
/* Custom scrollbar for minimalist look */
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: #D2691E; /* sergio-500 */
border-radius: 4px;
opacity: 0.5;
}
::-webkit-scrollbar-thumb:hover {
background: #8B4513;
}
</style>
</head>
<body>
<div id="root"></div>
<script type="module" src="/index.tsx"></script>
</body>
</html>