Back to Projects

Rightel Design System Evolution

Turning disconnected component libraries into one coherent foundation for designing and scaling Rightel’s digital products.

RoleProduct Designer
PlatformMobile and web
FocusSystem design and governance
Fragmented interface components becoming a coherent and reusable design system

01 — Project snapshot

Creating a shared language across products

Rightel’s digital ecosystem included customer-facing mobile and web experiences created by multiple teams over time. An earlier design system existed, but its components were not fully integrated. Similar patterns had been recreated in different files, and their visual treatment, states, and behavior did not always match.

I helped evolve that foundation into a more complete system: a structured component library with clearer variants, interaction states, light and dark themes, reusable building blocks, and documentation that designers could apply consistently.

System scopeFoundations and reusable UI components
Key themesConsistency, scalability, accessibility
Primary usersProduct designers and developers
Evidence availableOld and evolved Figma libraries

My contribution

  • Audited the older library and identified duplicated, missing, and inconsistent component patterns.
  • Defined clearer component anatomy, properties, variants, and interaction states.
  • Expanded components for common product contexts instead of solving each screen independently.
  • Supported both light and dark schemes where the product required them.
  • Documented usage guidance and examples to make the library easier to understand and adopt.
  • Connected design-system decisions to patterns used across the My Rightel product experience.

02 — The problem

The older library did not behave as one system

The main issue was not the absence of components. It was that existing components had evolved separately. Teams could select visually similar elements that used different dimensions, colors, state logic, icon placement, or naming. Consistency depended too heavily on individual designers remembering which version to use.

01

Duplicate patterns

Similar controls existed in multiple forms, making the correct source of truth unclear.

02

Incomplete states

Enabled designs existed more often than focused, pressed, error, disabled, or loading behavior.

03

Unclear configuration

Icons, labels, sizes, and themes were not always represented as predictable component properties.

04

Screen-level inconsistency

When the library did not cover a product need, local components were created and gradually drifted apart.

Overview of the previous Rightel design system, showing icons, product screens, cards, and text-field states
Previous design system: components and product patterns had developed in separate groups without a fully integrated structure.

03 — Audit and diagnosis

Finding the rules hidden inside existing screens

I compared the older library with patterns already used across Rightel products. Rather than treating every visual difference as a new requirement, I grouped components by purpose and examined their anatomy, sizes, configurations, states, theme behavior, and product context.

What I looked for

  • Components serving the same purpose under different names.
  • One-off overrides that should become explicit variants or properties.
  • Missing states that forced designers to detach instances.
  • Color or spacing differences without a functional reason.
  • Patterns that worked in one flow but could not scale across products.
  • Accessibility risks in feedback, selection, focus, contrast, and touch targets.

One name, two different sizes

The audit exposed repeated text-field components with conflicting dimensions. Both versions were categorized as Large, but one used a 60px height while another used 48px. Because neither version expressed a distinct functional need, designers could choose different components for equivalent situations and produce inconsistent forms across the product.

Audit of the previous Rightel design system showing large text fields implemented at conflicting 60px and 48px heights
Audit evidence: two text-field families used the same “Large” label but different 60px and 48px heights.
Decision principle

A difference became a component property only when it represented a real use case. Accidental differences were removed; meaningful differences were made explicit and reusable.

04 — System approach

From visual assets to predictable component logic

The evolved system was organized around a consistent model: foundations define shared visual rules, building blocks define reusable anatomy, and component properties express only the variations needed by product teams.

01

Normalize foundations

Align color roles, typography, spacing, shape, elevation, and icon usage so components share the same visual language.

02

Define anatomy

Separate stable structure from configurable content—for example, container, label, leading icon, trailing icon, state layer, and supporting text.

03

Model real variants

Represent size, style, state, type, theme, and content configuration as properties instead of disconnected components.

04

Document decisions

Pair component sets with definitions, examples, and usage guidance so consistency does not rely on the library author.

Design system architecture flowing from foundations to building blocks, component sets, and product patterns
System architecture: shared foundations become reusable anatomy, predictable component sets, and consistent product patterns.

05 — Component evolution

Making consistency visible in the component sets

The new library expands the system across iconography, chips, dialogs, dividers, navigation bars, buttons, radio buttons, snackbars, switches, sliders, and text fields. The strongest before-and-after story comes from showing how representative components became more complete and predictable.

Buttons: one model instead of disconnected styles

In the older library, button geometry was not governed by a consistent rule. The Large button used a 4px border radius while the Medium button used 16px, creating a stronger shape change than the size distinction required. The family also documented visual styles and sizes without covering the complete set of interaction states, leaving designers to define missing behavior locally.

Buttons were rebuilt as a structured family covering multiple sizes and configurations, including filled, tonal, elevated, outlined, and text treatments. Primary, secondary, tertiary, success, and error roles could be expressed with consistent enabled, hovered, focused, pressed, and disabled behavior. Leading and trailing icon configurations became deliberate properties rather than separate local solutions.

Previous button system
Previous Rightel button family showing inconsistent 4px and 16px border radii and incomplete interaction states
Previous system: Large and Medium buttons used conflicting 4px and 16px border radius, while the family lacked complete interaction states.
Team component documentation
Long-form Rightel design-system documentation created for the product team

The documentation connected component definitions to states, usage rules, accessibility considerations, and examples from real product screens. Scroll inside the viewer or use the arrow controls to explore it.

Unified button system

The unified structure covered filled, outlined, text, elevated, and tonal buttons across enabled, hovered, focused, pressed, and disabled states. The same structure was also created for Small and Large buttons and extended to dark mode, keeping configuration and behavior consistent across sizes and themes.

Unified Rightel Medium button system showing filled, outlined, text, elevated, and tonal buttons across complete interaction states
Unified button system shown at Medium size. Equivalent component structures were created for Small, Large, and dark-mode use.

Text fields: designing the full interaction, not only the default

Text fields were organized around filled and outlined styles with predictable label, placeholder, and input-text configurations. Leading and trailing icons could be enabled independently, while focused, hovered, error, and disabled states provided the feedback required in real forms. Matching dark-scheme components reduced the need for screen-specific overrides.

Previous textfield system
Previous Rightel textfield system showing default, success, warning, and error treatments across interaction states
Previous textfield system: state treatments existed, but the component family still required clearer consolidation and more predictable configuration.
Textfield component documentation
Long-form Rightel textfield documentation covering anatomy, states, layouts, and usage guidance

The documentation defined filled and outlined anatomy, default and error states, spacing and layout measurements, and practical usage guidance. Scroll inside the viewer or use the arrow controls to explore it.

Unified textfield system

The consolidated component family brought filled and outlined textfields into one predictable structure. It covered light and dark themes, leading and trailing icon configurations, labels, placeholders, input values, and consistent enabled, focused, hovered, error, and disabled states.

Unified Rightel textfield system showing filled and outlined components across light and dark themes and complete interaction states
Unified textfield system: shared configuration and state logic across filled and outlined styles in both light and dark themes.

Navigation and feedback: shared behavior across journeys

Navigation bars were defined for three, four, and five segments, with icon-only or icon-and-label configurations, active and inactive behavior, and badge options. Snackbars and toast notifications gained clearer default, error, and success states, with explicit action, close, icon, and line-length configurations. These definitions reduced the chance that each product flow would invent its own navigation or feedback behavior.

Comparison of the new and old Rightel mobile app navigation bar systems across active states and light and dark themes
Navigation evolution: the new system introduced consistent active-state treatments and matching light and dark variants while preserving clear access to core destinations.

Controls and supporting components

Radio buttons, switches, sliders, chips, dividers, dialogs, and iconography were developed with the same logic. Selection, hover, focus, press, and disabled behavior were treated as system requirements. Component documentation also included light and dark schemes, bilingual or text-direction needs where relevant, and usage examples for product teams.

Rightel supporting components including list items, text input, dropdown, pagination, search, navigation, radio buttons, and switches
Supporting component coverage: reusable list items, inputs, dropdowns, pagination, search, navigation, selection controls, and switches extend the same visual and interaction rules across product experiences.

06 — Documentation and governance

A system becomes valuable when teams can use it correctly

Component completeness alone does not prevent inconsistency. The evolved library therefore pairs components with clearer names, definitions, property structures, examples, and guidance. This makes the intended pattern easier to discover and reduces the need to detach or rebuild instances.

How the system supports consistency

  • A shared source of truth for reusable interface patterns.
  • Predictable property naming across component families.
  • Explicit states and semantic roles instead of undocumented overrides.
  • Light and dark behavior designed as part of the component.
  • Usage documentation and examples alongside production assets.
  • A repeatable review process for deciding whether a request belongs in the system.
Rightel list component documentation covering definition, anatomy, states, layouts, and usage guidance

List component documentation: a representative example of the structure applied across the library, connecting component anatomy, interaction states, layout measurements, configuration options, and practical usage guidance.

Contribution model

  1. Identify a repeated product need.
  2. Check whether an existing component or property already supports it.
  3. Validate that the difference is functional, not accidental.
  4. Add or update the smallest reusable building block.
  5. Document the decision and review its use in a real product context.

07 — Outcomes and evidence

What changed—and what still needs measurement

Documented output

Broader component coverage

The evolved library includes structured sets for core controls, navigation, feedback, input, and supporting patterns.

Observed in the system

More predictable configuration

Variants and properties make sizes, styles, icons, themes, and interaction states visible within the component architecture.

Expected impact

Less UI drift and rework

A clearer source of truth should reduce detached instances, duplicate local components, and repeated design decisions.

Expected impact

Faster design and implementation

Reusable patterns should help designers assemble flows faster and give developers more consistent specifications.

Evidence boundary

The Figma library demonstrates the scope and structural consistency of the redesign. Adoption rate, reduction in design time, implementation speed, detached-instance frequency, and UI-defect reduction should be reported as measured outcomes only when team or product data is available.

Recommended system-health metrics

  • Component adoption across active product files.
  • Number of detached or locally recreated components.
  • Time required to design and hand off common flows.
  • Design-system-related implementation defects.
  • Coverage of required interaction and accessibility states.

08 — Reflection

Consistency is a product decision, not a cosmetic cleanup

This work reinforced that a design system should not simply collect finished UI. It should explain why components behave as they do, which differences are meaningful, and how teams can extend the system without recreating the fragmentation it was designed to solve.

The most important shift was from designing individual visual examples to defining reusable logic. By treating states, configurations, themes, and documentation as part of the component itself, the evolved system created a stronger foundation for consistent product experiences.

The next step would be to pair the library with adoption data and implementation feedback, then prioritize changes based on repeated product needs rather than the number of components alone.