From be152a49ca97a7465fb1721ae1bfe9ee246ba8ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montw=C3=A9?= Date: Thu, 5 Oct 2023 17:11:57 +0200 Subject: [PATCH] Add ADR 0002 about wrapping the material components in an atomic design system --- ...rial-components-in-atomic-design-system.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md diff --git a/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md b/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md new file mode 100644 index 000000000..ab3c0cea9 --- /dev/null +++ b/docs/architecture/adr/0002-ui-wrap-material-components-in-atomic-design-system.md @@ -0,0 +1,36 @@ +# 0002 - UI - Wrap Material Components in Atomic Design System + +## Status + +- **Proposed** + +## Context + +As we continue developing our Jetpack Compose application, we find a need to increase the consistency, reusability, +and maintainability of our UI components. Currently, we are using Material components directly throughout our +application. This leads to a lack of uniformity and increases the complexity of changes as the same modifications +must be implemented multiple times across different screens. + +## Decision + +We are proposing to create a new atomic design system where Material components are wrapped into our own 'atomic' +components. For instance, we would have components such as `AtomicButton`, `AtomicText`, etc. These atomic components +will encapsulate Material components with predefined styles and behaviors. + +This approach will be taken further to develop more complex 'molecule' and 'organism' components by combining these +atomic components. We will also define 'templates' as layout structures and 'pages' as specific instances of these +templates to build a complete user interface. + +## Consequences + +- **Positive Consequences** + + - Increased reusability of components across the application, reducing code duplication. + - More consistent UI across the entire application. + - Improved maintainability, as changes to a component only need to be made in one place. + +- **Negative Consequences** + + - Initial effort and time investment needed to implement the atomic design system. + - Developers need to adapt to the new system and learn how to use it effectively. + - Potential for over-complication if simple components are excessively broken down into atomic parts.