refactor: streamline onboarding modal by removing unnecessary slide preparation logic and enhancing loading state management for improved user experience

This commit is contained in:
2025-12-04 00:11:26 -05:00
parent a6c8e14db0
commit 5cd9a52668
242 changed files with 59643 additions and 61 deletions

View File

@@ -0,0 +1,163 @@
---
description: This rule file provides comprehensive guidelines for using Font Awesome effectively, covering setup, styling, accessibility, performance, and security best practices. It ensures consistent and optimized usage across projects.
globs: *.html,*.css,*.js,*.jsx,*.ts,*.tsx
---
# Font Awesome Best Practices
This document outlines best practices for using Font Awesome in web development projects. These guidelines cover setup, styling, accessibility, performance, security, and common pitfalls.
## 1. Setup and Usage
* **Font Awesome Kits (Recommended):**
* Use Font Awesome Kits for easy customization and automatic updates.
* Add the Kit's embed code ( `<script>` tag) to the `<head>` of your HTML document.
* Example:
html
<script src="https://kit.fontawesome.com/<your_kit_code>.js" crossorigin="anonymous"></script>
* **Package Manager (npm, yarn):**
* Install Font Awesome as a dependency:
bash
npm install @fortawesome/fontawesome-free
# or
yarn add @fortawesome/fontawesome-free
* Import the necessary CSS or JavaScript files in your application.
* **CDN (Content Delivery Network):**
* Use a CDN for quick setup, but be aware of potential performance implications and dependency on external services.
* Include the CDN link in your HTML:
html
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="..." crossorigin="anonymous" />
* **Icon Usage:**
* Use CSS classes to insert icons into your project.
html
<i class="fas fa-heart"></i> <!-- Solid heart icon -->
<i class="far fa-heart"></i> <!-- Regular heart icon -->
<i class="fab fa-github"></i> <!-- GitHub icon -->
## 2. Code Organization and Structure
* **Directory Structure:**
* Place Font Awesome CSS and font files in a dedicated directory (e.g., `assets/fontawesome`). This is less relevant when using kits or CDNs.
* **File Naming Conventions:**
* Stick to the default file names provided by Font Awesome (e.g., `fontawesome.min.css`, `fontawesome.js`).
* **Module Organization:**
* When using a package manager, import Font Awesome modules in your application's entry point or relevant components.
* Example (JavaScript):
javascript
import '@fortawesome/fontawesome-free/css/all.min.css';
* **Component Architecture:**
* Create reusable icon components in your UI framework (e.g., React, Vue, Angular) to encapsulate Font Awesome usage and styling.
* Example (React):
jsx
import React from 'react';
const Icon = ({ name, style }) => (
<i className={`fa${style ? 'b' : 's'} fa-${name}`}></i>
);
export default Icon;
* **Code Splitting:**
* When using a package manager, ensure your build tool (e.g., Webpack, Parcel) correctly bundles Font Awesome files and supports code splitting if needed.
## 3. Styling and Accessibility
* **Styling:**
* Use Font Awesome's styling options to customize icon size, color, and animations.
* Use CSS classes for styling (e.g., `fa-xs`, `fa-sm`, `fa-lg`, `fa-2x`, `fa-spin`, `fa-pulse`).
* Example:
html
<i class="fas fa-heart fa-2x" style="color: red;"></i>
* **Accessibility (Crucial):**
* **Decorative Icons:** Use `aria-hidden="true"` for icons that are purely decorative.
html
<i class="fas fa-star" aria-hidden="true"></i>
* **Informative Icons:** Provide meaningful text alternatives for icons that convey information or are interactive.
* Use `aria-label` for interactive elements (e.g., buttons, links).
html
<a href="/cart" aria-label="View your shopping cart">
<i class="fas fa-shopping-cart" aria-hidden="true"></i>
</a>
* Use visually hidden text (e.g., using CSS class `sr-only`) to provide a text alternative.
html
<span class="sr-only">Search</span>
<i class="fas fa-search" aria-hidden="true"></i>
* Use the `title` attribute to provide a tooltip for sighted users (optional, but recommended).
html
<i class="fas fa-info-circle" aria-hidden="true" title="More information"></i>
## 4. Performance Considerations
* **CDN Usage:**
* Using a reputable CDN can improve performance through caching and optimized delivery. Ensure the CDN supports modern protocols like HTTP/2 or HTTP/3.
* **Self-Hosting:**
* Self-hosting gives you more control over resources but requires proper server configuration and optimization.
* Consider using a CDN in front of your origin server for better performance.
* **Web Fonts vs. SVG:**
* Font Awesome offers both web fonts and SVG versions.
* SVGs generally offer better performance and scalability but may require more setup.
* Web fonts can cause rendering issues (e.g., FOIT - Flash of Invisible Text). Consider using `font-display: swap;` in your CSS to mitigate this.
* **Subsetting (Pro Feature):**
* Use Font Awesome's Pro subsetting feature to include only the icons you need, reducing the overall file size.
* **Lazy Loading:**
* If you have a large number of icons on a page, consider lazy loading them to improve initial page load time. This can be complex and might require custom JavaScript.
## 5. Common Patterns and Anti-Patterns
* **Pattern: Icon Component:** Creating a reusable icon component is a common and effective pattern.
* **Pattern: Consistent Styling:** Define a set of CSS classes or variables for consistent icon styling across your project.
* **Anti-Pattern: Overusing Icons:** Avoid using too many icons, as it can clutter the UI and reduce readability.
* **Anti-Pattern: Inconsistent Icon Usage:** Ensure icons are used consistently throughout the application to maintain a cohesive user experience.
* **Anti-Pattern: Neglecting Accessibility:** Failing to provide proper text alternatives for icons is a major accessibility issue.
## 6. Security Best Practices
* **Vulnerability: Cross-Site Scripting (XSS):**
* Prevent XSS by sanitizing any user-provided input used in conjunction with Font Awesome icons.
* Never directly embed user input into CSS class names or HTML attributes.
* **Dependency Management:**
* Keep Font Awesome dependencies up-to-date to patch security vulnerabilities.
* Use a dependency management tool (e.g., npm, yarn) to manage and update dependencies securely.
* **Subresource Integrity (SRI):**
* When using a CDN, use SRI hashes to verify the integrity of the Font Awesome files.
html
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" integrity="sha512-..." crossorigin="anonymous" />
## 7. Testing Approaches
* **Unit Testing:**
* If you create custom icon components, write unit tests to ensure they render correctly and handle different icon names and styles.
* **Integration Testing:**
* Test the integration of Font Awesome icons within your application's UI to ensure they are displayed correctly in different browsers and devices.
* **End-to-End Testing:**
* Use end-to-end tests to verify the overall user experience with Font Awesome icons, including accessibility and styling.
## 8. Common Pitfalls and Gotchas
* **Version Conflicts:** Ensure all Font Awesome files are from the same version to avoid compatibility issues.
* **CSS Specificity:** Be aware of CSS specificity when styling Font Awesome icons, as it can override your custom styles.
* **Font Loading Issues:** Address font loading issues (e.g., FOIT) by using `font-display: swap;`.
* **Incorrect Class Names:** Double-check icon class names for typos.
* **Missing Font Awesome Kit Code:** Ensure the Font Awesome Kit code is correctly added to your HTML.
## 9. Tooling and Environment
* **Development Tools:**
* Use a code editor with syntax highlighting and autocompletion for CSS and HTML.
* Use browser developer tools to inspect and debug Font Awesome styles and rendering.
* **Build Configuration:**
* Configure your build tool (e.g., Webpack, Parcel) to correctly handle Font Awesome files and optimize for production.
* **Linting and Formatting:**
* Use a linter (e.g., ESLint, Stylelint) to enforce code style and best practices for Font Awesome usage.
* **CI/CD Integration:**
* Integrate Font Awesome dependency updates and security checks into your CI/CD pipeline.