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.

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
Pocos desarrolladores disfrutan depurando, y la depuración puede ser compleja para las aplicaciones web modernas debido a los múltiples marcos, lenguajes y bibliotecas utilizados. Pero, las herramientas de desarrollo han avanzado mucho en facilitar el proceso. En esta charla, Jecelyn profundizará en el estado moderno de la depuración, las mejoras en DevTools y cómo puedes usarlas para depurar tus aplicaciones de manera confiable.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Nuestra comprensión del rendimiento y la experiencia del usuario ha evolucionado mucho a lo largo de los años. Las herramientas de desarrollo web necesitan evolucionar de manera similar para asegurarse de que sean centradas en el usuario, accionables y contextuales donde se refiere a las experiencias modernas. En esta charla, Addy te guiará a través de cómo Chrome y otros han estado pensando en este problema y qué actualizaciones han estado haciendo a las herramientas de rendimiento para reducir la fricción para construir grandes experiencias en la web.
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
Seamos realistas: la deuda técnica es inevitable y reescribir tu código cada 6 meses no es una opción. La refactorización es un tema complejo que no tiene una solución única para todos. Las aplicaciones de frontend son particularmente sensibles debido a los frecuentes cambios de requisitos y flujos de usuario. Nuevas abstracciones, patrones actualizados y limpieza de esas viejas funciones - todo suena genial en papel, pero a menudo falla en la práctica: los todos se acumulan, los tickets terminan pudriéndose en el backlog y el código legado aparece en cada rincón de tu base de código. Por lo tanto, un proceso de refactorización continua es la única arma que tienes contra la deuda técnica.En los últimos tres años, he estado explorando diferentes estrategias y procesos para refactorizar el código. En esta charla describiré los componentes clave de un marco para abordar la refactorización y compartiré algunos de los aprendizajes acumulados en el camino. Espero que esto te ayude en tu búsqueda de mejorar la calidad del código de tus bases de código.

Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.
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
Cuando se trata de construir interfaces caprichosas, React es un aliado sorprendentemente capaz. En esta charla, te mostraré cómo uso React para orquestar interacciones complejas al profundizar en algunos ejemplos de mi blog.
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
En esta charla, construiremos nuestro propio Jarvis utilizando Web APIs y langchain. Habrá codificación en vivo.

Workshops on related topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 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.
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.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
WorkshopFree
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
WorkshopFree
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
JSNation 2023JSNation 2023
57 min
De 0 a Autenticación en una Hora para tu Aplicación JavaScript
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend Node.js + frontend Vanilla JS) para autenticar usuarios con contraseñas de un solo uso (correo electrónico) y OAuth, incluyendo:
- Autenticación de usuario: Gestión de interacciones de usuario, devolución de JWT de sesión / actualización- Gestión y validación de sesiones: Almacenamiento seguro de la sesión para solicitudes posteriores del cliente, validación / actualización de sesiones
Al final del masterclass, también abordaremos otro enfoque para la autenticación de código utilizando Flujos de Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.