Batec

Batec

Design System for La Meva Salut

Team

Team

Santi Mirabet - Product designer

Santi Mirabet - Product designer

Santi Mirabet - Product designer

Client

Client

CatSalut

CatSalut

CatSalut

Date

Date

July 2025 - January 2026

July 2025 - January 2026

July 2025 - January 2026

Overview

Overview

After years of organic and unstructured growth, the existing Design System at La Meva Salut had become outdated and was slowing down the design and iteration process instead of helping it.

My role was to rebuild the Design System from scratch, taking into account all the partial and improvised solutions that had been created over the years, making it scalable for the future, and ensuring it complied with WCAG 2.2 accessibility standards.

The result was a deliverable ready to be moved to Zeroheight, including foundations built with variables, accessible components with their corresponding documentation, and a set of customized templates.

After years of organic and unstructured growth, the existing Design System at La Meva Salut had become outdated and was slowing down the design and iteration process instead of helping it.

My role was to rebuild the Design System from scratch, taking into account all the partial and improvised solutions that had been created over the years, making it scalable for the future, and ensuring it complied with WCAG 2.2 accessibility standards.

The result was a deliverable ready to be moved to Zeroheight, including foundations built with variables, accessible components with their corresponding documentation, and a set of customized templates.

After years of organic and unstructured growth, the existing Design System at La Meva Salut had become outdated and was slowing down the design and iteration process instead of helping it.

My role was to rebuild the Design System from scratch, taking into account all the partial and improvised solutions that had been created over the years, making it scalable for the future, and ensuring it complied with WCAG 2.2 accessibility standards.

The result was a deliverable ready to be moved to Zeroheight, including foundations built with variables, accessible components with their corresponding documentation, and a set of customized templates.

Context

When the Design System is the bottleneck.

Context

When the Design System is the bottleneck.

Context

When the Design System is the bottleneck.

A tool screaming for a change.

A tool screaming for a change.

The existing Design System was a library that didn’t define usage criteria for any element and didn’t use Figma variables.
In other words, it was a UI Kit with components.

On top of that, many of those components were frequently detached to adapt to the needs of the next project.

Most of these detached and modified “ad hoc” components were eventually added back into the Design System, causing it to grow uncontrollably and creating duplicates.

The existing Design System was a library that didn’t define usage criteria for any element and didn’t use Figma variables.
In other words, it was a UI Kit with components.

On top of that, many of those components were frequently detached to adapt to the needs of the next project.

Most of these detached and modified “ad hoc” components were eventually added back into the Design System, causing it to grow uncontrollably and creating duplicates.

The existing Design System was a library that didn’t define usage criteria for any element and didn’t use Figma variables.
In other words, it was a UI Kit with components.

On top of that, many of those components were frequently detached to adapt to the needs of the next project.

Most of these detached and modified “ad hoc” components were eventually added back into the Design System, causing it to grow uncontrollably and creating duplicates.

The stepping stone.

The stepping stone.

After two years of pointing out that we were losing a lot of time in design iterations due to the lack of consistency, I proposed a couple of small changes in the way we worked with our Design System:

After two years of pointing out that we were losing a lot of time in design iterations due to the lack of consistency, I proposed a couple of small changes in the way we worked with our Design System:

After two years of pointing out that we were losing a lot of time in design iterations due to the lack of consistency, I proposed a couple of small changes in the way we worked with our Design System:

Adding variants with slot-based content for all components that used nested instances.

Setting up a Local content page for every project.

Local content

Project file

Option 1

Option 2

Option 3

Option 4

Title

Card title

Card subtitle

Card text

Infermer/a

Maria Coll Montaner

EAP Sant Just

Administratiu/va

Josep Pons

EAP Sant Just

Administratiu/va

Emili Guitart

EAP Esplugues

Els camps amb l’asterisc (*) són obligatoris

*

De què tracta la teva consulta? Posa-li un títol.

Ex: Dolor de queixal

Màxim 100 caràcters.

*

Escriu la teva consulta

Contingut

0/400

Slot component

Design System

Step N of N

Title

Lorem ipsum dolor sit amet.

Slot

Button

Button

Output

Project file

Pas 1 de 3

Selecciona el motiu

Problema de salut o malaltia

Medicació o tractament

Resultats de proves

Vacunes

Següent

Pas 2 de 3

Selecciona el servei

Els serveis poden variar depenent del motiu triat.

Unitat bàsica assistencial

Card title

Card subtitle

Card text

Infermer/a

Maria Coll Montaner

EAP Sant Just

Administratiu/va

Josep Pons

EAP Sant Just

Administratiu/va

Emili Guitart

EAP Esplugues

Anterior

Següent

Pas 3 de 3

Escriu la teva consulta

Els camps amb l’asterisc (*) són obligatoris

*

De què tracta la teva consulta? Posa-li un títol.

Ex: Dolor de queixal

Màxim 100 caràcters.

*

Escriu la teva consulta

Contingut

0/400

Anterior

Enviar consulta

Local content

Project file

Slot component

Design System

Output

Project file

Local content

Project file

Slot component

Design System

Output

Project file

This tweak allowed us to leave customized and project-specific content in the new Local content page and use fewer and more versatile container components, which reduced the time spent on design iterations by 50-80%, depending on the project.


Fun fact: one year later, Figma would add the native “slots” feature.

This tweak allowed us to leave customized and project-specific content in the new Local content page and use fewer and more versatile container components, which reduced the time spent on design iterations by 50-80%, depending on the project.


Fun fact: one year later, Figma would add the native “slots” feature.

This tweak allowed us to leave customized and project-specific content in the new Local content page and use fewer and more versatile container components, which reduced the time spent on design iterations by 50-80%, depending on the project.


Fun fact: one year later, Figma would add the native “slots” feature.

Stars aligned.

Stars aligned.

The impact of this change was noticeable and well received from the start.


At that same time, new accessibility regulations required several components to be updated, which gave me the opportunity to bring up the need to address the Design System once again.


That’s how I got the green light to dedicate half of my time over the next six months rebuilding it.

The impact of this change was noticeable and well received from the start.


At that same time, new accessibility regulations required several components to be updated, which gave me the opportunity to bring up the need to address the Design System once again.


That’s how I got the green light to dedicate half of my time over the next six months rebuilding it.

The impact of this change was noticeable and well received from the start.


At that same time, new accessibility regulations required several components to be updated, which gave me the opportunity to bring up the need to address the Design System once again.


That’s how I got the green light to dedicate half of my time over the next six months rebuilding it.

Problem

“Yes, but...”

Problem

“Yes, but...”

Problem

“Yes, but...”

I wasn’t starting from scratch.

I wasn’t starting from scratch.

While it was clear that the Design System needed a rework, La Meva Salut had been in use for over a decade and, despite all its flaws, users were familiar with it, so abrupt changes were not an option.


In consequence, the goal was to find a middle ground between the current “free for all” (different navigation patterns and components on every page) and a brand new standardized design that might feel too different from what users were used to.

While it was clear that the Design System needed a rework, La Meva Salut had been in use for over a decade and, despite all its flaws, users were familiar with it, so abrupt changes were not an option.


In consequence, the goal was to find a middle ground between the current “free for all” (different navigation patterns and components on every page) and a brand new standardized design that might feel too different from what users were used to.

While it was clear that the Design System needed a rework, La Meva Salut had been in use for over a decade and, despite all its flaws, users were familiar with it, so abrupt changes were not an option.


In consequence, the goal was to find a middle ground between the current “free for all” (different navigation patterns and components on every page) and a brand new standardized design that might feel too different from what users were used to.

The challenge

The challenge

The challenge

Design a system that works with the existing architecture and modifies the UI as little as possible, while still making it scalable for the future.

Design a system that works with the existing architecture and modifies the UI as little as possible, while still making it scalable for the future.

Design a system that works with the existing architecture and modifies the UI as little as possible, while still making it scalable for the future.

Foundations

Laying the groundwork.

Foundations

Laying the groundwork.

Foundations

Laying the groundwork.

Tokens are the name of the game.

Tokens are the name of the game.

The initial tasks were the standard of any Design System using Figma variables: defining the primitive tokens, then structuring them through semantic ones, and adding component-specific tokens where needed.

The initial tasks were the standard of any Design System using Figma variables: defining the primitive tokens, then structuring them through semantic ones, and adding component-specific tokens where needed.

The initial tasks were the standard of any Design System using Figma variables: defining the primitive tokens, then structuring them through semantic ones, and adding component-specific tokens where needed.

Lots of work in few pixels.

Lots of work in few pixels.

Since almost half of the icons in the Design System had been pulled from different icon libraries, the result was a mix of sizes, levels of detail, graphic styles, and stroke weights that made the lack of consistency hard to ignore.

Since almost half of the icons in the Design System had been pulled from different icon libraries, the result was a mix of sizes, levels of detail, graphic styles, and stroke weights that made the lack of consistency hard to ignore.

Since almost half of the icons in the Design System had been pulled from different icon libraries, the result was a mix of sizes, levels of detail, graphic styles, and stroke weights that made the lack of consistency hard to ignore.

To address the issue, I applied a 3-step process:

To address the issue, I applied a 3-step process:

To address the issue, I applied a 3-step process:

  1. Classify

  1. Classify

Separate icons from pictograms, the latter used for larger and more detailed variants.

Separate icons from pictograms, the latter used for larger and more detailed variants.

Separate icons from pictograms, the latter used for larger and more detailed variants.

  1. Review

  1. Review

Specify or correct usage inconsistencies and duplicates across the icon set.

Specify or correct usage inconsistencies and duplicates across the icon set.

Specify or correct usage inconsistencies and duplicates across the icon set.

  1. Standarize

  1. Standarize

Align sizes and weight values across the entire icon set to ensure visual consistency.

Align sizes and weight values across the entire icon set to ensure visual consistency.

Align sizes and weight values across the entire icon set to ensure visual consistency.

Components

The core.

Components

The core.

Components

The core.

An ounce of prevention is worth a pound of cure.

An ounce of prevention is worth a pound of cure.

Before creating or modifying any components, I swept the old Design System to clean up redundant elements.

Before creating or modifying any components, I swept the old Design System to clean up redundant elements.

Before creating or modifying any components, I swept the old Design System to clean up redundant elements.

Yup... we were using 3 different components for the same action.

Navigation card

Title

Description

Navigation item

Title

Description

Navigation list element

Date

Title

Description

Bread and butter.

Bread and butter.

With that set up, the following weeks were spent creating, refining, and improving more than 60 components with all their variants and nested instances.

With that set up, the following weeks were spent creating, refining, and improving more than 60 components with all their variants and nested instances.

With that set up, the following weeks were spent creating, refining, and improving more than 60 components with all their variants and nested instances.

Light

Dark

Light

Dark

Constant back and forth.

Constant back and forth.

Working on the components also implied a systematic review of the foundations to ensure that the tokens applied met the accessibility criteria.

Working on the components also implied a systematic review of the foundations to ensure that the tokens applied met the accessibility criteria.

Working on the components also implied a systematic review of the foundations to ensure that the tokens applied met the accessibility criteria.

Primary button

Background

Text

Secondary button

Background

Text

Tertiary button

Background

Text

Documentation

For the record...

Documentation

For the record...

Documentation

For the record...

Offloading the tedious work.

Offloading the tedious work.

For the component documentation, I used a mix of plugin to generate the anatomy and specs sections, and complemented it with usage guidelines and accessibility documentation aided by AI tools like Claude and ChatGPT.

For the component documentation, I used a mix of plugin to generate the anatomy and specs sections, and complemented it with usage guidelines and accessibility documentation aided by AI tools like Claude and ChatGPT.

For the component documentation, I used a mix of plugin to generate the anatomy and specs sections, and complemented it with usage guidelines and accessibility documentation aided by AI tools like Claude and ChatGPT.

Component: Add file

Component: Add file

Documentation sample

Documentation sample

Usage

Anatomy

Device

Stage

State

Accessibility

Usage

Anatomy

Device

Stage

State

Accessibility

Templates

Putting a bow on it.

Templates

Putting a bow on it.

Templates

Putting a bow on it.

One template to rule them all.

One template to rule them all.

Although outside the original scope of the project, I prepared a series of templates for landing, detail and other pages.


And just like I did with the components, I built them using slots that could handle local content, making it possible to recreate any existing page in La Meva Salut with a single template.

Although outside the original scope of the project, I prepared a series of templates for landing, detail and other pages.


And just like I did with the components, I built them using slots that could handle local content, making it possible to recreate any existing page in La Meva Salut with a single template.

Although outside the original scope of the project, I prepared a series of templates for landing, detail and other pages.


And just like I did with the components, I built them using slots that could handle local content, making it possible to recreate any existing page in La Meva Salut with a single template.

Highlight slots for local content

Local content

Highlight slots for local content

Speaking in their language.

Speaking in their language.

The reason for creating these templates was to present the project with a tangible visual output, adapted to an audience less familiar with design and more interested in the value it delivered.


So instead of showing a bunch of components and documentation, I opted for a small demo where, with just a few clicks, you could see how variables shaped the final design.

The reason for creating these templates was to present the project with a tangible visual output, adapted to an audience less familiar with design and more interested in the value it delivered.


So instead of showing a bunch of components and documentation, I opted for a small demo where, with just a few clicks, you could see how variables shaped the final design.

The reason for creating these templates was to present the project with a tangible visual output, adapted to an audience less familiar with design and more interested in the value it delivered.


So instead of showing a bunch of components and documentation, I opted for a small demo where, with just a few clicks, you could see how variables shaped the final design.

Not the heart of the matter, but...

Not the heart of the matter, but...

The old design system was called *drumroll* “Old Design system”. I couldn't pass up the chance to propose a more suitable name.


My requisites were that it should be:

The old design system was called *drumroll* “Old Design system”. I couldn't pass up the chance to propose a more suitable name.


My requisites were that it should be:

The old design system was called *drumroll* “Old Design system”. I couldn't pass up the chance to propose a more suitable name.


My requisites were that it should be:

A single word.

Easy to use in documentation and code.

In Catalan language.

As it is the primary language of the service.

Related to health or medicine.

Somewhat connected to the service’s healthcare sector.

A metaphorical concept.

More of an idea rather than a physical object.

After a brief brainstorm searching for a concept that could represent the core of a system, I landed on the idea of a heart, and that's how Batec (Heartbeat) came to mind.

After a brief brainstorm searching for a concept that could represent the core of a system, I landed on the idea of a heart, and that's how Batec (Heartbeat) came to mind.

After a brief brainstorm searching for a concept that could represent the core of a system, I landed on the idea of a heart, and that's how Batec (Heartbeat) came to mind.

Rumor has it that it’s also due to the repeated publishing of the library felt like a pulse that pushed the blood modifications across all vessels projects, but that remains to be confirmed. 🙃

Rumor has it that it’s also due to the repeated publishing of the library felt like a pulse that pushed the blood modifications across all vessels projects, but that remains to be confirmed. 🙃

Rumor has it that it’s also due to the repeated publishing of the library felt like a pulse that pushed the blood modifications across all vessels projects, but that remains to be confirmed. 🙃

Retrospective

Key takeaways.

Retrospective

Key takeaways.

Retrospective

Key takeaways.

Everyday is a school day.

I learned some things throughout this project, some of them self-taught, some of them unexpected. But if I had to point out what made the biggest difference for me, it would be:

I learned some things throughout this project, some of them self-taught, some of them unexpected. But if I had to point out what made the biggest difference for me, it would be:

I learned some things throughout this project, some of them self-taught, some of them unexpected. But if I had to point out what made the biggest difference for me, it would be:

The challenges begin long before drawing the first line in Figma.

The challenges begin long before drawing the first line in Figma.

Advocating for change was part of the job: using facts and arguments to show that evolving the Design System was the right way to go.

Advocating for change was part of the job: using facts and arguments to show that evolving the Design System was the right way to go.

Advocating for change was part of the job: using facts and arguments to show that evolving the Design System was the right way to go.

Constraints are not the enemy.

Constraints are not the enemy.

Working within an existing system rather than starting from scratch can help frame problems and guide decisions instead of limiting them.

Working within an existing system rather than starting from scratch can help frame problems and guide decisions instead of limiting them.

Working within an existing system rather than starting from scratch can help frame problems and guide decisions instead of limiting them.

Overcome analysis paralysis.

Overcome analysis paralysis.

You can draw inspiration and learn from many Design Systems, but in the end the product has to work for your own context.

In other words, what other DS do shouldn’t be treated as rules set in stone.

You can draw inspiration and learn from many Design Systems, but in the end the product has to work for your own context.

In other words, what other DS do shouldn’t be treated as rules set in stone.

You can draw inspiration and learn from many Design Systems, but in the end the product has to work for your own context.

In other words, what other DS do shouldn’t be treated as rules set in stone.

AI is a powerful tool…

AI is a powerful tool…

...But it’s still just a tool. It’s as important to knowing when to use it and when it’s faster or better to do the work yourself.

...But it’s still just a tool. It’s as important to knowing when to use it and when it’s faster or better to do the work yourself.

...But it’s still just a tool. It’s as important to knowing when to use it and when it’s faster or better to do the work yourself.

Santi Mirabet 2026

Santi Mirabet 2026

Santi Mirabet 2026