mirror of
https://github.com/Mail-0/Zero.git
synced 2026-07-01 08:16:28 +00:00
* feat: Integrate Google OAuth and SWR for mail threads * refactor: simplify mail list and navigation UI * feat: enhance mail parsing and UI with sender details and unread status * chore: update pnpm lock with new dependencies * refactor: organize imports in app-sidebar component * dynamic rendering data * chore: update .gitignore with IDE-specific exclusions * refactor(mail): update routing and component structure for mail views * refactor(mail): remove draft and junk routes; update folder names to proper terms in UI and API * refactor(mail): clean up imports, adjust API endpoints, and improve mail component structures for better clarity and performance * automatic search * YOP! * KIND OF lint. lmao. * feat:gmail connection WIP * feat(mail): add mail count endpoint and dynamic sidebar stats * feat(mail): add sanitization and dynamic provider support for email rendering * grim's changes * feat(mail): implement indexedDB caching for email threads and improve SWR configuration in layout component * feat(mail): enhance indexedDB operations for email threads caching and update SWR configuration for better data handling * idk * fix(mail): adjust email body processing and reverse cached email messages for consistent order * Fullscreen (#154) * FULL SCREEN!!! RAH!!! * Update mail-display.tsx * auth * email dispaly * gmail connection * env example resend add * fix: env issues * refactor: replace nanoid with randomUUID for ID generation in early access and update database schema to unify connection table * refactor: update API endpoint for email connections and modify driver initialization for async support across mail routes * feat: enhance Gmail OAuth flow and connection handling - Update Google OAuth driver with expanded scopes and improved token management - Modify callback route to handle user info extraction and connection creation more robustly - Add unique constraint to email in connection table - Improve error handling and logging in authentication process * fix: improve error responses and connection handling in Gmail integration - Enhance error messages when tokens or emails are missing. - Update handling of Gmail connections in the API and user-related components * feat: add default connection support and improve connection switching - Add `defaultConnectionId` to user schema - Implement PUT endpoint to set default connection for a user - Update mail API routes to use dynamic provider and connection ID - Enhance NavUser component with account switching functionality - Modify hooks and auth logic to support default connection selection * typo * feat: integrate thread hook for email data loading in MailDisplay component - Replace local email data state with useThread hook for improved loading management * fix: improve mail route authorization with connection validation - Add explicit check for connectionId in session - Update database query to filter by both userId and connectionId - Make connectionId optional in ParsedMessage type to support flexible connection handling * privacy and tos * linting --------- Co-authored-by: Aj Wazzan <x_1337@outlook.com> Co-authored-by: grim <75869731+vys69@users.noreply.github.com> Co-authored-by: BlankParticle <blankparticle@gmail.com>
167 lines
3.8 KiB
CSS
167 lines
3.8 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
:root {
|
|
--foreground-rgb: 0, 0, 0;
|
|
--background-start-rgb: 214, 219, 220;
|
|
--background-end-rgb: 255, 255, 255;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--foreground-rgb: 255, 255, 255;
|
|
--background-start-rgb: 0, 0, 0;
|
|
--background-end-rgb: 0, 0, 0;
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.text-balance {
|
|
text-wrap: balance;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 240 10% 3.9%;
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 240 10% 3.9%;
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 240 10% 3.9%;
|
|
--primary: 240 5.9% 10%;
|
|
--primary-foreground: 0 0% 98%;
|
|
--secondary: 240 4.8% 95.9%;
|
|
--secondary-foreground: 240 5.9% 10%;
|
|
--muted: 240 4.8% 95.9%;
|
|
--muted-foreground: 240 3.8% 46.1%;
|
|
--accent: 240 4.8% 95.9%;
|
|
--accent-foreground: 240 5.9% 10%;
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 0 0% 98%;
|
|
--border: 240 5.9% 90%;
|
|
--input: 240 5.9% 90%;
|
|
--ring: 240 10% 3.9%;
|
|
--chart-1: 12 76% 61%;
|
|
--chart-2: 173 58% 39%;
|
|
--chart-3: 197 37% 24%;
|
|
--chart-4: 43 74% 66%;
|
|
--chart-5: 27 87% 67%;
|
|
--radius: 0.5rem;
|
|
--sidebar-background: 0 0% 98%;
|
|
--sidebar-foreground: 240 5.3% 26.1%;
|
|
--sidebar-primary: 240 5.9% 10%;
|
|
--sidebar-primary-foreground: 0 0% 98%;
|
|
--sidebar-accent: 240 4.8% 95.9%;
|
|
--sidebar-accent-foreground: 240 5.9% 10%;
|
|
--sidebar-border: 220 13% 91%;
|
|
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
--icon-color: black;
|
|
}
|
|
.dark {
|
|
--background: 240 10% 3.9%;
|
|
--foreground: 0 0% 98%;
|
|
--card: 240 10% 3.9%;
|
|
--card-foreground: 0 0% 98%;
|
|
--popover: 240 10% 3.9%;
|
|
--popover-foreground: 0 0% 98%;
|
|
--primary: 0 0% 98%;
|
|
--primary-foreground: 240 5.9% 10%;
|
|
--secondary: 240 3.7% 15.9%;
|
|
--secondary-foreground: 0 0% 98%;
|
|
--muted: 240 3.7% 15.9%;
|
|
--muted-foreground: 240 5% 64.9%;
|
|
--accent: 240 3.7% 15.9%;
|
|
--accent-foreground: 0 0% 98%;
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 0 0% 98%;
|
|
--border: 240 3.7% 20%;
|
|
--input: 240 3.7% 15.9%;
|
|
--ring: 240 4.9% 83.9%;
|
|
--chart-1: 220 70% 50%;
|
|
--chart-2: 160 60% 45%;
|
|
--chart-3: 30 80% 55%;
|
|
--chart-4: 280 65% 60%;
|
|
--chart-5: 340 75% 55%;
|
|
--sidebar-background: 240 5.9% 10%;
|
|
--sidebar-foreground: 240 4.8% 95.9%;
|
|
--sidebar-primary: 224.3 76.3% 48%;
|
|
--sidebar-primary-foreground: 0 0% 100%;
|
|
--sidebar-accent: 240 3.7% 15.9%;
|
|
--sidebar-accent-foreground: 240 4.8% 95.9%;
|
|
--sidebar-border: 240 3.7% 15.9%;
|
|
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
--icon-color: currentColor;
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background font-sans text-foreground;
|
|
}
|
|
}
|
|
|
|
.skeleton {
|
|
* {
|
|
pointer-events: none !important;
|
|
}
|
|
|
|
*[class^="text-"] {
|
|
color: transparent;
|
|
@apply animate-pulse select-none rounded-md bg-foreground/20;
|
|
}
|
|
|
|
.skeleton-bg {
|
|
@apply bg-foreground/10;
|
|
}
|
|
|
|
.skeleton-div {
|
|
@apply animate-pulse bg-foreground/20;
|
|
}
|
|
}
|
|
|
|
.ProseMirror {
|
|
outline: none;
|
|
}
|
|
|
|
.cm-editor,
|
|
.cm-gutters {
|
|
@apply bg-background outline-none selection:bg-zinc-900 dark:bg-zinc-800 !important;
|
|
}
|
|
|
|
.ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground,
|
|
.ͼo.cm-selectionBackground,
|
|
.ͼo.cm-content::selection {
|
|
@apply bg-zinc-200 dark:bg-zinc-900 !important;
|
|
}
|
|
|
|
.cm-activeLine,
|
|
.cm-activeLineGutter {
|
|
@apply bg-transparent !important;
|
|
}
|
|
|
|
.cm-activeLine {
|
|
@apply rounded-r-sm !important;
|
|
}
|
|
|
|
.cm-lineNumbers {
|
|
@apply min-w-7;
|
|
}
|
|
|
|
.cm-foldGutter {
|
|
@apply min-w-3;
|
|
}
|
|
|
|
.cm-lineNumbers .cm-activeLineGutter {
|
|
@apply rounded-l-sm !important;
|
|
}
|
|
|
|
.suggestion-highlight {
|
|
@apply bg-blue-200 hover:bg-blue-300 dark:bg-blue-500/40 dark:text-blue-50 dark:hover:bg-blue-400/50;
|
|
}
|