diff --git a/shaarli-pro/css/style.css b/shaarli-pro/css/style.css index 0ad2dac..b2329e7 100644 --- a/shaarli-pro/css/style.css +++ b/shaarli-pro/css/style.css @@ -2576,79 +2576,30 @@ select:focus { padding: 1.5rem 0 2.5rem; } -.daily-topbar { +.daily-nav-unified { display: flex; align-items: center; justify-content: space-between; - gap: 1rem; - margin-bottom: 1.5rem; - padding: 0.75rem 1rem; - border-radius: 16px; - background: var(--bg-card); + gap: 1.5rem; + padding: 1.1rem 1.4rem; + border-radius: 18px; + background: linear-gradient(135deg, rgba(15, 23, 42, 0.08), rgba(15, 23, 42, 0.03)); border: 1px solid var(--border); box-shadow: var(--shadow-sm); + margin-bottom: 1.6rem; + flex-wrap: wrap; } -.daily-topbar-left { +.daily-nav-left { display: inline-flex; align-items: center; - gap: 0.6rem; + gap: 0.65rem; font-weight: 600; color: var(--text-main); + white-space: nowrap; } -.daily-topbar-tabs { - display: inline-flex; - gap: 0.5rem; - background: var(--bg-body); - padding: 0.35rem; - border-radius: 999px; - border: 1px solid var(--border-light); -} - -.daily-tab { - padding: 0.45rem 0.95rem; - border-radius: 999px; - font-weight: 600; - font-size: 0.85rem; - color: var(--text-secondary); - transition: all 0.2s ease; - text-transform: uppercase; - letter-spacing: 0.04em; -} - -.daily-tab.is-active { - background: var(--primary); - color: #ffffff; - box-shadow: 0 8px 18px rgba(59, 130, 246, 0.35); -} - -.daily-tab.is-inactive:hover { - color: var(--text-main); - background: var(--bg-card-hover); -} - -.daily-toolbar { - display: flex; - align-items: center; - justify-content: space-between; - gap: 1rem; - margin-bottom: 1.75rem; - padding: 0.9rem 1.1rem; - border-radius: 16px; - background: linear-gradient(135deg, rgba(15, 23, 42, 0.05), rgba(15, 23, 42, 0.02)); - border: 1px solid var(--border); -} - -.daily-toolbar-label { - display: inline-flex; - align-items: center; - gap: 0.6rem; - font-weight: 600; - color: var(--text-main); -} - -.daily-toolbar-nav { +.daily-nav-center { display: flex; align-items: center; gap: 0.75rem; @@ -2657,56 +2608,352 @@ select:focus { flex-wrap: wrap; } -.daily-nav-btn { +.daily-nav-tabs { display: inline-flex; - align-items: center; - gap: 0.5rem; - padding: 0.5rem 0.95rem; - border-radius: 10px; - border: 1px solid var(--border); + gap: 0.4rem; + padding: 0.3rem; + border-radius: 999px; + background: var(--bg-body); + border: 1px solid var(--border-light); + white-space: nowrap; +} + +[data-theme="dark"] .daily-nav-tabs { + background: #0f172a; + border-color: #1f2937; +} + +.daily-tab { + padding: 0.45rem 1rem; + border-radius: 999px; + font-weight: 700; + font-size: 0.78rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-secondary); + transition: all 0.2s ease; + border: 1px solid transparent; +} + +.daily-tab.is-active { + background: var(--primary); + color: #ffffff; + box-shadow: 0 12px 24px rgba(59, 130, 246, 0.3); +} + +.daily-tab.is-inactive:hover { + background: var(--bg-card-hover); + color: var(--text-main); + border-color: var(--border-light); +} + +.daily-date-pill { + border: 1px dashed var(--border); background: var(--bg-card); color: var(--text-main); font-weight: 600; - font-size: 0.85rem; + padding: 0.4rem 1.1rem; + border-radius: 999px; + cursor: pointer; + font-size: 0.9rem; transition: all 0.2s ease; } -.daily-nav-btn:hover { +.daily-date-pill:hover { background: var(--bg-card-hover); - transform: translateY(-1px); -} - -.daily-nav-btn[disabled] { - opacity: 0.5; - cursor: not-allowed; - transform: none; -} - -.daily-current-date { - font-weight: 700; - color: var(--text-main); - padding: 0.35rem 0.9rem; - border-radius: 999px; - background: var(--bg-card); - border: 1px dashed var(--border); - font-size: 0.9rem; } .daily-calendar-btn { display: inline-flex; align-items: center; gap: 0.5rem; - padding: 0.5rem 0.95rem; + padding: 0.45rem 1.05rem; border-radius: 999px; - background: var(--primary-light); - color: var(--primary); + border: 1px solid var(--border-light); + background: var(--bg-card); + color: var(--text-main); font-weight: 600; font-size: 0.85rem; + cursor: pointer; + transition: all 0.2s ease; +} + +[data-theme="dark"] .daily-calendar-btn { + background: #0f172a; + border-color: #1f2937; + color: #e2e8f0; +} + +[data-theme="dark"] .daily-calendar-btn:hover { + background: #111827; + border-color: #334155; } .daily-calendar-btn:hover { - background: rgba(59, 130, 246, 0.2); - color: var(--primary-hover); + background: var(--bg-card-hover); + color: var(--text-main); + border-color: var(--border); +} + +.daily-calendar-wrap { + position: relative; +} + +.daily-calendar-panel { + position: absolute; + top: calc(100% + 12px); + right: 0; + z-index: 120; + display: none; +} + +.daily-calendar-panel.is-open { + display: block; +} + +.daily-calendar-shell { + display: flex; + width: min(640px, 92vw); + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 20px; + box-shadow: 0 25px 60px rgba(15, 23, 42, 0.35); + overflow: hidden; +} + +.daily-calendar-sidebar { + width: 190px; + padding: 1.1rem; + background: var(--bg-body); + border-right: 1px solid var(--border-light); + display: flex; + flex-direction: column; + gap: 0.6rem; +} + +.daily-calendar-title { + font-size: 0.7rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-muted); + margin-bottom: 0.5rem; +} + +.daily-calendar-shortcut { + text-align: left; + padding: 0.5rem 0.7rem; + border-radius: 10px; + border: 1px solid transparent; + background: transparent; + color: var(--text-secondary); + font-size: 0.85rem; + cursor: pointer; + transition: all 0.2s ease; +} + +.daily-calendar-shortcut:hover { + background: var(--bg-card-hover); + color: var(--text-main); + border-color: var(--border); +} + +.daily-calendar-summary { + margin-top: auto; + padding-top: 1rem; + border-top: 1px solid var(--border-light); + font-size: 0.75rem; + color: var(--text-muted); + display: grid; + gap: 0.4rem; +} + +.daily-calendar-summary strong { + display: block; + color: var(--text-main); + font-size: 0.85rem; + margin-top: 0.2rem; +} + +.daily-calendar-main { + flex: 1; + padding: 1.5rem; + display: flex; + flex-direction: column; +} + +.daily-calendar-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-bottom: 1rem; +} + +.daily-calendar-nav { + width: 36px; + height: 36px; + border-radius: 12px; + border: 1px solid var(--border); + background: var(--bg-body); + color: var(--text-secondary); + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + transition: all 0.2s ease; +} + +.daily-calendar-nav:hover { + color: var(--text-main); + background: var(--bg-card-hover); +} + +.daily-calendar-month { + font-weight: 700; + color: var(--text-main); + font-size: 1rem; + text-transform: capitalize; +} + +.daily-calendar-weekdays, +.daily-calendar-grid { + display: grid; + grid-template-columns: repeat(7, minmax(0, 1fr)); + gap: 0.35rem; + text-align: center; +} + +.daily-calendar-weekdays { + margin-bottom: 0.5rem; + font-size: 0.7rem; + text-transform: uppercase; + color: var(--text-muted); + letter-spacing: 0.05em; +} + +/* --- Styles Calendrier React-like --- */ +.daily-calendar-day { + width: 40px; + height: 40px; + border-radius: 999px; + border: none; + background: transparent; + color: var(--text-secondary); + font-weight: 600; + font-size: 0.9rem; + cursor: pointer; + transition: all 0.15s ease; + display: inline-flex; + align-items: center; + justify-content: center; +} + +/* Hover: cercle visible comme dans React */ +.daily-calendar-day:hover { + background: rgba(59, 130, 246, 0.18); + color: var(--text-main); + border-radius: 999px; + box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.25); +} + +[data-theme="dark"] .daily-calendar-day:hover { + background: rgba(99, 102, 241, 0.25); + color: #ffffff; + box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.35); +} + +/* In range: fond bleu semi-transparent, pas d'arrondi */ +.daily-calendar-day.is-in-range { + background: rgba(59, 130, 246, 0.16); + color: var(--primary); + border-radius: 0; +} + +[data-theme="dark"] .daily-calendar-day.is-in-range { + background: rgba(59, 130, 246, 0.25); + color: #60a5fa; +} + +/* Start/End: fond bleu plein avec glow */ +.daily-calendar-day.is-range-start, +.daily-calendar-day.is-range-end { + background: var(--primary); + color: #ffffff; + box-shadow: 0 0 15px rgba(59, 130, 246, 0.5); +} + +[data-theme="dark"] .daily-calendar-day.is-range-start, +[data-theme="dark"] .daily-calendar-day.is-range-end { + background: #2563eb; + box-shadow: 0 0 15px rgba(37, 99, 235, 0.5); +} + +/* Single date selection: cercle complet */ +.daily-calendar-day.is-range-single { + border-radius: 999px; +} + +/* Range start: arrondi gauche seulement */ +.daily-calendar-day.is-range-start:not(.is-range-end) { + border-radius: 999px 0 0 999px; +} + +/* Range end: arrondi droite seulement */ +.daily-calendar-day.is-range-end:not(.is-range-start) { + border-radius: 0 999px 999px 0; +} + +/* Hover sur in-range/start/end: pas de shadow supplémentaire */ +.daily-calendar-day.is-in-range:hover, +.daily-calendar-day.is-range-start:hover, +.daily-calendar-day.is-range-end:hover { + box-shadow: none; +} + +.daily-calendar-footer { + margin-top: auto; + padding-top: 1rem; + border-top: 1px solid var(--border-light); + display: flex; + justify-content: flex-end; + gap: 0.6rem; +} + +.daily-calendar-cancel, +.daily-calendar-apply { + padding: 0.45rem 1rem; + border-radius: 10px; + border: 1px solid var(--border); + background: var(--bg-body); + color: var(--text-secondary); + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease; +} + +.daily-calendar-cancel:hover { + background: var(--bg-card-hover); + color: var(--text-main); +} + +.daily-calendar-apply { + background: var(--primary); + border-color: transparent; + color: #ffffff; + box-shadow: 0 12px 24px rgba(59, 130, 246, 0.25); +} + +.daily-calendar-apply:disabled { + opacity: 0.6; + cursor: not-allowed; + box-shadow: none; +} + +.daily-calendar-wrap.is-open .daily-calendar-btn { + background: rgba(59, 130, 246, 0.16); + color: var(--primary); + border-color: rgba(59, 130, 246, 0.35); } .daily-grid { @@ -2782,36 +3029,11 @@ select:focus { font-weight: 500; } -[data-theme="dark"] .daily-topbar, -[data-theme="dark"] .daily-toolbar { - background: #111827; +[data-theme="dark"] .daily-nav-unified { + background: linear-gradient(135deg, rgba(15, 23, 42, 0.8), rgba(15, 23, 42, 0.55)); border-color: #1f2937; } -[data-theme="dark"] .daily-topbar-tabs { - background: #0f172a; - border-color: #1f2937; -} - -[data-theme="dark"] .daily-tab.is-active { - box-shadow: 0 10px 20px rgba(96, 165, 250, 0.35); -} - -[data-theme="dark"] .daily-calendar-btn { - background: rgba(96, 165, 250, 0.15); - color: #cfe1ff; -} - -[data-theme="dark"] .daily-card { - background: #101a2c; - border-color: #1e2a44; - box-shadow: 0 18px 26px rgba(4, 12, 26, 0.45); -} - -[data-theme="dark"] .daily-item-footer { - border-top-color: #1e2a44; -} - @media (max-width: 1200px) { .daily-grid { column-count: 3; @@ -2823,14 +3045,8 @@ select:focus { column-count: 2; } - .daily-toolbar { - flex-direction: column; - align-items: flex-start; - } - - .daily-toolbar-nav { - width: 100%; - justify-content: flex-start; + .daily-nav-unified { + justify-content: center; } } @@ -2839,14 +3055,8 @@ select:focus { column-count: 1; } - .daily-topbar { - flex-direction: column; - align-items: flex-start; - } - - .daily-topbar-tabs { - width: 100%; - justify-content: space-between; + .daily-nav-unified { + padding: 1rem; } } diff --git a/shaarli-pro/daily.html b/shaarli-pro/daily.html index 645b88e..04f31d7 100644 --- a/shaarli-pro/daily.html +++ b/shaarli-pro/daily.html @@ -8,12 +8,67 @@ {include="page.header"}