Skip to content

Figma to Vue.js

Vue keeps template, script and style for a component in one file. That suits design conversion well: one Figma component, one .vue file, with everything about it in a single place.

We write Vue 3 components from your Figma file using the Composition API and script setup, in TypeScript. Each component is presentational. It receives props, fills slots and emits events, and it knows nothing about your store or your API until you connect it.

Isometric illustration of design frames turning into browser and phone screens along a conveyor
Translation

Where each part of a design lands in a .vue file

A single-file component has three blocks. The design feeds all of them.

Template

The layer structure, reduced to the elements that carry meaning. Auto layout wrappers that exist only for spacing are dropped in favour of gap and padding.

Props

Variant properties are declared with defineProps as literal types, with defaults that match the default variant in Figma.

Slots

Swappable nested instances become named slots. A card with an optional footer in Figma has a footer slot in Vue.

Emits

Anything the user can do, such as close, select or submit, is declared as an event. Form controls support v-model.

Scoped style

Styles are scoped to the component and read their values from token custom properties, never from hard-coded hex codes.

Transitions

Enter and leave motion drawn in a prototype is built with the Transition component, using the durations the designer specified.

Tokens

Turning variables into a theme

Tokens are the link between the file and the code. They are worth setting up once and properly.

  1. Export

    Figma variables are exported to JSON, keeping collections and modes.

  2. Two layers

    Raw values such as blue-600 sit underneath. Purpose names such as surface-accent sit on top. Components use only the purpose names.

  3. Modes

    Light, dark or brand modes become alternative value sets, switched by an attribute on the root element.

  4. One source

    The same token file can feed Tailwind configuration, plain CSS or a UI kit theme, so the numbers are typed once.

Scope

Build from scratch or theme a UI kit?

Write components by hand when

  • The design has its own visual language and its own component set.
  • Bundle size matters and you need only a handful of components.
  • You are building a design system to share across several products.

Theme an existing kit when

  • The design was drawn on top of a kit such as Vuetify or PrimeVue.
  • The product is an internal tool with many data tables and form controls.
  • Complex widgets such as date pickers are needed quickly and the kit already has them.
Before hand-off

What we ask the designer to tidy

A short clean-up in Figma saves a long exchange of questions.

  • One main component per thing, not copies with small edits
  • Layer names that describe content: title, meta, actions
  • Optional parts set up as boolean properties
  • Spacing taken from variables, not typed by hand
  • Long-text and no-data versions of lists and cards
  • Focus state drawn for every control
  • Breakpoint frames at the widths your users actually have
  • Icons exported as SVG with a single colour fill
Questions

Vue-specific answers

Do you still write Vue 2 or the Options API?

We can maintain it. New components are written for Vue 3. If you are part way through a migration, tell us which side new work should land on.

Storybook or Histoire?

Storybook by default because most teams know it. Histoire is fine if you already run it.

Will components work in Nuxt?

Yes. They avoid browser-only code during setup, so they render on the server without hydration warnings.

How do we know a component matches the design?

Each story is compared with the Figma component at the agreed sizes, and differences are listed in the merge request for you to accept or reject.

What Vue component work costs

Our rates are published. Pick the role and move the sliders for an indicative budget.

Estimate your engagement

Per month AED 17,600
Total engagement AED 52,800

Get a firm quote

Rate card

RoleHourlyMonthly*
Frontend / WordPressAED 110AED 17,600
Backend / APIAED 118AED 18,880
Full-stackAED 129AED 20,640
Mobile (React Native / Flutter)AED 129AED 20,640
DevOps / CloudAED 147AED 23,520
AI / Automation engineerAED 165AED 26,400
QA / Test engineerAED 92AED 14,720
UI / UX designAED 103AED 16,480

*160 hrs/month full-time. Rates are indicative for planning, in UAE dirhams (converted from our US-dollar rates at the fixed peg of 3.6725), before VAT where applicable, and depend on seniority, contract length and timezone overlap. Longer engagements and multi-role teams are discounted — ask.

Next step

Tell us what you already have

Say which Vue version, build tool and styling method the project uses, and share the Figma file. We name the developer who would do the work and you can speak to them. We reply within one business day.

Describe the Vue project

Goes straight to our team on WhatsApp and email. We reply within one business day.

Sahab AI OS