{"id":14959498,"url":"https://github.com/streamlit/figma-to-streamlit","last_synced_at":"2025-10-05T01:23:27.768Z","repository":{"id":78974102,"uuid":"528166268","full_name":"streamlit/figma-to-streamlit","owner":"streamlit","description":"Prototype plugin to turn Figma components into st code snippets","archived":false,"fork":false,"pushed_at":"2024-09-24T17:54:35.000Z","size":503,"stargazers_count":13,"open_issues_count":8,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-05T05:33:27.740Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/streamlit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-23T21:20:04.000Z","updated_at":"2025-04-04T04:42:19.000Z","dependencies_parsed_at":"2024-09-24T13:33:35.126Z","dependency_job_id":"7d2ab1e2-61a1-47de-be8d-8b09b87c7023","html_url":"https://github.com/streamlit/figma-to-streamlit","commit_stats":{"total_commits":87,"total_committers":2,"mean_commits":43.5,"dds":"0.16091954022988508","last_synced_commit":"d52b12a3cceb24e29c4a6e908c8aa768dcc0f058"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/streamlit/figma-to-streamlit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlit%2Ffigma-to-streamlit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlit%2Ffigma-to-streamlit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlit%2Ffigma-to-streamlit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlit%2Ffigma-to-streamlit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streamlit","download_url":"https://codeload.github.com/streamlit/figma-to-streamlit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlit%2Ffigma-to-streamlit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278399621,"owners_count":25980330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T13:19:50.488Z","updated_at":"2025-10-05T01:23:27.730Z","avatar_url":"https://github.com/streamlit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Figma to Streamlit plugin\n\n![Readme](https://user-images.githubusercontent.com/34423371/198328035-42f57599-4751-428a-81d0-ec5bacb182a9.jpg)\n\nA plugin to generate `st.` commands with their corresponding parameters and values, based on the components from [our existing Figma Design System](https://www.figma.com/community/file/1166786573904778097).\n\n\u003e **Warning**\n\u003e **Heads up!**\n\u003e This is an experiment from our design team. We’re releasing early to get feedback, and there’s [a lot of stuff missing](https://github.com/streamlit/figma-to-streamlit#roadmap). If you find this useful, please contribute! See our [contributing section](https://github.com/streamlit/figma-to-streamlit#contributing) below.\n\n## Installation\n\nGo to our [community profile](https://www.figma.com/@streamlit), [select the plugin](https://www.figma.com/community/plugin/1167469184805790690/Figma-to-Streamlit) and hit `Try it out`. Then, in Figma, run it from the `Plugins` tab.\n\n## How to use the plugin\n\nThis plugin is complementary to our [official Design System library](https://www.figma.com/community/file/1166786573904778097). Select a component instance, tweak its props and values, and hit `See my code` to get a code snippet you can use in your Streamlit app! Check out the video below to get a sense of how to use it 👇\n\nhttps://user-images.githubusercontent.com/34423371/191323837-34a489a7-0534-49f7-b42f-1270ed1dc895.mov\n\n## Troubleshooting\n\nIf you are running into any errors while using the plugin, check out the tips below to get unstuck:\n\n### General Advice\n\n* Make sure you're using our [official Design System library](https://www.figma.com/community/file/1166786573904778097) to generate your code snippets.\n* Make sure to keep both the Design System library and the plugin up to date with the latest versions.\n* The plugin is tightly bound to the Figma library's naming convention and layer structure, so we advise you to _avoid renaming layers_. Of course, you can update text values, change variations, but make sure layer names remain untouched.\n* Make sure you are generating the code using component instances, and not from the main component. You can get a refresher on Figma's components and instances [here](https://help.figma.com/hc/en-us/articles/360039150173-Create-and-insert-component-instances).\n* Do not detach the components.\n\n### Plugin limitations and caveats\n\n* In the spirit of releasing early and often, this plugin currently supports a subset of the full power from our open-source library. We're adding [support for new widgets and props](https://github.com/streamlit/figma-to-streamlit#roadmap) periodically, but you might hit an `unsupported widget` error with some of our Figma components. Feel free to [reach out](https://github.com/streamlit/figma-to-streamlit#submitting-an-issue) and let us know which widgets you'd like us to work on next!\n* Similarly, a few of our components are too complex to edit in Figma and recreate their code (think charts, dataframes, tables). For those, we're using placeholder snippets, allowing you to implement a generic version of the widget in your app, with a limited set of functionality.\n\nIf you are still facing issues after reviewing the pointers above, feel free to [file an issue](https://github.com/streamlit/figma-to-streamlit#submitting-an-issue) and we'll try to get to it as soon as we can. Or even better, check out our [contributing guidelines](https://github.com/streamlit/figma-to-streamlit#contributing) and give it a try at fixing it yourself!\n\n## Roadmap\n\n### Supported features\n\nThe latest version of the plugin features support for the following widget categories:\n\n* [Text elements](https://docs.streamlit.io/library/api-reference/text), except for `st.latex` and `st.markdown`.\n* [Input widgets](https://docs.streamlit.io/library/api-reference/widgets), except for `st.select_slider`.\n* [Native Chart elements](https://docs.streamlit.io/library/api-reference/charts) (that is, `st.line_chart`, `st.bar_chart`, `st.area_chart`, `st.map`)\n\n\u003e **Warning**\n\u003e **Friendly reminder:**\n\u003e Keep in mind this is an experiment from our design team. We’re releasing early to get feedback, and as you can see, there’s a lot of stuff missing. If you find the plugin useful, please contribute! See our [contributing section](https://github.com/streamlit/figma-to-streamlit#contributing) below.\n\n### Upcoming releases\n\nWe're evaluating/planning on adding support for the following in the future (in no particular order):\n\n#### More widgets\n* [Media elements](https://docs.streamlit.io/library/api-reference/media).\n* [Progress and Status](https://docs.streamlit.io/library/api-reference/status).\n* [Data display elements](https://docs.streamlit.io/library/api-reference/data).\n* [Layout and Containers](https://docs.streamlit.io/library/api-reference/layout).\n* [Control flow](https://docs.streamlit.io/library/api-reference/control-flow) (mainly `st.form` and `st.form_submit_button`).\n\n#### More variants/features\n* `st.markdown`, recognizing **bold**, _italic_, underline and ~~strikethrough~~ text format.\n* `label_visibility` param modifier for input widgets.\n* Support for optional properties, such as `language` in `st.code`, `file_name` on `st.download_button`, amongst others.\n* Global page config through [st.set_page_config](https://docs.streamlit.io/library/api-reference/utilities/st.set_page_config).\n* Plugin settings, such as the ability to add optional arguments to your snippets, such as `key` or `anchor` for text elements, ability to toggle imports on/off, amongst others.\n\n#### Other stuff\n* Adding example callbacks for some input widgets, to extend their functionality.\n* Refactoring, type annotations, an automated way to pipe widgets and data to the plugin, and a lot of other internal improvements.\n\nWant to see something else added on this list? [File an issue](https://github.com/streamlit/figma-to-streamlit#submitting-an-issue) and let us know your ideas! We'll take a look and hopefully add it at some point to the roadmap.\n\n## Submitting an issue\n\nDo you have any ideas or improvements on what we currently support with the plugin? Or found a bug that you couldn't figure out with our [troubleshooting guide](https://github.com/streamlit/figma-to-streamlit#troubleshooting)? Want to ask us a question? Feel free to use our [issue tracker](https://github.com/streamlit/figma-to-streamlit/issues) to let us know, and we'll do our best to get to your question soon!\n\n\u003e **Warning**\n\u003e **Third time's a charm.**\n\u003e Remember, this is an experiment from our design team. We’re doing this on the side, along with the rest of our normal work stuff, so please be patient if you don't get a reply right away. And if you find the plugin useful, please contribute! See our [contributing section](https://github.com/streamlit/figma-to-streamlit#contributing) below.\n\n## Contributing\n\nThanks for your interest in helping with this plugin's development! Please see the instructions below to install everything locally, and contributing guidelines.\n\n### Guidelines\n\nIf your contribution is more than a few lines of code, then prior to starting to code on it please post in the issue saying you want to volunteer, and then wait for a positive response. And if there is no issue for it yet, create it first!\n\nThis helps make sure:\n1. Two people aren't working on the same thing;\n2. This is something maintainers believe should be implemented/fixed;\n3. Any API, UI, or deeper architectural changes that need to be implemented have been fully thought through by our maintainers;\n4. Your time is well spent!\n\nReady? Let's go! 🚀\n\n### Running the plugin locally\n\nBelow are the steps to get the plugin running in your machine. You can also find more detailed instructions in [Figma's setup guide](https://www.figma.com/plugin-docs/setup/).\n\n1. First, check if you have node installed on your machine by opening a terminal window and running:\n\n```bash\nnode -v\n```\n\n2. If the command above outputs a version number, then you can safely skip this step. If you don't get anything back, or get a `node command not found` error, you need to download Node.js which comes with NPM. This will allow you to install TypeScript and other libraries. You can find the download link [here](https://nodejs.org/en/download/).\n3. After installing Node, install Typescript by running the following command in a terminal window:\n\n```bash\nnpm install -g typescript\n```\n\n4. After you've installed these global libraries, you need to clone the repo in your working directory:\n\n```bash\ngit clone https://github.com/streamlit/figma-to-streamlit\n```\n\n5. Then, enter the `figma-to-streamlit` directory and `npm install` the plugin's dependencies:\n\n```bash\ncd figma-to-streamlit\nnpm install\n```\n\n6. After dependencies are installed, build the plugin by running:\n\n```bash\nnpm run dev\n```\n\nIf all goes well, you should see an output similar to the following on your Terminal 👇\n\n![output 1](https://user-images.githubusercontent.com/34423371/191566540-48a72a0a-8da9-44c4-a229-b35f94b128ed.png)\n\nMake sure to keep the process running while you are developing to automatically watch the files for changes.\n\n### Loading the development version of the plugin in Figma\n\nAfter you've completed the setup instructions above, it's time to run the plugin in Figma.\n\n1. First, [Get the Figma desktop app](https://www.figma.com/downloads/) if you don't have it, since you need the desktop version to develop the plugin locally.\n2. Log in to your Figma account and open the file editor in the Figma desktop app. You can open any existing document or create a new one.\n3. Go to `Menu \u003e Plugins \u003e Development \u003e Import plugin from manifest...`, find the `figma-to-streamlit` folder you've cloned above, locate the `manifest.json` file, and open it.\n4. In the `plugins` tab, you should now see `Figma to Streamlit` under `Development`, and you can run it by hovering over it and clicking `Run`, or by going to `Menu \u003e Plugins \u003e Development \u003e Figma to Streamlit`.\n5. That's it! You might want to open the console tab by hitting `Cmd + Shift + I` as well, for easier development flow.\n\n### License\n\nThis plugin is completely free and open-source, licensed under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamlit%2Ffigma-to-streamlit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamlit%2Ffigma-to-streamlit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamlit%2Ffigma-to-streamlit/lists"}