Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ADR for adopting Styled Components as a global styling strategy across CFIA projects #94

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions adr/009-styling-with-styled-components.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# ADR-009: Adopting Styled Components for CSS Styling Across CFIA Projects

## Executive Summary

This ADR documents the decision to adopt Styled Components over traditional CSS for styling across various projects at the Canadian Food Inspection Agency (CFIA). The decision is driven by the need for enhanced scalability, consistency, and development efficiency in styling approaches.

## Context

As projects at CFIA scale and evolve, maintaining a consistent and manageable styling approach becomes crucial. Traditional CSS, while familiar, poses challenges in large-scale applications due to its global scope and potential for naming conflicts.

## Decision

We have decided to adopt Styled Components across CFIA projects for the following reasons:
1. **Component-Level Styling:** Enhances modularity and reusability, ensuring styles are encapsulated within their respective components.
2. **Dynamic Styling:** Offers greater flexibility with prop-based style alterations, allowing for more dynamic and context-aware styling.
3. **Reduced Naming Conflicts:** Automatically generated unique class names significantly reduce the risk of naming conflicts.
4. **Easier Deletion of Unused Styles:** Styles are tightly coupled with components, making it straightforward to remove unused code and prevent style bloat.
5. **Improved Developer Experience:** Integrates with modern development tools, offering features like syntax highlighting and style linting, thus enhancing the overall development process.

**Link to Reference Materials:**
- [Styled Components Official Documentation](https://styled-components.com/docs)

## Alternatives Considered
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should also show the pro and cons for Styled Components.


1. **Continuing with Traditional CSS:**
- Pros: Familiarity and simplicity.
- Cons: Scalability issues, potential naming conflicts, and less dynamic styling capabilities.

2. **Other CSS-in-JS Libraries:**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably detail few of those.

- Pros: Similar benefits to Styled Components.
- Cons: Potential lack of feature parity or community support compared to Styled Components.

## Consequences

Adopting Styled Components is expected to streamline the development process, enhance the maintainability of codebases, and provide a more dynamic and scalable styling solution for CFIA's diverse range of projects.

## References

- Styled Components documentation and community discussions.
- Comparative analysis of CSS styling approaches in modern web development.