diff options
Diffstat (limited to 'react/08-auth-with-context/src/index.css')
| -rw-r--r-- | react/08-auth-with-context/src/index.css | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/react/08-auth-with-context/src/index.css b/react/08-auth-with-context/src/index.css new file mode 100644 index 0000000..0e27e33 --- /dev/null +++ b/react/08-auth-with-context/src/index.css @@ -0,0 +1,127 @@ +/* 1. Global Resets & Variables */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +:root { + --primary-color: #2563eb; + --text-color: #1f2937; + --bg-color: #ffffff; + --hover-bg: #f3f4f6; + --transition: all 0.3s ease; +} + +body { + font-family: system-ui, -apple-system, sans-serif; + background-color: #f9fafb; +} + +/* 2. Navbar Layout */ +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; + background-color: var(--bg-color); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + position: sticky; + top: 0; + z-index: 100; +} + +/* 3. Logo Styles */ +.nav-logo { + font-size: 1.5rem; + font-weight: 700; + color: var(--primary-color); + text-decoration: none; +} + +/* 4. Desktop Menu Items */ +.nav-menu { + display: flex; + align-items: center; + gap: 1.5rem; + list-style: none; +} + +.nav-link { + text-decoration: none; + color: var(--text-color); + font-weight: 500; + font-size: 1rem; + padding: 0.5rem 1rem; + border-radius: 0.375rem; + transition: var(--transition); +} + +.nav-link:hover, +.nav-link.active { + color: var(--primary-color); + background-color: var(--hover-bg); +} + +/* 5. Mobile Layout (Hidden Elements by Default) */ +.nav-toggle { + display: none; +} + +.hamburger { + display: none; + flex-direction: column; + gap: 5px; + cursor: pointer; +} + +.hamburger span { + width: 25px; + height: 3px; + background-color: var(--text-color); + border-radius: 2px; + transition: var(--transition); +} + +/* 6. Responsive Media Query */ +@media (max-width: 768px) { + .hamburger { + display: flex; + } + + .nav-menu { + position: absolute; + top: 100%; + left: 0; + width: 100%; + flex-direction: column; + background-color: var(--bg-color); + padding: 1.5rem; + gap: 1rem; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + + /* Hide off-screen by default */ + transform: translateY(-150%); + opacity: 0; + transition: var(--transition); + pointer-events: none; + } + + /* Target open state using checkbox selector */ + .nav-toggle:checked ~ .nav-menu { + transform: translateY(0); + opacity: 1; + pointer-events: auto; + } + + /* Hamburger Animate to 'X' when active */ + .nav-toggle:checked ~ .hamburger span:nth-child(1) { + transform: translateY(8px) rotate(45deg); + } + .nav-toggle:checked ~ .hamburger span:nth-child(2) { + opacity: 0; + } + .nav-toggle:checked ~ .hamburger span:nth-child(3) { + transform: translateY(-8px) rotate(-45deg); + } +} |
