style(bottom-bar): refine icons and normalize button sizing#387
Conversation
8a33507
into
copilot/replace-floating-widgets-bar
There was a problem hiding this comment.
Pull request overview
This pull request refines the BottomBar component by replacing emoji icons with professional SVG icons and normalizing button dimensions for a more polished appearance. The changes modernize the visual design by introducing proper Discord and Matrix logos, updating the coffee button's color scheme to a brown/coffee theme, and implementing fixed-size buttons that collapse to icon-only squares on mobile devices.
Changes:
- Replaced emoji icons (💬, Matrix text logo, ☕) with SVG graphics for Discord, Matrix, and coffee buttons
- Standardized button dimensions with fixed 170px width and 44px height on desktop, 44px squares on mobile
- Updated coffee button color scheme from blue (#5F7FFF) to brown/beige (#c49a6c) theme
- Added button content centering and adjusted padding to 0 14px
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| src/components/BottomBar/styles.module.css | Normalized button sizing with fixed dimensions, updated coffee button colors, added icon-specific sizing classes, and refined responsive mobile styles |
| src/components/BottomBar/index.tsx | Replaced emoji icons with inline SVG elements for Discord and Matrix, and SVG image element for coffee button |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <image | ||
| className={styles.coffeeImage} | ||
| href="https://assets.nicepagecdn.com/0ae97ec5/5379283/images/buy-me-a-coffee6984-removebg-preview.png" | ||
| x="0" | ||
| y="0" | ||
| width="64" | ||
| height="64" | ||
| preserveAspectRatio="xMidYMid meet" | ||
| /> |
There was a problem hiding this comment.
The coffee icon is loading from an external third-party CDN (assets.nicepagecdn.com), which introduces several concerns:
-
Security Risk: External resources can be modified or compromised without your control, potentially introducing malicious content or tracking scripts.
-
Reliability: The icon will fail to load if the external CDN is down or slow, affecting user experience.
-
Performance: Loading from external domains requires additional DNS lookups and connections, slowing down page load.
-
Privacy: External requests expose user data (IP addresses, referrer headers) to third parties.
The repository already has a local Buy Me A Coffee SVG at static/img/buymeacoffee-button.svg. Consider using a local SVG path icon instead, or extracting just the coffee cup icon portion as an inline SVG to match the Discord and Matrix icon patterns.
| overflow: visible; | ||
| } | ||
|
|
||
| .coffeeImage { | ||
| transform-box: fill-box; | ||
| transform-origin: center; | ||
| transform: scale(1.65); |
There was a problem hiding this comment.
The overflow: visible property on the coffee icon container combined with transform: scale(1.65) on the image causes the icon to extend beyond its 20px×20px container boundaries. This is inconsistent with the Discord and Matrix icons which are properly constrained to their declared dimensions.
This overflow can cause visual alignment issues and may clip adjacent content or overlap with other elements. Consider either:
- Adjusting the container size to accommodate the scaled image (e.g., width: 33px; height: 33px to account for 20px × 1.65)
- Reducing the scale factor to fit within 20px×20px
- Using an inline SVG path like the other icons for consistent sizing
| overflow: visible; | |
| } | |
| .coffeeImage { | |
| transform-box: fill-box; | |
| transform-origin: center; | |
| transform: scale(1.65); | |
| } | |
| .coffeeImage { | |
| transform-box: fill-box; | |
| transform-origin: center; |
| background-color: #c49a6c; | ||
| color: #2f1f12; | ||
| } |
There was a problem hiding this comment.
The coffee button colors have changed from a blue theme (#5F7FFF) to a brown/beige theme (#c49a6c with dark brown text #2f1f12). While this may be intentional to match coffee/branding, the color contrast ratio should be verified for accessibility compliance.
According to WCAG 2.1 AA standards, the contrast ratio between #c49a6c (background) and #2f1f12 (text) should be at least 4.5:1 for normal text or 3:1 for large text. Please verify this meets accessibility requirements, especially for users with visual impairments.
| <svg | ||
| className={`${styles.icon} ${styles.matrixIcon}`} | ||
| viewBox="0 0 24 24" | ||
| viewBox="0 0 72 72" | ||
| aria-hidden="true" | ||
| focusable="false" | ||
| > | ||
| <rect x="1" y="1" width="22" height="22" rx="4" fill="rgba(0, 0, 0, 0.18)" /> | ||
| <path | ||
| d="M7 6H5V18H7V16H6V8H7V6ZM17 6V8H18V16H17V18H19V6H17Z" | ||
| fill="currentColor" | ||
| /> | ||
| <path | ||
| d="M8.8 16V8H10.7L12 10.5L13.3 8H15.2V16H13.7V10.8L12.7 12.8H11.3L10.3 10.8V16H8.8Z" | ||
| fill="currentColor" | ||
| /> | ||
| <g> | ||
| <circle cx="36" cy="36" r="28" fill="#b1cc33" /> | ||
| <path | ||
| fill="#fff" | ||
| fillRule="evenodd" | ||
| d="M30.698 20.513c0-1.171.95-2.124 2.124-2.124 7.95 0 14.395 6.432 14.395 14.366 0 1.17-.95 2.12-2.124 2.12a2.122 2.122 0 0 1-2.123-2.12c0-5.593-4.544-10.127-10.148-10.127a2.122 2.122 0 0 1-2.124-2.115z" | ||
| clipRule="evenodd" | ||
| /> | ||
| <path | ||
| fill="#fff" | ||
| fillRule="evenodd" | ||
| d="M51.483 30.639c1.173 0 2.124.949 2.124 2.12 0 7.933-6.445 14.365-14.395 14.365a2.122 2.122 0 0 1-2.124-2.12c0-1.17.95-2.119 2.124-2.119 5.604 0 10.147-4.534 10.147-10.126 0-1.171.95-2.12 2.124-2.12z" | ||
| clipRule="evenodd" | ||
| /> | ||
| <path | ||
| fill="#fff" | ||
| fillRule="evenodd" | ||
| d="M41.335 51.487c0 1.171-.95 2.12-2.124 2.12-7.95 0-14.395-6.432-14.395-14.366 0-1.17.951-2.119 2.124-2.119s2.124.949 2.124 2.12c0 5.592 4.543 10.126 10.147 10.126 1.173 0 2.124.949 2.124 2.12z" | ||
| clipRule="evenodd" | ||
| /> | ||
| <path | ||
| fill="#fff" | ||
| fillRule="evenodd" | ||
| d="M20.517 41.36a2.122 2.122 0 0 1-2.124-2.118c0-7.934 6.445-14.366 14.395-14.366 1.173 0 2.124.949 2.124 2.12 0 1.17-.95 2.119-2.124 2.119-5.604 0-10.147 4.534-10.147 10.127 0 1.17-.951 2.119-2.124 2.119z" | ||
| clipRule="evenodd" | ||
| /> | ||
| </g> | ||
| <g> | ||
| <circle cx="36" cy="36" r="28" fill="none" stroke="#000" strokeWidth="2" /> | ||
| <path | ||
| fill="none" | ||
| stroke="#000" | ||
| strokeLinecap="round" | ||
| strokeWidth="2" | ||
| d="M30.698 20.513c0-1.171.95-2.12 2.124-2.12 7.95 0 14.395 6.432 14.395 14.366 0 1.17-.95 2.12-2.124 2.12a2.122 2.122 0 0 1-2.123-2.12c0-5.593-4.544-10.127-10.148-10.127a2.122 2.122 0 0 1-2.124-2.12z" | ||
| /> | ||
| <path | ||
| fill="none" | ||
| stroke="#000" | ||
| strokeLinecap="round" | ||
| strokeWidth="2" | ||
| d="M51.483 30.639c1.173 0 2.124.949 2.124 2.12 0 7.933-6.445 14.365-14.395 14.365a2.122 2.122 0 0 1-2.124-2.12c0-1.17.95-2.119 2.124-2.119 5.604 0 10.147-4.534 10.147-10.126 0-1.171.95-2.12 2.124-2.12z" | ||
| /> | ||
| <path | ||
| fill="none" | ||
| stroke="#000" | ||
| strokeLinecap="round" | ||
| strokeWidth="2" | ||
| d="M41.335 51.487c0 1.171-.95 2.12-2.124 2.12-7.95 0-14.395-6.432-14.395-14.366 0-1.17.951-2.119 2.124-2.119s2.124.949 2.124 2.12c0 5.592 4.543 10.126 10.147 10.126 1.173 0 2.124.949 2.124 2.12z" | ||
| /> | ||
| <path | ||
| fill="none" | ||
| stroke="#000" | ||
| strokeLinecap="round" | ||
| strokeWidth="2" | ||
| d="M20.517 41.36a2.122 2.122 0 0 1-2.124-2.118c0-7.934 6.445-14.366 14.395-14.366 1.173 0 2.124.949 2.124 2.12 0 1.17-.95 2.119-2.124 2.119-5.604 0-10.147 4.534-10.147 10.127 0 1.17-.951 2.119-2.124 2.119z" | ||
| /> | ||
| </g> | ||
| </svg> |
There was a problem hiding this comment.
The Matrix icon has been completely replaced with a different design. The old icon was a simple text-based "M" logo (viewBox 0 0 24 24), while the new icon is a more complex circular design with the Element/Matrix logo (viewBox 0 0 72 72).
This change is significant because:
- The new icon is more complex with multiple paths, circles, and strokes
- It includes hardcoded colors (#b1cc33 green fill, #fff white paths, #000 black strokes) instead of using
currentColor - Unlike the Discord icon which adapts to the button's text color, this icon will always display in green/white/black regardless of the button's color scheme
Consider whether this is intentional, or if the icon should use currentColor for fills and strokes to maintain consistency with the Discord icon's theming approach.
| justify-content: center; | ||
| gap: 8px; | ||
| padding: 10px 20px; | ||
| width: 170px; |
There was a problem hiding this comment.
The button has been given a fixed width of 170px. This rigid sizing may cause issues with:
-
Text overflow: Button labels have varying lengths ("Join Discord" = 12 chars, "Join Matrix" = 11 chars, "Buy me a coffee" = 16 chars). A fixed 170px width may not accommodate all text comfortably, especially with the 14px horizontal padding on each side (28px total), leaving only 142px for icon + gap + text.
-
Internationalization: If this application supports multiple languages, translated button text may not fit within the fixed 170px constraint.
-
Flexibility: The previous padding-based approach (10px 20px) allowed buttons to naturally size to their content.
Consider using min-width: 170px instead of width: 170px to allow buttons to expand if needed while maintaining a minimum size for visual consistency.
| width: 170px; | |
| min-width: 170px; |
No description provided.