Slot: Between Flexibility and Consistency

Slot: Between Flexibility and Consistency

May 30, 2024

Yi Xiao

Product Manager, Creatie

"Slot" is a new type of component properties introduced by Creatie to empower designers with enhanced flexibility in components and design systems.

Designers often struggle with the balance of flexibility and consistency when creating and using design systems during the product evolution process. Creatie empathizes with the challenges faced by these designers. The "Slot" feature is one of Creatie's solutions, providing designers with a space to seamlessly integrate different design elements without the need to detach the instance.

Discover the story behind the innovative "Slot" feature at Creatie through a conversation with Sam Yan, the visionary engineer behind its development. Dive into Sam's inspiration for creating this game-changing feature, learn how it will revolutionize workflows for designers and developers, and explore his transformative journey from an engineer to gaining profound insights into the world of design.

What motivated you to create the "Slot" feature?

Sam:At Creatie, we boast a fantastic design system. However, when translating designs into code, I often find myself in a pickle where designers detach instances and tweak specific areas. As a developer, this poses a challenge in keeping tabs on component relationships. Whenever designers make changes, it requires me to loop back with them and re-examine the code to ensure consistency. Each tweak they make adds to my workload, impacting how seamlessly I collaborate with my colleagues. To tackle this issue, I engaged in conversations with designers, including my wife (a talented UI designer), and my fellow team members to gather their perspectives on this dilemma.

Engaging with the designers was an eye-opener for me. Despite our team's efforts in upholding consistency, the real world throws curveballs that don't always fit neatly into our pre-made components. Designers are often caught in a dilemma: stick to the design system or bend the rules to cater to end users with more adaptable solutions. While talented designers can craft intricate components tailored for diverse situations by leveraging existing properties and nesting, these elaborate solutions can be tricky to execute and oversee. The complexity may result in data redundancy issues that impact file performance.

Delving into the intricacies of design systems, we have long understood the balance between flexibility and consistency. Striking this equilibrium demands meticulous communication and often results in additional tasks and coordination for our engineering team downstream. Collaborating with my peers, we've embarked on a journey to streamline this intricate process. Our aim is to alleviate the challenges designers encounter and lessen the workload that accumulates down the line. With any luck, this could reduce the friction that designers face and added workload later on.

How did you come up with "Slot" in Creatie?

Sam: Our new "Slot" feature is inspired by the slot concept in Vue.js, where slots enable a component to accept dynamic content.

With the "Slot" in Creatie, component creators can designate specific areas within a component as slots. The idea is that slots act as placeholders reserved for designers using the component. Component creators define which parts need consistency, while clearly marking where designers have the freedom to innovate. This gives users space to customize elements as needed, kind of like "render unto Caesar the things that are Caesar's, and unto God the things that are God's."

I think of it like the simple, uncluttered Wabi-sabi aesthetic that I enjoy. Declaring slots helps balance consistency across designs while leaving room for individuality. It could make achieving that balance less of a struggle for teams overall.

How can we use the "Slot" feature?

Sam: The new "Slot" feature allows for more flexibility in components, and simplifies the process of building and maintaining design systems.

At Creatie, we need to design a variety of menu iteam, many of which require corresponding keyboard shortcuts. These shortcuts are combinations of different keys in various ways. Without slots, our designers had to make tons of component variants using component properties like variants, show / hide,etc. This approach is complex and cumbersome.

Now with slots, our creators can define a slot for shortcut placement when making menu item components. Designers using those components can simply drop the appropriate keyboard shortcuts combo into the slot, without having to detach the instance. This makes it easy to design menu items tailored to specific scenarios.

Slots can also be used to define layout templates in components.

Previously, when designing the Creatie dashboard interface, different designers had to copy or redraw page layouts repeatedly. Sometimes there would be minor pixel inconsistencies in the layout and dimensions.

With the introduction of the "Slot" feature, designers at Creatie can now create "layout components" for the dashboard, and set smart layout directions and resizing behaviors for slots. When designers use these component instances, they can easily adhere to the established layout specs, designing within designated slots for the sidebar, content areas, etc.

As an engineer who has always been interested in UI design, I've been doing some exploratory research on design-to-code. I believe that introducing the slot feature could help improve the feasibility and accuracy of converting designs to code with AI. I plan to continue exploring more potential benefits this feature can bring to the development workflows.

As an engineer, how did you understand the designers' requirements and develop the feature?

Sam: When I was a child, I loved reading sci-fi novels by Asimov and dreamed of becoming a tech geek. That's why I chose computer science as my major in university. My university years coincided with the explosive growth of front-end technology and applications,with many visually stunning products emerging. I have always been drawn to simple and natural artistic styles, like Ryuichi Sakamoto's music. This fueled my desire to create visually appealing websites. To achieve this, I taught myself using design software like Photoshop.

Later, I met my now-wife, who works as a designer. When I encountered communication friction with designers at work or when my wife faced similar issues, we would discuss and share our experiences. These discussions gave me a deeper understanding of the designer's perspective. Our conversations inspired many of my ideas about design work, including the concept of the slot feature, which had her support.

I am a fan of Ravenclaw, admiring their dedication to intelligence, wisdom, and creativity. Moving forward, I hope to understand design more from a mathematical perspective and explore new ideas for design tools.

The best product design tool for small teams

Powerful features, fair pricing

The best product design tool for small teams

Powerful features, fair pricing

The best product design tool for small teams

Powerful features, fair pricing