Redesign Navbar UI for Better Spacing and Consistency#948
Redesign Navbar UI for Better Spacing and Consistency#948Shrey1006 wants to merge 7 commits intoalphaonelabs:mainfrom
Conversation
WalkthroughRestructures the site header/navbar in Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related issues
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs). Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 9
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/templates/base.html`:
- Around line 120-131: The More menu close handler (toggleMoreDropdown) hides
the language subdropdown but doesn't reset the chevron rotation, causing the
icon to remain rotated; update toggleMoreDropdown to also clear the rotation
class on the language chevron
(document.getElementById('language-chevron'))—e.g., remove or toggle off
'rotate-180' when you hide the subdropdown—and ensure toggleLanguageSubdropdown
continues to toggle 'rotate-180' based on the subdropdown visible state so the
chevron is always in sync.
- Around line 591-592: Remove the custom state classes "mobile-menu-open" and
"mobile-menu-content" from the mobile menu markup; instead use Tailwind utility
classes and DOM state/attributes for toggling (e.g., conditionally apply
translate-x-0 / translate-x-full, hidden, or max-w/overflow utilities) and use
aria-expanded/data attributes and click handlers to detect state. Locate the
elements referencing mobile-menu-open and mobile-menu-content (the sliding
mobile menu container and its toggle/close controls) and replace those class
names with appropriate Tailwind classes plus a JS toggle that flips an attribute
(aria-expanded or data-mobile-open) to control the transitions and visibility;
apply the same change to the other occurrences that reference those custom
classes.
- Around line 196-199: The nav and mobile menu trigger buttons (e.g., the button
that calls toggleMobileMenu() and the other top-level buttons around those
lines) only have hover styles and lack keyboard focus indicators; add visible
focus styles by updating their class attributes to include focus-visible
utilities (for example, focus:outline-none plus focus-visible:ring-2,
focus-visible:ring-offset-2 and a suitable ring color like ring-teal-300 or
ring-teal-500) so keyboard users see a clear focus outline; apply the same class
pattern to every top-level button referenced (the button calling
toggleMobileMenu() and the other buttons at the indicated locations) to satisfy
the hover/focus states guideline.
- Around line 72-76: The navbar uses disallowed color classes (teal-500/600,
orange-500) — update all navbar-related color class usages to the approved
palette and apply them consistently: change occurrences where the dark mode
toggle icon className is built (element id darkModeLabel / variable icon) and
all other navbar elements (header background, cart badge, avatar) to use the
approved classes (teal-300, gray-600, green-600, yellow-600, red-600) as
appropriate; ensure the className concatenation in the dark mode toggle (the
'fas w-5 text-...' string) is updated and mirror the same replacements for the
other referenced locations (the navbar header, cart badge, avatar) so styling is
consistent across the component.
- Line 184: The header wrapper div currently uses a custom max-width class
("max-w-[90rem]") instead of the standard Tailwind container utility; locate the
div whose class begins with "max-w-[90rem] mx-auto px-4 md:px-8 flex
items-center..." and replace the custom sizing with the required container
utility by using "container mx-auto px-4" (you can keep the existing responsive
padding and remaining classes like "md:px-8 flex items-center justify-between
h-16 relative").
- Around line 572-578: Replace the custom Tailwind classes on the auth links
pointing to {% url 'account_login' %} and {% url 'account_signup' %} with the
standard primary/secondary button classes: change the Login anchor (href to
account_login) to use the primary classes "bg-teal-300 hover:bg-teal-400
text-white px-6 py-2 rounded-lg transition duration-200" and change the Sign up
anchor (href to account_signup) to use the secondary classes "bg-gray-100
hover:bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-6 py-2
rounded-lg transition duration-200"; ensure whitespace-nowrap or other layout
needs are preserved only if required.
- Around line 393-395: The cart icon anchor (href "{% url 'cart_view' %}" with
class "relative flex items-center...") and the notification icon anchor around
lines 406-409 need accessible labels and visible keyboard focus styles: add an
appropriate aria-label (e.g., aria-label="View cart" / aria-label="View
notifications" or use an inner <span class="sr-only"> if preferred) and augment
the anchor's class list with focus-visible/focus ring utilities (for example
focus:outline-none and focus-visible:ring-2 focus-visible:ring-teal-300 or
similar) so hover and keyboard focus states are clearly visible; apply the same
changes consistently to both icon-only links.
- Around line 214-216: The dropdown anchor element for "{% url 'classes_map' %}"
is using custom gray/teal classes; replace them with the standard Tailwind link
classes required by guidelines: use text-blue-600 hover:text-blue-800
dark:text-blue-400 while keeping structural classes like block, px-4, py-2,
rounded-md, transition-all, duration-150, and hover:translate-x-0.5; remove the
text-gray-700, dark:text-gray-200, hover:bg-teal-50, dark:hover:bg-teal-900,
hover:text-teal-600, and dark:hover:text-teal-300 entries so the anchor uses the
specified link color classes instead.
- Around line 380-385: The search input named "q" needs to use the standard
Tailwind form classes and be made accessible: add an id (e.g., id="search-q"),
replace the current class list with the standard form input classes (w-full px-4
py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2
focus:ring-blue-500) and ensure it has an associated label element (e.g., <label
for="search-q">Search</label>) or at minimum aria-label="Search"; also add an
aria-label to the submit button (the button with type="submit") such as
aria-label="Submit search" so the icon-only button is accessible.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (9)
web/templates/base.html (9)
380-385:⚠️ Potential issue | 🟠 MajorSearch control is missing required input classes and accessible labels.
The input/button in this changed block still lacks the required standard input class set and ARIA labels.
🧾 Suggested update
<input type="text" name="q" placeholder="What do you want to learn?" - class="rounded-full w-full bg-white/95 dark:bg-gray-700/95 text-gray-900 dark:text-gray-100 px-3 py-1.5 pr-9 text-sm focus:outline-none focus:ring-2 focus:ring-white/50 placeholder:text-gray-500 dark:placeholder:text-gray-400" /> + aria-label="Search courses" + class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 bg-white/95 dark:bg-gray-700/95 text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400" /> <button type="submit" - class="absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-300 hover:text-teal-600 dark:hover:text-teal-300 transition-colors duration-200 group-hover/search:text-teal-600 dark:group-hover/search:text-teal-300"> + aria-label="Search" + class="absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-300 hover:text-teal-600 dark:hover:text-teal-300 transition-colors duration-200 group-hover/search:text-teal-600 dark:group-hover/search:text-teal-300">As per coding guidelines, "Use Tailwind form input classes: w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 for form inputs" and "Include proper ARIA labels where needed for accessibility".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 380 - 385, The search input (name="q") and its submit button lack the required Tailwind form classes and accessible labels; update the <input name="q"> to include the standard form classes (w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500) in addition to any existing utility classes, and add an explicit aria-label (e.g., aria-label="Search" or aria-labelledby referencing a visible label); likewise give the <button type="submit"> an accessible label (aria-label="Submit search" or use a visually-hidden text span) and ensure its classes include focus and hover styles for keyboard users.
196-199:⚠️ Potential issue | 🟡 MinorInteractive navbar triggers need visible keyboard focus states.
These updated triggers still rely on hover styling and lack
focus-visiblering styling.🧭 Example class update
- class="md:hidden p-2.5 hover:bg-teal-700/80 rounded-lg transition-colors" + class="md:hidden p-2.5 hover:bg-teal-700/80 rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-teal-300" - class="flex items-center gap-1 text-white hover:text-teal-100 focus:outline-none py-2.5 px-3 rounded-lg hover:bg-teal-700/60 transition-colors" + class="flex items-center gap-1 text-white hover:text-teal-100 focus:outline-none py-2.5 px-3 rounded-lg hover:bg-teal-700/60 transition-colors focus-visible:ring-2 focus-visible:ring-teal-300"As per coding guidelines, "Add hover/focus states for interactive elements".
Also applies to: 208-211, 255-258, 306-309, 344-347, 417-422, 495-497
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 196 - 199, The interactive navbar buttons (e.g., the button with onclick="toggleMobileMenu()") lack keyboard-visible focus states; update each navbar trigger element to include accessible focus utility classes (for example add focus:outline-none and focus-visible:ring, focus-visible:ring-offset and a color like focus-visible:ring-teal-300 / focus-visible:ring-offset-2) so keyboard users see a visible ring when focused; apply the same change to the other similar triggers referenced (lines around 208-211, 255-258, 306-309, 344-347, 417-422, 495-497) ensuring each interactive element retains existing hover styles while gaining focus-visible classes.
184-184:⚠️ Potential issue | 🟡 MinorUse the required container utility on the header wrapper.
Line 184 uses a custom max-width wrapper instead of the required
container mx-auto px-4.♻️ Suggested change
- <div class="max-w-[90rem] mx-auto px-4 md:px-8 flex items-center justify-between h-16 relative"> + <div class="container mx-auto px-4 md:px-8 flex items-center justify-between h-16 relative">As per coding guidelines, "Use Tailwind container classes: container mx-auto px-4 for containers".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` at line 184, The header wrapper div currently uses a custom max-width class; update the header wrapper element (the div with classes "max-w-[90rem] mx-auto px-4 md:px-8 flex items-center justify-between h-16 relative") to use the required Tailwind container utility by replacing the custom max-w class with "container mx-auto px-4" while preserving the other classes (md:px-8, flex, items-center, justify-between, h-16, relative) so the header follows the coding guideline.
591-592:⚠️ Potential issue | 🟡 MinorRemove custom mobile-menu state classes and use Tailwind/DOM state instead.
mobile-menu-contentandmobile-menu-openare still custom classes in both markup and JS state logic.♻️ Tailwind-only state handling
- class="... overflow-y-auto mobile-menu-content translate-x-full transition-transform ..." + class="... overflow-y-auto translate-x-full transition-transform ..." - const isOpen = menu.classList.contains('mobile-menu-open'); + const isOpen = menu.classList.contains('opacity-100'); - menu.classList.remove('mobile-menu-open', 'opacity-100', 'pointer-events-auto'); + menu.classList.remove('opacity-100', 'pointer-events-auto'); - menu.classList.add('mobile-menu-open', 'opacity-100', 'pointer-events-auto'); + menu.classList.add('opacity-100', 'pointer-events-auto'); - const menuContent = event.target.closest('.mobile-menu-content'); + const menuContent = event.target.closest('#mobile-menu-panel'); - if (menu.classList.contains('mobile-menu-open') && !menuButton && !menuContent) { + if (menu.classList.contains('opacity-100') && !menuButton && !menuContent) {As per coding guidelines, "**/*.{html,htm,css}: Never use custom CSS classes".
Also applies to: 1133-1141, 1151-1153
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 591 - 592, Remove the custom state classes "mobile-menu-content" and "mobile-menu-open" from the markup and JS and replace them with Tailwind's utility + DOM state handling (e.g., aria-expanded/hidden, transition classes toggled via element.classList or conditional rendering) so no bespoke CSS class names are used; update the element that currently has class="... mobile-menu-content ..." and any JS that adds/removes "mobile-menu-open" to instead toggle Tailwind classes (like translate-x-0/translate-x-full and hidden/block) based on a DOM attribute or aria state, and ensure the close/open button updates that same DOM state (e.g., aria-expanded or data-state) rather than relying on "mobile-menu-*" class names.
214-216:⚠️ Potential issue | 🟡 MinorDropdown anchors should use the standard link class set.
Updated dropdown links still use custom gray/teal link colors instead of the required
text-blue-*link pattern.🔗 Example conversion
- class="block px-4 py-2 rounded-md text-gray-700 dark:text-gray-200 hover:bg-teal-50 dark:hover:bg-teal-900 hover:text-teal-600 dark:hover:text-teal-300 ..." + class="block px-4 py-2 rounded-md text-blue-600 dark:text-blue-400 hover:text-blue-800 ..."As per coding guidelines, "Use Tailwind link classes: text-blue-600 hover:text-blue-800 dark:text-blue-400 for links".
Also applies to: 219-223, 262-266, 318-323, 351-356
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 214 - 216, The dropdown anchor for the Classes Near Me link (the <a> with href set via {% url 'classes_map' %}) is using custom gray/teal color classes; update its class list to use the standard Tailwind link pattern (text-blue-600 hover:text-blue-800 dark:text-blue-400) while keeping the existing utility classes (block px-4 py-2 rounded-md transition-all duration-150 hover:translate-x-0.5); apply the same replacement of text-gray-700 dark:text-gray-200 hover:bg-teal-50 dark:hover:bg-teal-900 hover:text-teal-600 dark:hover:text-teal-300 to the standard link classes for the other dropdown anchors that follow the same pattern (the other <a> anchors in the template with similar class strings).
572-578:⚠️ Potential issue | 🟡 MinorAuth actions should use the standard primary/secondary button classes.
Line 572 and Line 576 still use custom button class sets instead of the required standardized variants.
🎯 Suggested class mapping
<a href="{% url 'account_login' %}" - class="px-5 py-2.5 rounded-lg hover:bg-teal-700/80 transition-colors text-base font-semibold"> + class="bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-6 py-2 rounded-lg transition duration-200 text-base font-semibold"> <a href="{% url 'account_signup' %}" - class="px-5 py-2.5 rounded-lg bg-orange-500 hover:bg-orange-600 text-white text-base font-semibold whitespace-nowrap transition-colors"> + class="bg-teal-300 hover:bg-teal-400 text-white px-6 py-2 rounded-lg transition duration-200 text-base font-semibold whitespace-nowrap">As per coding guidelines, "Use Tailwind primary button classes: bg-teal-300 hover:bg-teal-400 text-white px-6 py-2 rounded-lg transition duration-200" and "Use Tailwind secondary button classes: bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 572 - 578, Replace the custom class sets on the two auth anchor elements with the standardized button variants: update the anchor with url 'account_login' to use the secondary button classes (bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-6 py-2 rounded-lg transition duration-200) and update the anchor with url 'account_signup' to use the primary button classes (bg-teal-300 hover:bg-teal-400 text-white px-6 py-2 rounded-lg transition duration-200); ensure you remove the old custom utility classes and preserve attributes like href and text content.
122-124:⚠️ Potential issue | 🟡 MinorReset language chevron when More closes.
When the More menu closes, the language subdropdown is hidden but the chevron rotation is not reset, so it can reopen in a stale state.
🔧 Minimal fix
function toggleMoreDropdown() { document.getElementById('more-dropdown').classList.toggle('hidden'); - document.getElementById('language-subdropdown').classList.add('hidden'); + const sub = document.getElementById('language-subdropdown'); + const chevron = document.getElementById('language-chevron'); + if (sub) sub.classList.add('hidden'); + if (chevron) chevron.classList.remove('rotate-180'); } ... if (moreDropdown && !moreButton && !moreDropdown.contains(event.target)) { moreDropdown.classList.add('hidden'); const langSub = document.getElementById('language-subdropdown'); + const chevron = document.getElementById('language-chevron'); if (langSub) langSub.classList.add('hidden'); + if (chevron) chevron.classList.remove('rotate-180'); }Also applies to: 142-146
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 122 - 124, When closing the More menu (when toggling document.getElementById('more-dropdown')), also reset the language chevron so it doesn't remain rotated; after hiding document.getElementById('language-subdropdown') remove the rotation class or inline transform on the chevron element (e.g. document.getElementById('language-chevron') or querySelector('#more-dropdown .chevron') — remove 'rotated' or 'rotate-180' class or set style.transform = ''), and apply the same change in the duplicate block referenced around lines 142-146.
76-76:⚠️ Potential issue | 🟡 MinorNavbar still uses disallowed palette classes.
Several changed navbar elements still use
teal-500/600/800andorange-500, which conflicts with the approved palette.🎨 Example palette-aligned replacements
- icon.className = 'fas w-5 text-teal-500 ' + (isDark ? 'fa-sun' : 'fa-moon'); + icon.className = 'fas w-5 text-teal-300 ' + (isDark ? 'fa-sun' : 'fa-moon'); - const scrollClasses = ['bg-teal-600/95', 'dark:bg-teal-800/95', 'backdrop-blur-md', 'shadow-lg']; + const scrollClasses = ['bg-teal-300/95', 'dark:bg-gray-600/95', 'backdrop-blur-md', 'shadow-lg']; - class="... bg-teal-600 dark:bg-teal-800 ..." + class="... bg-teal-300 dark:bg-gray-600 ..." - class="absolute -top-1 -right-1 bg-orange-500 ..." + class="absolute -top-1 -right-1 bg-red-600 ..." - <div class="h-8 w-8 rounded-full bg-orange-500 ..."> + <div class="h-8 w-8 rounded-full bg-red-600 ...">As per coding guidelines, "Follow project color scheme in templates (teal-300, gray-600, green-600, yellow-600, red-600)".
Also applies to: 93-93, 183-183, 397-397, 427-427, 437-437, 485-485, 510-510
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` at line 76, The navbar template still uses disallowed color classes (e.g., text-teal-500/600/800 and orange-500); update the class strings in the relevant template expressions such as the icon.className assignment and the other navbar class usages referenced in the comment to use the approved palette (for example replace text-teal-500 with an approved alternative like text-teal-300 or another approved class from gray-600, green-600, yellow-600, red-600 as appropriate) so all occurrences (including the icon.className and the other navbar class attributes mentioned) conform to the project color scheme.
393-395:⚠️ Potential issue | 🟠 MajorIcon-only cart/notification links need ARIA labels and focus-visible styles.
These links are icon-only and currently have neither accessible labels nor keyboard focus indication.
🧷 Example fix
<a href="{% url 'cart_view' %}" - class="relative flex items-center justify-center w-9 h-9 hover:bg-teal-700/80 rounded-lg transition-colors"> + aria-label="View cart" + class="relative flex items-center justify-center w-9 h-9 hover:bg-teal-700/80 rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-teal-300"> <a href="{% url 'user_invitations' %}" - class="relative flex items-center justify-center w-9 h-9 hover:bg-teal-700/80 rounded-lg transition-colors"> + aria-label="View notifications" + class="relative flex items-center justify-center w-9 h-9 hover:bg-teal-700/80 rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-teal-300">As per coding guidelines, "Include proper ARIA labels where needed for accessibility" and "Add hover/focus states for interactive elements".
Also applies to: 406-409
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/templates/base.html` around lines 393 - 395, The icon-only anchor for the cart (the <a href="{% url 'cart_view' %}" ...> wrapping <i class="fa-solid fa-shopping-cart"></i>) and the similar notification link need accessible labels and keyboard focus styles: add an aria-label (e.g., "View cart" / "View notifications") to each icon-only <a> and update their classes/CSS to include visible focus styles (use focus-visible utility classes or add a focus-visible rule that shows an outline/ring and adequate contrast) so keyboard users can identify and see focus; make the same changes for the other icon-only anchor referenced around lines 406-409.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/templates/base.html`:
- Around line 212-213: The dropdown submenu panels are only exposed via the CSS
utility "group-hover" which prevents keyboard users from reaching them; update
the interactive dropdown pattern so focus also opens the menu: add
focus/focus-within-based states alongside group-hover on the submenu container
(e.g., add "group-focus-within:opacity-100 group-focus-within:visible
group-focus-within:translate-y-0" in addition to the existing "group-hover:..."
classes on the div with "group-hover" utilities), ensure the trigger element
(the button/link that toggles the menu) is keyboard-focusable (has tabindex or
is a native button/link), and add proper ARIA attributes on the trigger such as
aria-haspopup="true" and an aria-expanded state you update when the menu is
opened to improve accessibility; apply the same changes for the other submenu
instances referenced (the other divs using "group-hover" at the noted
occurrences).
---
Duplicate comments:
In `@web/templates/base.html`:
- Around line 380-385: The search input (name="q") and its submit button lack
the required Tailwind form classes and accessible labels; update the <input
name="q"> to include the standard form classes (w-full px-4 py-2 border
border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2
focus:ring-blue-500) in addition to any existing utility classes, and add an
explicit aria-label (e.g., aria-label="Search" or aria-labelledby referencing a
visible label); likewise give the <button type="submit"> an accessible label
(aria-label="Submit search" or use a visually-hidden text span) and ensure its
classes include focus and hover styles for keyboard users.
- Around line 196-199: The interactive navbar buttons (e.g., the button with
onclick="toggleMobileMenu()") lack keyboard-visible focus states; update each
navbar trigger element to include accessible focus utility classes (for example
add focus:outline-none and focus-visible:ring, focus-visible:ring-offset and a
color like focus-visible:ring-teal-300 / focus-visible:ring-offset-2) so
keyboard users see a visible ring when focused; apply the same change to the
other similar triggers referenced (lines around 208-211, 255-258, 306-309,
344-347, 417-422, 495-497) ensuring each interactive element retains existing
hover styles while gaining focus-visible classes.
- Line 184: The header wrapper div currently uses a custom max-width class;
update the header wrapper element (the div with classes "max-w-[90rem] mx-auto
px-4 md:px-8 flex items-center justify-between h-16 relative") to use the
required Tailwind container utility by replacing the custom max-w class with
"container mx-auto px-4" while preserving the other classes (md:px-8, flex,
items-center, justify-between, h-16, relative) so the header follows the coding
guideline.
- Around line 591-592: Remove the custom state classes "mobile-menu-content" and
"mobile-menu-open" from the markup and JS and replace them with Tailwind's
utility + DOM state handling (e.g., aria-expanded/hidden, transition classes
toggled via element.classList or conditional rendering) so no bespoke CSS class
names are used; update the element that currently has class="...
mobile-menu-content ..." and any JS that adds/removes "mobile-menu-open" to
instead toggle Tailwind classes (like translate-x-0/translate-x-full and
hidden/block) based on a DOM attribute or aria state, and ensure the close/open
button updates that same DOM state (e.g., aria-expanded or data-state) rather
than relying on "mobile-menu-*" class names.
- Around line 214-216: The dropdown anchor for the Classes Near Me link (the <a>
with href set via {% url 'classes_map' %}) is using custom gray/teal color
classes; update its class list to use the standard Tailwind link pattern
(text-blue-600 hover:text-blue-800 dark:text-blue-400) while keeping the
existing utility classes (block px-4 py-2 rounded-md transition-all duration-150
hover:translate-x-0.5); apply the same replacement of text-gray-700
dark:text-gray-200 hover:bg-teal-50 dark:hover:bg-teal-900 hover:text-teal-600
dark:hover:text-teal-300 to the standard link classes for the other dropdown
anchors that follow the same pattern (the other <a> anchors in the template with
similar class strings).
- Around line 572-578: Replace the custom class sets on the two auth anchor
elements with the standardized button variants: update the anchor with url
'account_login' to use the secondary button classes (bg-gray-100
hover:bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 px-6 py-2
rounded-lg transition duration-200) and update the anchor with url
'account_signup' to use the primary button classes (bg-teal-300
hover:bg-teal-400 text-white px-6 py-2 rounded-lg transition duration-200);
ensure you remove the old custom utility classes and preserve attributes like
href and text content.
- Around line 122-124: When closing the More menu (when toggling
document.getElementById('more-dropdown')), also reset the language chevron so it
doesn't remain rotated; after hiding
document.getElementById('language-subdropdown') remove the rotation class or
inline transform on the chevron element (e.g.
document.getElementById('language-chevron') or querySelector('#more-dropdown
.chevron') — remove 'rotated' or 'rotate-180' class or set style.transform =
''), and apply the same change in the duplicate block referenced around lines
142-146.
- Line 76: The navbar template still uses disallowed color classes (e.g.,
text-teal-500/600/800 and orange-500); update the class strings in the relevant
template expressions such as the icon.className assignment and the other navbar
class usages referenced in the comment to use the approved palette (for example
replace text-teal-500 with an approved alternative like text-teal-300 or another
approved class from gray-600, green-600, yellow-600, red-600 as appropriate) so
all occurrences (including the icon.className and the other navbar class
attributes mentioned) conform to the project color scheme.
- Around line 393-395: The icon-only anchor for the cart (the <a href="{% url
'cart_view' %}" ...> wrapping <i class="fa-solid fa-shopping-cart"></i>) and the
similar notification link need accessible labels and keyboard focus styles: add
an aria-label (e.g., "View cart" / "View notifications") to each icon-only <a>
and update their classes/CSS to include visible focus styles (use focus-visible
utility classes or add a focus-visible rule that shows an outline/ring and
adequate contrast) so keyboard users can identify and see focus; make the same
changes for the other icon-only anchor referenced around lines 406-409.
Related issues
Fixes #946
Changes Made
Checklist
NewNav.mp4
Summary by CodeRabbit
New Features
Style
Bug Fixes