Construyendo el Generador de Código de Widgets de Figma

Rate this content
Bookmark

Los widgets son objetos personalizados e interactivos que se colocan en un archivo de Figma o Figjam para ampliar la funcionalidad y hacer todo un poco más divertido. Se escriben en un estilo declarativo similar a los componentes de React, que se traduce para convertirse en un nodo en el lienzo. ¿Entonces se puede hacer lo contrario, del lienzo al código? ¡Sí! Discutiremos cómo utilizamos la API pública de complementos de Figma para generar código de widgets a partir de un archivo de diseño y crearemos un widget funcional juntos utilizando esto.

This talk has been presented at React Advanced 2022, check out the latest edition of this React Conference.

FAQ

El Generador de Código de Widgets de Figma es un complemento diseñado para ayudar a los usuarios a crear código para widgets en FigJam de manera eficiente, generando automáticamente componentes basados en el diseño de las capas en Figma.

Funciona seleccionando el widget deseado en FigJam, y luego el generador crea automáticamente los componentes necesarios que se pueden copiar y pegar en el editor de código. Esto simplifica el proceso de codificación y ajuste de los widgets.

FigJam es una herramienta de pizarra colaborativa en línea de Figma que permite a los usuarios añadir notas adhesivas, realizar dibujos y, lo más importante, agregar widgets que pueden ser interactuados por todos los usuarios en el archivo.

Para comenzar a desarrollar un widget en FigJam, debes tener un diseño preparado en Figma, luego usar el Generador de Código de Widgets para crear los componentes y finalmente escribir el código necesario en TypeScript utilizando la API de widgets de Figma.

Mientras que 'use state' es un hook utilizado en React para manejar el estado local, 'you sync state' es parte de la API de widgets de Figma y se utiliza para manejar el estado de manera sincronizada entre todos los usuarios que interactúan con el widget.

Para agregar una funcionalidad de votación, necesitas almacenar un estado de votantes, capturar el perfil de usuario al hacer clic y actualizar este estado. Esto se hace utilizando la API de widgets de Figma, específicamente la función 'on click' para incrementar los votos y mostrar los perfiles de los votantes.

Para instalar el Generador de Código de Widgets, simplemente busca el complemento en la comunidad de Figma y añádelo a tu aplicación de Figma. Esto te permitirá empezar a generar código para tus propios widgets directamente desde la interfaz de Figma.

El objeto global de Figma proporciona acceso a funciones y datos del archivo actual, como la creación de formas geométricas, acceso a estilos y componentes. Puede ser utilizado en la consola de Figma para manipular y obtener información sobre los elementos en el archivo.

Jenny Lea
Jenny Lea
19 min
24 Oct, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla presenta el Generador de Código de Widgets de Figma y demuestra cómo construir un widget de FigJam utilizando esta herramienta. El orador discute la implementación de la funcionalidad de votación, la funcionalidad de avatar y la funcionalidad de eliminar voto. También explican cómo funciona el complemento Generador de Código de Widgets y cómo acceder a propiedades y modificar nombres utilizando la API de complementos de Figma.

1. Introducción al Generador de Código de Widgets de Figma

Short description:

Hola a todos. Mi nombre es Jenny y soy ingeniera en Figma. En esta charla, utilizaremos el Generador de Código de Widgets de Figma para construir un widget de FigJam y discutir su creación. FigJam es una herramienta de pizarra colaborativa en línea donde puedes agregar widgets. Para hacer que los archivos de FigJam sean más flexibles, existe una API de widgets pública que te permite escribir tus propios widgets. Comenzaremos diseñando un widget de votación simple y escribiendo el código para ello. Luego, utilizaremos el complemento del generador de código de widgets para generar los componentes necesarios. Al utilizar estos componentes, podremos ver nuestro diseño cobrar vida en FigJam. ¡Comencemos!

Hola a todos. Espero que estén teniendo una conferencia encantadora hasta ahora. Mi nombre es Jenny y soy ingeniera en Figma. Estoy basada en Leeds, en el Reino Unido, así que para aquellos de ustedes que no sabían que Figma tenía un equipo de producto en Europa, ahora lo saben, y bienvenidos a esta charla sobre el Generador de Código de Widgets de Figma. Vamos a utilizarlo para construir un widget de FigJam y luego hablar sobre cómo se hizo. En mi pantalla ahora, pueden ver FigJam. Esta es la herramienta de pizarra colaborativa en línea de Figma donde puedo hacer cosas como agregar una nota adhesiva, puedo hacer algunos dibujos, y lo más importante para esta charla, puedo agregar un widget. Ahí vamos. Esto puede ser visto e interactuado por todos los que están en el archivo, que en este momento, desafortunadamente, soy solo yo. Y no están limitados a los widgets existentes. Entonces, para hacer que los archivos de FigJam sean lo más divertidos y flexibles posible, existe una API de widgets pública, una API basada en componentes bastante similar a React, que te permite escribir tus propios widgets. Y eso es lo que vamos a hacer ahora. Así que si vamos a Figma design, tengo mi design para mi widget aquí. Será simplemente un widget de votación simple con un botón aquí que se presiona para votar y que aumentará el número total de votos hasta ahora y luego colocará tu foto de perfil en un círculo y las alineará todas en la parte inferior para cuantas veces hayas votado. Entonces, también tengo un editor de código en el otro lado y este es el código de cómo se ve mi proyecto de widget. Nuevamente, es muy simple. Voy a escribir todo mi código en code.tsx y tengo un archivo package.json con un par de scripts. El que queremos es watch. Entonces, si lo ejecuto ahora, npm run watch, debería iniciar mi widget, colocar todo su código compilado en code.js y si vuelvo a FigJam, puedo ejecutar mi widget yendo a widgets, development, simple vote, y ahí vamos, dice, hola, soy un widget, que es lo que la función del widget está devolviendo. Y puedo agregar algunos signos de exclamación a esto y se actualizarán en tiempo real. Entonces, espero que este código de widget te resulte bastante familiar. Se parece mucho a React utilizando componentes JSX y algunas etiquetas de diseño específicas de Figma. Entonces, puedo tener un diseño automático, puedo tener un texto, puedo tener un rectángulo y muchos otros componentes que son similares a las cosas que puedes crear en Figma. Entonces, si volvemos a nuestro design, si quisiéramos comenzar a codificar esto desde cero, tendríamos que revisar nuestro diseño de votación simple y ver que es un marco con un diseño automático establecido. Entonces, tendríamos que comenzar agregando un diseño automático y luego tendríamos que ver las propiedades en ese diseño automático, como el espacio de cuatro y poner esto como espaciado y puedes ver que llevaría bastante tiempo. Entonces, a principios de este año, ayudé como parte de nuestra semana de creación bianual a crear un complemento generador de código de widgets y si lo ejecutamos, esto está disponible para todos en la comunidad de Figma, así que si simplemente buscas Generador de Código de Widgets de Figma, esto es algo que puedes instalar tú mismo en tu aplicación de Figma. Pero si lo ejecutamos aquí, y solo minimizaré esta ventana, lo ejecutamos y hacemos clic en la cosa de la que queremos obtener el código, nuestro widget de votación simple, puedes ver que genera todos estos componentes para nosotros, con un diseño que se parece bastante al diseño de las capas en Figma, y podemos copiar todo eso y pegarlo en nuestro editor de texto. Está dando un error con avatar, así que simplemente lo comentaremos y volveremos a él en un minuto. Pero lo que tenemos es un

2. Implementación de la Funcionalidad de Votación

Short description:

Si usamos el componente Simple Vote en nuestro código principal de widget, comenzará a parecerse a nuestro diseño. Sin embargo, nos faltan las imágenes en la parte inferior, lo cual está relacionado con el código comentado. Para resolver esto, debemos ir al componente avatar e incluir su código en nuestro archivo. Una vez que hagamos eso, el widget tendrá la apariencia deseada. Para hacer que el botón sea funcional, debemos agregar un evento onclick que actualice el array de votantes y muestre la imagen del usuario. Logramos esto utilizando la API de widgets de Figma para sincronizar el estado y almacenar el estado de los votantes, y el objeto Figma.CurrentUser para obtener el perfil del usuario. Finalmente, adjuntamos el evento onclick al botón de votación y actualizamos el número mostrado utilizando la propiedad voters.length.

La función se llama Simple Vote. Entonces, si tomamos este componente Simple Vote y lo usamos en nuestro código principal de widget, volvamos a Big Jam, está empezando a verse bastante como nuestro design ya, ¿verdad? Tenemos el degradado, tenemos el texto, todo está colocado en el lugar correcto, pero nos faltan las imágenes en la parte inferior, y eso probablemente tenga algo que ver con lo que acabo de comentar. Así que si lo volvemos a poner, se queja de que no puede encontrar el avatar. Y esto se debe a que en nuestrodesign aquí, los marcos 6, 7 y 8, todos son instancias de un componente llamado avatar, y en lugar de hacer esto en línea y escribir el código tres veces, lo que queremos que hagas es ir al componente avatar y obtener el código de eso y ponerlo en tu archivo como hicimos con simple vote. Así que ahora tenemos una función para avatar, y estas instancias están un poco más contentas. Y si volvemos a FigJam de nuevo, si tienes ojos muy agudos, podrás ver que hay tres círculos blancos tenues. Eso se debe a que están contorneados en blanco. Si cambiamos el contorno a rojo solo para ver dónde están los círculos, ahí lo tenemos. Básicamente tenemos nuestro widget. Aunque no hace nada. Así que necesitamos agregar un onclick a este botón. Entonces, cuando hagas clic, te agregará a la lista de votantes, aumentará ese número y colocará tu imagen en la parte inferior.

Bien, en simple vote, cómo vamos a hacer eso es almacenando algún estado de nuestros votantes. Probablemente reconozcas esto de React. En lugar de decir use state, vamos a decir you sync state, que es parte de la API de widgets de Figma, dale un nombre y comiénzalo como un array vacío. Como este es un archivo de TypeScript, también le daré un tipo que sé que va a ser user. Y luego queremos actualizar este array de votantes cuando alguien haga clic en el botón. Voy a crear una función onclick. Y cuando hagan clic, queremos obtener tu perfil como la persona que ha votado, porque eso nos permitirá obtener tu foto de perfil. Y para hacer eso, podemos decir que el votante es Figma.CurrentUser. Y Figma aquí es un objeto global que se proporciona en el tiempo de ejecución del widget y nos permite obtener cosas como el usuario actual y mucha otra información sobre lo que está sucediendo en el archivo. Así que ahora tenemos este votante. Sé que este votante a veces puede ser nulo. Probablemente no lo sea, pero solo para protegernos contra eso, voy a decir que si no tenemos una foto, votante, no hagamos nada. Y si tenemos un votante, vamos a establecer los votantes, obtener nuestra lista original y agregar un nuevo votante a la lista. Y nuestro OnClick no sirve de nada si no lo colocamos en ningún lugar. Así que queremos que suceda cuando hagamos clic en este botón, que podemos encontrar en el diseño porque se llama VoteButton. Y todas estas etiquetas pueden tener un OnClick adjunto. Así que voy a poner ese OnClick allí. Y también necesitamos usar el array de votantes para actualizar el número aquí. Anteriormente, tenía tres valores codificados, en su lugar, vamos a usar voters.length.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
React Summit US 2023React Summit US 2023
28 min
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
Top Content
The speaker discusses the whimsical and detailed work of Stripe, particularly their interactive and dynamic pages. They explain the use of React for building whimsical details and tracking mouse position. The speaker introduces React Spring for smooth animation and React3 Fiber for creating a 3D egg model. They also mention the use of Framer Motion and React server components for animating CSS properties.

Workshops on related topic

React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
WorkshopFree
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.