diff --git a/public/css/layout.css b/public/css/layout.css index b169d12..1602f71 100644 --- a/public/css/layout.css +++ b/public/css/layout.css @@ -1,10 +1,18 @@ -/* Layout principal de l'application */ +/* Layout - Structure principale */ + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} body { font-family: var(--font-family); - background: var(--color-background); - color: var(--color-text-primary); font-size: var(--font-size-base); + color: var(--color-text-primary); + background: var(--color-background); + line-height: 1.6; + min-height: 100vh; } /* Header */ @@ -16,114 +24,330 @@ body { height: var(--header-height); background: var(--color-card); border-bottom: 1px solid var(--color-border); - z-index: 100; box-shadow: var(--shadow-sm); + z-index: var(--z-header); } -.header-content { +.header-container { + max-width: var(--max-width); height: 100%; - max-width: 100%; - padding: 0 var(--spacing-lg); + margin: 0 auto; + padding: 0 var(--spacing-xl); display: flex; align-items: center; - justify-content: space-between; - gap: var(--spacing-lg); + gap: var(--spacing-xl); } -.header-logo h1 { - font-size: var(--font-size-xl); - font-weight: bold; +/* Logo */ +.logo { + display: flex; + align-items: center; + gap: var(--spacing-md); + flex-shrink: 0; +} + +.logo-icon { + width: 32px; + height: 32px; color: var(--color-accent); } -.header-search { +.logo-text { + font-size: var(--font-size-xl); + font-weight: var(--font-weight-bold); + color: var(--color-accent); + letter-spacing: -0.5px; +} + +/* Search */ +.search-container { flex: 1; - max-width: 600px; + max-width: 500px; position: relative; } -.header-user { - position: relative; +.search-icon { + position: absolute; + left: var(--spacing-md); + top: 50%; + transform: translateY(-50%); + width: 18px; + height: 18px; + color: var(--color-text-secondary); + pointer-events: none; } -/* Main container */ -.main-container { +.search-input { + width: 100%; + height: 44px; + padding: 0 var(--spacing-xl) 0 44px; + border: 1px solid var(--color-border); + border-radius: var(--radius-full); + font-size: var(--font-size-base); + background: var(--color-background); + color: var(--color-text-primary); + transition: all var(--transition-base); +} + +.search-input:focus { + outline: none; + border-color: var(--color-accent); + background: var(--color-card); + box-shadow: var(--shadow-sm); +} + +.search-clear { + position: absolute; + right: var(--spacing-md); + top: 50%; + transform: translateY(-50%); + width: 24px; + height: 24px; + padding: 4px; + border: none; + background: transparent; + cursor: pointer; + color: var(--color-text-secondary); + border-radius: 50%; + transition: all var(--transition-fast); +} + +.search-clear:hover { + background: var(--color-hover); + color: var(--color-text-primary); +} + +.search-clear svg { + width: 100%; + height: 100%; +} + +/* User Menu */ +.user-menu { + position: relative; + flex-shrink: 0; +} + +.user-button { display: flex; + align-items: center; + gap: var(--spacing-sm); + padding: var(--spacing-sm) var(--spacing-md); + border: 1px solid var(--color-border); + border-radius: var(--radius-full); + background: var(--color-card); + color: var(--color-text-primary); + font-size: var(--font-size-sm); + font-weight: var(--font-weight-medium); + cursor: pointer; + transition: all var(--transition-base); +} + +.user-button:hover { + background: var(--color-hover); + box-shadow: var(--shadow-sm); +} + +.user-icon { + width: 20px; + height: 20px; +} + +.dropdown-arrow { + width: 16px; + height: 16px; + transition: transform var(--transition-base); +} + +.user-menu:hover .dropdown-arrow { + transform: rotate(180deg); +} + +.user-dropdown { + position: absolute; + top: calc(100% + var(--spacing-sm)); + right: 0; + min-width: 200px; + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + box-shadow: var(--shadow-lg); + opacity: 0; + visibility: hidden; + transform: translateY(-10px); + transition: all var(--transition-base); + z-index: var(--z-dropdown); +} + +.user-menu:hover .user-dropdown { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.dropdown-item { + display: flex; + align-items: center; + gap: var(--spacing-md); + width: 100%; + padding: var(--spacing-md) var(--spacing-lg); + border: none; + background: transparent; + color: var(--color-text-primary); + font-size: var(--font-size-sm); + font-weight: var(--font-weight-medium); + text-align: left; + cursor: pointer; + transition: background var(--transition-fast); +} + +.dropdown-item:first-child { + border-radius: var(--radius-md) var(--radius-md) 0 0; +} + +.dropdown-item:last-child { + border-radius: 0 0 var(--radius-md) var(--radius-md); +} + +.dropdown-item:hover { + background: var(--color-hover); +} + +.dropdown-item svg { + width: 18px; + height: 18px; +} + +/* Main Content */ +.main-content { margin-top: var(--header-height); min-height: calc(100vh - var(--header-height)); + padding: var(--spacing-2xl) var(--spacing-xl); } -/* Notes area */ -.notes-area { - flex: 1; - padding: var(--spacing-xl); - overflow-y: auto; - position: relative; +.content-container { + max-width: var(--max-width); + margin: 0 auto; + display: grid; + grid-template-columns: 1fr var(--todo-box-width); + gap: var(--spacing-xl); + align-items: start; +} + +/* Notes Section */ +.notes-section { + min-width: 0; +} + +.section-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--spacing-lg); +} + +.section-title { + font-size: var(--font-size-2xl); + font-weight: var(--font-weight-bold); + color: var(--color-text-primary); +} + +.btn-new-note { + display: flex; + align-items: center; + gap: var(--spacing-sm); + padding: var(--spacing-md) var(--spacing-lg); + border: none; + border-radius: var(--radius-md); + background: var(--color-accent); + color: white; + font-size: var(--font-size-sm); + font-weight: var(--font-weight-semibold); + cursor: pointer; + transition: all var(--transition-base); + box-shadow: var(--shadow-sm); +} + +.btn-new-note:hover { + background: var(--color-accent-hover); + box-shadow: var(--shadow-md); + transform: translateY(-1px); +} + +.btn-new-note svg { + width: 18px; + height: 18px; } .notes-grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(var(--note-card-width), 1fr)); + grid-template-columns: repeat(auto-fill, minmax(var(--note-width), 1fr)); gap: var(--spacing-lg); - max-width: 1400px; - margin: 0 auto; } -/* Todo sidebar */ -.todo-sidebar { +/* Todo Box */ +.todo-box { position: sticky; - top: var(--header-height); - right: 0; - width: var(--sidebar-width); - height: calc(100vh - var(--header-height)); - background: var(--color-sidebar); - border-left: 1px solid var(--color-border); - padding: var(--spacing-lg); - overflow-y: auto; - flex-shrink: 0; + top: calc(var(--header-height) + var(--spacing-xl)); + background: var(--color-card); + border: 1px solid var(--color-border); + border-radius: var(--radius-lg); + padding: var(--spacing-xl); + box-shadow: var(--shadow-md); + max-height: calc(100vh - var(--header-height) - var(--spacing-2xl) * 2); + display: flex; + flex-direction: column; +} + +.todo-box-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--spacing-lg); +} + +.todo-box-title { + font-size: var(--font-size-xl); + font-weight: var(--font-weight-bold); + color: var(--color-text-primary); +} + +.todo-counter { + font-size: var(--font-size-sm); + color: var(--color-text-secondary); + font-weight: var(--font-weight-medium); } /* Responsive */ -@media (max-width: 1024px) { - .notes-grid { - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); +@media (max-width: 1200px) { + .content-container { + grid-template-columns: 1fr; } - .todo-sidebar { - width: 320px; + .todo-box { + position: static; + max-height: none; } } @media (max-width: 768px) { - .main-container { - flex-direction: column; - } - - .header-content { + .header-container { padding: 0 var(--spacing-md); - gap: var(--spacing-sm); } - .header-logo h1 { - font-size: var(--font-size-lg); + .search-container { + max-width: 300px; } - .header-search { - max-width: 400px; + .logo-text { + display: none; } - .notes-area { - padding: var(--spacing-md); + .main-content { + padding: var(--spacing-lg) var(--spacing-md); } .notes-grid { grid-template-columns: 1fr; } - - .todo-sidebar { - position: static; - width: 100%; - height: auto; - max-height: 400px; - } } diff --git a/public/css/variables.css b/public/css/variables.css index 30b8c4b..34a160f 100644 --- a/public/css/variables.css +++ b/public/css/variables.css @@ -1,26 +1,38 @@ -/* Variables CSS globales */ +/* Variables CSS globales - Thème clair moderne */ :root { /* Couleurs principales */ - --color-background: #FAFBFC; + --color-background: #F8F9FA; --color-card: #FFFFFF; - --color-sidebar: #F8F9FA; - --color-accent: #3B82F6; - --color-accent-hover: #2563EB; - --color-text-primary: #1F2937; - --color-text-secondary: #6B7280; - --color-border: #E5E7EB; - --color-success: #10B981; - --color-danger: #EF4444; + --color-accent: #000000; + --color-accent-hover: #333333; + --color-text-primary: #000000; + --color-text-secondary: #6C757D; + --color-border: #DEE2E6; + --color-success: #28A745; + --color-danger: #DC3545; + --color-warning: #FFC107; + --color-info: #17A2B8; + + /* Couleurs spécifiques */ + --color-hover: #F1F3F5; + --color-active: #E9ECEF; + --color-disabled: #ADB5BD; /* Typographie */ - --font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; - --font-size-xs: 12px; - --font-size-sm: 14px; - --font-size-base: 16px; - --font-size-lg: 18px; - --font-size-xl: 24px; - --font-size-2xl: 32px; + --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + --font-size-xs: 11px; + --font-size-sm: 13px; + --font-size-base: 15px; + --font-size-lg: 17px; + --font-size-xl: 20px; + --font-size-2xl: 28px; + --font-size-3xl: 36px; + + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; /* Spacing */ --spacing-xs: 4px; @@ -28,26 +40,43 @@ --spacing-md: 16px; --spacing-lg: 24px; --spacing-xl: 32px; + --spacing-2xl: 48px; + --spacing-3xl: 64px; /* Border radius */ - --radius-sm: 4px; - --radius-md: 8px; - --radius-lg: 12px; - --radius-xl: 16px; + --radius-sm: 6px; + --radius-md: 10px; + --radius-lg: 14px; + --radius-xl: 20px; + --radius-full: 9999px; - /* Shadows */ - --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08); - --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1); - --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12); - --shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.3); + /* Shadows - Style moderne élégant */ + --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04); + --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.06); + --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); + --shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.1); + --shadow-xl: 0 16px 40px rgba(0, 0, 0, 0.12); + --shadow-2xl: 0 24px 60px rgba(0, 0, 0, 0.15); + + /* Shadow hover effects */ + --shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.12); + --shadow-active: 0 2px 8px rgba(0, 0, 0, 0.1); /* Transitions */ - --transition-fast: 0.15s ease; - --transition-base: 0.2s ease; - --transition-slow: 0.3s ease; + --transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1); + --transition-base: 0.25s cubic-bezier(0.4, 0, 0.2, 1); + --transition-slow: 0.35s cubic-bezier(0.4, 0, 0.2, 1); /* Dimensions */ - --header-height: 60px; - --sidebar-width: 400px; - --note-card-width: 350px; + --header-height: 70px; + --max-width: 1400px; + --note-width: 320px; + --note-expanded-width: 680px; + --todo-box-width: 340px; + + /* Z-index */ + --z-header: 100; + --z-modal: 200; + --z-dropdown: 150; + --z-tooltip: 250; } diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..108ae06 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,23 @@ + diff --git a/public/index.html b/public/index.html index 838f31d..540e372 100644 --- a/public/index.html +++ b/public/index.html @@ -3,7 +3,10 @@
-