Skip to content

Conversation

@jaugustin
Copy link

Summary

This MR introduces an experimental workflow for exporting Figma designs directly to Twig + Tailwind components.

The goal is to streamline the design-to-code workflow and improve consistency between UI and implementation.

How it works

  • Component mapping: Each Figma component instance is replaced with a Twig component, using the Figma component’s name as the Twig component name.

  • Property binding: Figma component properties are converted into Twig attributes.

  • Component composition: If a Figma component includes a Frame named TwigContent, its content will be rendered as HTML/Tailwind inside the Twig component tags.

Example

You can test it, on the Figma example file: https://www.figma.com/design/2SO4cvRbzKcTIPdY76FEDW/Figma-to-Twig?node-id=2185-255&p=f&m=dev

image
<div class="w-[400px] px-8 py-10 bg-white inline-flex flex-col justify-start items-start gap-10 overflow-hidden">
  <div class="self-stretch pb-10 border-b border-[#eeeeee] flex flex-col justify-start items-start gap-5">
    <div class="justify-start text-black text-base font-normal font-['Roboto_Mono'] leading-6">Simple component</div>
    <twig:ButtonBrand />
  </div>
  <div class="self-stretch pb-10 border-b border-[#eeeeee] flex flex-col justify-start items-start gap-5">
    <div class="justify-start text-black text-base font-normal font-['Roboto_Mono'] leading-6">Component with properties</div>
    <twig:TextRow disabled="false" error="There is an error" help="Coucou ça va " label="Label" placeholder="e.g. Placeholder" />
  </div>
  <div class="self-stretch flex flex-col justify-start items-start gap-5">
    <div class="justify-start text-black text-base font-normal font-['Roboto_Mono'] leading-6">Component with nested content</div>
    <twig:ToggleRow checked="false">
      <div class="flex-1 inline-flex flex-col justify-start items-start gap-1 overflow-hidden">
        <div class="self-stretch justify-start text-[#222222] text-base font-normal leading-6">Label of the toggle</div>
        <div class="self-stretch justify-start text-[#777777] text-sm font-normal leading-5">This is description isn’t part of the component but was added through TwigContent component swap</div>
      </div>
    </twig:ToggleRow>
  </div>
</div>

Notes

This feature is experimental and may evolve based on design and dev feedback.
This feature is enable with a Twig button in tailwind tabs

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants