{"repo":"onlook-dev/onlook","free":true,"listed":false,"github":"https://github.com/onlook-dev/onlook","clone":"git clone https://github.com/onlook-dev/onlook.git","description":"The Cursor for Designers • An Open-Source AI-First Design tool • Visually build, style, and edit your React App with AI","language":"TypeScript","stars":26499,"topics":["ai","cursor","cursor-ai","design","design-to-code","drizzle","editor","figma","frontend","ide","low-code","nextjs","react","supabase","tailwindcss","typescript","ui","vibe-coding","vibecoding"],"license":"Apache-2.0","category":"design_tool","readme_excerpt":"<!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->\n\n<div align=\"center\">\n<img width=\"800\" alt=\"header image\" src=\"assets/web-preview.png\">\n<h3 align=\"center\">Onlook</h3>\n  <p align=\"center\">\n    <strong>The design tool for AI-native designers — now in early access.</strong>\n    <br />\n    Onlook makes designing on top of your codebase effortless. Craft exceptional experiences with AI in code.\n    <br />\n    <br />\n    <a href=\"https://www.onlook.com/waitlist?utm_source=github&utm_medium=readme&utm_campaign=waitlist-2026\"><strong>→ Join the waitlist</strong></a>\n  </p>\n  <p align=\"center\">\n    👨‍💻👩‍💻👨‍💻\n    <a href=\"https://www.ycombinator.com/companies/onlook/jobs/e4gHv1n-founding-engineer-fullstack\">We're hiring engineers in SF!</a>\n    👩‍💻👨‍💻👩‍💻\n  </p>\n    <br />\n    <a href=\"https://youtu.be/RSX_3EaO5eU?feature=shared\">View Demo</a>\n    ·\n    <a href=\"https://github.com/onlook-dev/onlook/issues/new?labels=bug&template=bug-report---.md\">Report Bug</a>\n    ·\n    <a href=\"https://github.com/onlook-dev/onlook/issues/new?labels=enhancement&template=feature-request---.md\">Request Feature</a>\n  </p>\n  <!-- PROJECT SHIELDS -->\n<!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n-->\n<!-- [![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![Apache License][license-shield]][license-url] -->\n\n[![Discord][discord-shield]][discord-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n[![Twitter][twitter-shield]][twitter-url]\n\n[中文](https://www.readme-i18n.com/onlook-dev/onlook?lang=zh) |\n[Español](https://www.readme-i18n.com/onlook-dev/onlook?lang=es) |\n[Deutsch](https://www.readme-i18n.com/onlook-dev/onlook?lang=de) |\n[français](https://www.readme-i18n.com/onlook-dev/onlook?lang=fr) |\n[Português](https://www.readme-i18n.com/onlook-dev/onlook?lang=pt) |\n[Русский](https://www.readme-i18n.com/onlook-dev/onlook?lang=ru) |\n[日本語](https://www.readme-i18n.com/onlook-dev/onlook?lang=ja) |\n[한국어](https://www.readme-i18n.com/onlook-dev/onlook?lang=ko)\n\n</div>\n\n> This is the open-source visual editor that started Onlook (Next.js + Tailwind). The hosted product we're building next, for AI-native designers, is in early access via the [waitlist](https://www.onlook.com/waitlist?utm_source=github&utm_medium=readme&utm_campaign=waitlist-2026) above.\n\n\n# An Open-Source, Visual-First Code Editor\n\nCraft websites, prototypes, and designs with AI in Next.js + TailwindCSS. Make\nedits directly in the browser DOM with a visual editor. Design in realtime with\ncode. An open-source alternative to Bolt.new, Lovable, V0, Replit Agent, Figma\nMake, Webflow, etc.\n\n\n## What you can do with Onlook:\n\n- [x] Create Next.js app in seconds\n  - [x] Start from text or image\n  - [x] Use prebuilt templates\n- [x] Visually edit your app\n  - [x] Use Figma-like UI\n  - [x] Preview your app in real-time\n  - [x] Manage brand assets and tokens\n  - [x] Create and navigate to Pages\n  - [x] Browse layers\n  - [x] Manage project Images\n  - [x] Detect and use Components – _Previously in\n        [Onlook Desktop](https://github.com/onlook-dev/desktop)_\n  - [ ] Drag-and-drop Components Panel\n  - [x] Use Branching to experiment with designs\n- [x] Development Tools\n  - [x] Real-time code editor\n  - [x] Save and restore from checkpoints\n  - [x] Run commands via CLI\n  - [x] Connect with app marketplace\n- [x] Deploy your app in seconds\n  - [x] Generate sharable links\n  - [x] Link your custom domain    \n- [ ] Collaborate with your team\n  - [x] Real-time editing\n  - [ ] Leave comments\n- [ ] Advanced AI capabilities\n  - [x] Queue multiple messages at once\n  - [ ] Use Images as references and as assets in a project\n  - [ ] Setup and use MCPs in projects\n  - [ ] Allow Onlook to use itself as a toolcall for branch creation and iteration\n- [ ] Advanced project support\n  - [ ] Support non-NextJS projects\n  - [ ] Support non-Tailwind projects\n\n![Onlook-GitHub-Example](https://github.com/user-attachments/assets/642de37a-72cc-4056-8eb7-8eb42714cdc4)\n\n## Getting Started\n\nUse our [hosted app](https://onlook.com) or\n[run locally](https://docs.onlook.com/developers/running-locally).\n\n### Usage\n\nOnlook will run on any Next.js + TailwindCSS project, import your project into\nOnlook or start from scratch within the editor.\n\nUse the AI chat to create or edit a project you're working on. At any time, you\ncan always right-click an element to open up the exact location of the element\nin code.\n\n<img width=\"600\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4ad9f411-b172-4430-81ef-650f4f314666\" />\n\n<br>\n\nDraw-in new divs and re-arrange them within their parent containers by\ndragging-and-dropping.\n\n<img width=\"600\" alt=\"image\" src=\"assets/insert-div.png\">\n\n<br>\n\nPreview the code side-by-side with your site design.\n\n<img width=\"600\" alt=\"image\" src=\"assets/code-connect.png\">\n\n<br>\n\nUse Onlook's editor toolbar to adjust Tailwind styles, directly manipulate\nobjects, and experiment with layouts.\n\n<img width=\"600\" alt=\"image\" src=\"assets/text-styling.png\" />\n\n## Documentation\n\nFor full documentation, visit [docs.onlook.com](https://docs.onlook.com)\n\nTo see how to Contribute, visit\n[Contributing to Onlook](https://docs.onlook.com/developers) in our docs.\n\n## How it works\n\n<img width=\"676\" alt=\"architecture\" src=\"assets/architecture.png\">\n\n1. When you create an app, we load the code into a web container\n2. The container runs and serves the code\n3. Our editor receives the preview link and displays it in an iFrame\n4. Our editor reads and indexes the code from the container\n5. We instrument the code in order to map elements to their place in code\n6. When the element is edited, we edit the element in our iFrame, then in code\n7. Our AI chat also has code access and tools to understand and edit the code\n\nThis architecture can theoretically scale to any language or framework that\ndisplays DOM elements declaratively (e.g. jsx/tsx/html). We are focused on\nmaking it work well with Next.js and TailwindCSS for now.\n\nFor a full walkthrough, check out our\n[Architecture Docs](https://docs.onlook.com/developers/architecture).\n\n### Our Tech Stack\n\n#### Front-end\n\n- [Next.js](https://nextjs.org/) - Full stack\n- [TailwindCSS](https://tailwindcss.com/) - Styling\n- [tRPC](https://trpc.io/) - Server interface\n\n#### Database\n\n- [Supabase](https://supabase.com/) - Auth, Database, Storage\n- [Drizzle](https://orm.drizzle.team/) - ORM\n\n#### AI\n\n- [AI SDK](https://ai-sdk.dev/) - LLM client\n- [OpenRouter](https://openrouter.ai/) - LLM model provider\n- [Morph Fast Apply](https://morphllm.com) - Fast apply model provider\n- [Relace](https://relace.ai) - Fast apply model provider\n\n#### Sandbox and hosting\n\n- [CodeSandboxSDK](https://codesandbox.io/docs/sdk) - Dev sandbox\n- [Freestyle](https://www.freestyle.sh/) - Hosting\n\n#### Runtime\n\n- [Bun](https://bun.sh/) - Monorepo, runtime, bundler\n- [Docker](https://www.docker.com/) - Container management\n\n## Contributing\n\n![image](https://github.com/user-attachments/assets/ecc94303-df23-46ae-87dc-66b040396e0b)\n\nIf you have a suggestion that would make this better, please fork the repo and\ncreate a pull request. You can also\n[open issues](https://github.com/onlook-dev/onlook/issues).\n\nSee the [CONTRIBUTING.md](CONTRIBUTING.md) for instructions and code of conduct.\n\n#### Contributors\n\n<a href=\"https://github.com/onlook-dev/onlook/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=onlook-dev/onlook\" />\n</a>\n\n## Contact\n\n![image](https://github.com/user-attachments/assets/60684b68-1925-4550-8efd-51a1509fc953)\n\n- Team: [Discord](https://discord.gg/hERDfFZCsH) -\n  [Twitter](https://twitter.com/onlookdev) -\n  [LinkedIn](https://www.linkedin.com/company/onlook-dev/) -\n  [Email](mailto:contact@onlook.com) - [YouTube](https://youtube.com/@onlookdev)\n- Project:\n  [https://github.com/onlook-dev/onlook](https://github.com/onlook-dev/onlook)\n- Website: [https://onlook.com](https://onlook.com/?utm_source=github&utm_medium=readme&utm_campaign=waitlist-2026)\n\n## License\n\nDistributed under the Apache 2.0 License. See [LICENSE.md](LICENSE.md) for more\ninformation.\n\n<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->\n\n[contributors-shield]: https://img.shields.io/github/contributors/onlook-dev/studio.svg?style=for-the-badge\n[contributors-url]: https://github.com/onlook-dev/onlook/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/onlook-dev/studio.svg?style=for-the-badge\n[forks-url]: https://github.com/onlook-dev/onlook/network/members\n[stars-shield]: https://img.shields.io/github/stars/onlook-dev/studio.svg?style=for-the-badge\n[stars-url]: https://github.com/onlook-dev/onlook/stargazers\n[issues-shield]: https://img.shields.io/github/issues/onlook-dev/studio.svg?style=for-the-badge\n[issues-url]: https://github.com/onlook-dev/onlook/issues\n[license-shield]: https://img.shields.io/github/license/onlook-dev/studio.svg?style=for-the-badge\n[license-url]: https://github.com/onlook-dev/onlook/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?logo=linkedin&colorB=555\n[linkedin-url]: https://www.linkedin.com/company/onlook-dev\n[twitter-shield]: https://img.shields.io/badge/-Twitter-black?logo=x&colorB=555\n[twitter-url]: https://x.com/onlookdev\n[discord-shield]: https://img.shields.io/badge/-Discord-black?logo=discord&colorB=555\n[discord-url]: https://discord.gg/hERDfFZCsH\n[React.js]: https://img.shields.io/badge/react-%2320232a.svg?logo=react&logoColor=%2361DAFB\n[React-url]: https://reactjs.org/\n[TailwindCSS]:","default_branch":"main","files":1695,"tree":[".dockerignore",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/help_wanted.md",".github/dependabot.yml",".github/pull_request_template.md",".github/workflows/chromatic.yml",".github/workflows/ci.yml",".github/workflows/supabase-push-staging.yml",".gitignore",".gitmodules",".prettierignore",".vscode/.debug.script.mjs",".vscode/extensions.json",".vscode/launch.json",".vscode/tasks.json","AGENTS.md","CLAUDE.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Dockerfile","LICENSE.md","README.md","SECURITY.md","apps/backend/.env.example","apps/backend/.gitignore","apps/backend/README.md","apps/backend/package.json","apps/backend/supabase/.gitignore","apps/backend/supabase/config.toml","apps/backend/supabase/migrations/0000_same_human_robot.sql","apps/backend/supabase/migrations/0001_graceful_exodus.sql","apps/backend/supabase/migrations/0002_red_crusher_hogan.sql","apps/backend/supabase/migrations/0003_loud_ozymandias.sql","apps/backend/supabase/migrations/0004_pink_expediter.sql","apps/backend/supabase/migrations/0005_short_lila_cheney.sql","apps/backend/supabase/migrations/0006_rls.sql","apps/backend/supabase/migrations/0007_realtime_rls.sql","apps/backend/supabase/migrations/0008_preview-img-storage.sql","apps/backend/supabase/migrations/0009_project_img_path.sql","apps/backend/supabase/migrations/0010_bent_edwin_jarvis.sql","apps/backend/supabase/migrations/0011_typical_clea.sql","apps/backend/supabase/migrations/0012_file-transfer-bucket.sql","apps/backend/supabase/migrations/0013_aspiring_kabuki.sql","apps/backend/supabase/migrations/0014_military_marrow.sql","apps/backend/supabase/migrations/0015_same_leo.sql","apps/backend/supabase/migrations/0016_pretty_dust.sql","apps/backend/supabase/migrations/0017_small_xavin.sql","apps/backend/supabase/migrations/0018_lush_thanos.sql","apps/backend/supabase/migrations/0019_abandoned_psylocke.sql","apps/backend/supabase/migrations/meta/0000_snapshot.json","apps/backend/supabase/migrations/meta/0001_snapshot.json","apps/backend/supabase/migrations/meta/0002_snapshot.json","apps/backend/supabase/migrations/meta/0003_snapshot.json","apps/backend/supabase/migrations/meta/0004_snapshot.json","apps/backend/supabase/migrations/meta/0005_snapshot.json","apps/backend/supabase/migrations/meta/0006_snapshot.json","apps/backend/supabase/migrations/meta/0007_snapshot.json","apps/backend/supabase/migrations/meta/0008_snapshot.json","apps/backend/supabase/migrations/meta/0009_snapshot.json","apps/backend/supabase/migrations/meta/0010_snapshot.json","apps/backend/supabase/migrations/meta/0011_snapshot.json","apps/backend/supabase/migrations/meta/0012_snapshot.json","apps/backend/supabase/migrations/meta/0013_snapshot.json","apps/backend/supabase/migrations/meta/0014_snapshot.json","apps/backend/supabase/migrations/meta/0015_snapshot.json","apps/backend/supabase/migrations/meta/0016_snapshot.json","apps/backend/supabase/migrations/meta/0017_snapshot.json","apps/backend/supabase/migrations/meta/0018_snapshot.json","apps/backend/supabase/migrations/meta/0019_snapshot.json","apps/backend/supabase/migrations/meta/_journal.json","apps/backend/tsconfig.json","apps/web/.gitignore","apps/web/README.md","apps/web/client/.env.example","apps/web/client/.gitignore","apps/web/client/.storybook/main.ts","apps/web/client/.storybook/mocks/supabase-client.ts","apps/web/client/.storybook/mocks/trpc-react.tsx","apps/web/client/.storybook/preview-head.html","apps/web/client/.storybook/preview.tsx","apps/web/client/.storybook/vitest.setup.ts","apps/web/client/README.md","apps/web/client/chromatic.config.json","apps/web/client/components.json","apps/web/client/eslint.config.js","apps/web/client/messages/en.d.json.ts","apps/web/client/messages/en.json","apps/web/client/messages/es.json","apps/web/client/messages/ja.json","apps/web/client/messages/ko.json","apps/web/client/messages/zh.json","apps/web/client/next.config.ts","apps/web/client/package.json","apps/web/client/postcss.config.js","apps/web/client/public/assets/about-daniel.png","apps/web/client/public/assets/about-kiet.png","apps/web/client/public/assets/about-office-1.png","apps/web/client/public/assets/about-office-2.png","apps/web/client/public/assets/about-office-3.png","apps/web/client/public/assets/about-office-4.png","apps/web/client/public/assets/about-office-5.png","apps/web/client/public/assets/demo-docs.png","apps/web/client/public/assets/dunes-create-dark.png","apps/web/client/public/assets/dunes-create-light.png","apps/web/client/public/assets/dunes-login-dark.png","apps/web/client/public/assets/dunes-login-light.png","apps/web/client/public/assets/layers-car.mp4","apps/web/client/public/assets/logo-claude-code.svg","apps/web/client/public/assets/logo-codex.svg","apps/web/client/public/assets/mountains.png","apps/web/client/public/assets/new-yt-thumbnail.png","apps/web/client/public/assets/profile-picture.png","apps/web/client/public/assets/site-version-1.png","apps/web/client/public/assets/site-version-2.png","apps/web/client/public/assets/site-version-3.png","apps/web/client/public/assets/site-version-4.png","apps/web/client/public/assets/testimonials-aaron.png","apps/web/client/public/assets/testimonials-adam.png","apps/web/client/public/assets/testimonials-john.png","apps/web/client/public/assets/testimonials-kawai.png","apps/web/client/public/assets/testimonials-koder.png","apps/web/client/public/assets/testimonials-ryutaro.png","apps/web/client/public/assets/testimonials-tina.png","apps/web/client/public/assets/testimonials-utsumaru.png","apps/web/client/public/assets/the___daniel_httpss.mj.run0PLeZ5UEQR0_Metallic_chair_with_a_b_df9ea8f5-80e6-494a-9275-e01030e157b9_2.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.run4iXjsEavMyQ_minimalist_interior_wit_310f6c88-ea16-448f-af55-16f51782132a_1.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.run8EdjwNCSTns_black_leather_bar_stool_013dbd70-a2cc-44f7-a314-bbe275b86563_3.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runAp9BRoSUG-Q_silhouette_of_a_black_b_66ef6127-e9fd-4a70-8769-989d81178b23_1.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runF-rvbzgq3F8_brutalist_dark_glass_va_748a3c8c-a6a5-4840-93e7-efbbffcce8f1_1.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runIdTptP6hhTA_a_metallic_brushed_meta_76b89c75-015d-4127-bef8-cbf67bf63e3d_2 (1).jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runKt88JTu6rPQ_golden_muted_sharp_inte_324633e8-d399-4025-9a0f-a6010f1c4df2_0.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runMVYWfDFX_XE_realistic_contemporary__fe607fdd-058e-47bf-ab6f-d22b732c2f66_2.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runPguWEsbeT0k_two_minimalist_zig-zag__7f026ef1-b94a-4fce-a7c3-551f51cf0726_0.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runSh8wz2Xb28A_lounge_chair_against_a__ddb9bc7d-889d-4ea1-9129-48646172c544_2.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runcW6Xiv8NRPs_close-up_of_two_ceramic_de5b83cb-7ee5-4430-af5b-f868d487ebe4_2.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runpYhbRvhCgnQ_minimalist_metalic_shee_8daa01a7-2b6e-4bb4-9e13-6c6ac6f05959_1.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runtlX3nAWDPCk_Living_room_with_metal__53bf67c2-354a-4072-bd46-abf7aa0e555e_0.jpg","apps/web/client/public/assets/the___daniel_httpss.mj.runzX8_66H3mvo_spikey_ceramic_iron_met_4e9c30d0-e0cd-4f56-87f7-f62c2f691c08_2.jpg","apps/web/client/public/favicon.ico","apps/web/client/public/onlook-preload-script.js","apps/web/client/public/scenes/flow-background.json","apps/web/client/src/app/_components/auth-modal.tsx","apps/web/client/src/app/_components/button-link.tsx","apps/web/client/src/app/_components/hero/ai-features-hero.tsx","apps/web/client/src/app/_components/hero/ai-frontend-hero.tsx","apps/web/client/src/app/_components/hero/builder-features-hero.tsx","apps/web/client/src/app/_components/hero/claude-code-hero.tsx","apps/web/client/src/app/_components/hero/create-error.tsx","apps/web/client/src/app/_components/hero/create.tsx","apps/web/client/src/app/_components/hero/features-hero.tsx","apps/web/client/src/app/_components/hero/high-demand.tsx","apps/web/client/src/app/_components/hero/import.tsx","apps/web/client/src/app/_components/hero/index.tsx","apps/web/client/src/app/_components/hero/mobile-email-capture.tsx","apps/web/client/src/app/_components/hero/start-blank.tsx","apps/web/client/src/app/_components/hero/unicorn-background.tsx","apps/web/client/src/app/_components/landing-page/ai-benefits-section.tsx","apps/web/client/src/app/_components/landing-page/ai-features-grid-section.tsx","apps/web/client/src/app/_components/landing-page/ai-features-intro-section.tsx","apps/web/client/src/app/_components/landing-page/benefits-section.tsx","apps/web/client/src/app/_components/landing-page/builder-benefits-section.tsx","apps/web/client/src/app/_components/landing-page/builder-features-grid-section.tsx","apps/web/client/src/app/_components/landing-page/builder-features-intro-section.tsx","apps/web/client/src/app/_components/landing-page/code-one-to-one-section.tsx","apps/web/client/src/app/_components/landing-page/color-swatch-group.tsx","apps/web/client/src/app/_components/landing-page/contributor-section.tsx","apps/web/client/src/app/_components/landing-page/contributor.css","apps/web/client/src/app/_components/landing-page/cta-section.tsx","apps/web/client/src/app/_components/landing-page/design-mockup/design-mockup-icons.tsx","apps/web/client/src/app/_components/landing-page/design-mockup/design-mockup.tsx","apps/web/client/src/app/_components/landing-page/faq-dropdown.tsx","apps/web/client/src/app/_components/landing-page/faq-section.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/ai-chat-preview-block.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/brand-compliance.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/components.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/direct-editing.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/layers.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/responsive-website.tsx","apps/web/client/src/app/_components/landing-page/feature-blocks/revision-history.tsx","apps/web/client/src/app/_components/landing-page/features-grid-section.tsx","apps/web/client/src/app/_components/landing-page/features-intro-section.tsx","apps/web/client/src/app/_components/landing-page/illustrations.tsx","apps/web/client/src/app/_components/landing-page/obsess-for-hours-section.tsx","apps/web/client/src/app/_components/landing-page/onlook-interface-mockup.tsx","apps/web/client/src/app/_components/landing-page/page-footer.tsx","apps/web/client/src/app/_components/landing-page/responsive-mockup-section.tsx","apps/web/client/src/app/_components/landing-page/social-proof-section.tsx","apps/web/client/src/app/_components/landing-page/testimonials-section.tsx","apps/web/client/src/app/_components/landing-page/what-can-onlook-do-section.tsx","apps/web/client/src/app/_components/login-button.tsx","apps/web/client/src/app/_components/shared/mockups/ai-chat-interactive.tsx","apps/web/client/src/app/_components/shared/mockups/components-mockup.tsx","apps/web/client/src/app/_components/shared/mockups/direct-editing-interactive.tsx","apps/web/client/src/app/_components/shared/mockups/tailwind-color-editor.tsx","apps/web/client/src/app/_components/theme.tsx","apps/web/client/src/app/_components/top-bar/github.tsx","apps/web/client/src/app/_components/top-bar/index.tsx","apps/web/client/src/app/_components/top-bar/mega-menu.tsx","apps/web/client/src/app/_components/top-bar/mobile-menu.tsx","apps/web/client/src/app/_components/top-bar/user.tsx","apps/web/client/src/app/_components/website-layout.tsx","apps/web/client/src/app/about/layout.tsx","apps/web/client/src/app/about/page.tsx","apps/web/client/src/app/api/chat/helpers/index.ts","apps/web/client/src/app/api/chat/helpers/stream.ts","apps/web/client/src/app/api/chat/helpers/usage.ts","apps/web/client/src/app/api/chat/route.ts","apps/web/client/src/app/api/email-capture/route.ts","apps/web/client/src/app/api/trpc/[trpc]/route.ts","apps/web/client/src/app/auth/auth-context.tsx","apps/web/client/src/app/auth/callback/route.ts","apps/web/client/src/app/auth/redirect/page.tsx","apps/web/client/src/app/callback/github/install/page.tsx","apps/web/client/src/app/callback/stripe/cancel/page.tsx","apps/web/client/src/app/callback/stripe/message-screen.tsx","apps/web/client/src/app/callback/stripe/success/page.tsx","apps/web/client/src/app/faq/layout.tsx","apps/web/client/src/app/faq/page.tsx","apps/web/client/src/app/features/ai-for-frontend/layout.tsx","apps/web/client/src/app/features/ai-for-frontend/page.tsx","apps/web/client/src/app/features/ai/layout.tsx","apps/web/client/src/app/features/ai/page.tsx","apps/web/client/src/app/features/builder/layout.tsx","apps/web/client/src/app/features/builder/page.tsx","apps/web/client/src/app/features/layout.tsx","apps/web/client/src/app/features/page.tsx","apps/web/client/src/app/features/prototype/layout.tsx","apps/web/client/src/app/features/prototype/page.tsx","apps/web/client/src/app/fonts.ts","apps/web/client/src/app/invitation/[id]/_components/auth.tsx","apps/web/client/src/app/invitation/[id]/_components/main.tsx","apps/web/client/src/app/invitation/[id]/layout.tsx","apps/web/client/src/app/invitation/[id]/page.tsx","apps/web/client/src/app/layout.tsx","apps/web/client/src/app/login/actions.tsx","apps/web/client/src/app/login/error.tsx","apps/web/client/src/app/login/page.tsx","apps/web/client/src/app/not-found.tsx","apps/web/client/src/app/page.tsx","apps/web/client/src/app/pricing/page.tsx","apps/web/client/src/app/privacy-policy/page.tsx","apps/web/client/src/app/project/[id]/_components/bottom-bar/index.tsx","apps/web/client/src/app/project/[id]/_components/bottom-bar/restart-sandbox-button.tsx","apps/web/client/src/app/project/[id]/_components/bottom-bar/terminal-area.tsx","apps/web/client/src/app/project/[id]/_components/bottom-bar/terminal.tsx","apps/web/client/src/app/project/[id]/_components/branch/branch-controls.tsx","apps/web/client/src/app/project/[id]/_components/branch/branch-list.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/gesture.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/resize-handles.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/top-bar/branch.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/top-bar/helpers.ts","apps/web/client/src/app/project/[id]/_components/canvas/frame/top-bar/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/top-bar/page-selector.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frame/use-frame-reload.ts","apps/web/client/src/app/project/[id]/_components/canvas/frame/use-sandbox-timeout.ts","apps/web/client/src/app/project/[id]/_components/canvas/frame/view.tsx","apps/web/client/src/app/project/[id]/_components/canvas/frames.tsx","apps/web/client/src/app/project/[id]/_components/canvas/hotkeys/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/drag-select.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/buttons/chat.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/buttons/code.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/buttons/helpers.ts","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/buttons/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/measurement.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/rect/base.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/rect/click.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/rect/hover.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/rect/insert.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/rect/resize.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/snap-guidelines.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/elements/text.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/index.tsx","apps/web/client/src/app/project/[id]/_components/canvas/overlay/pan.tsx","apps/web/client/src/app/project/[id]/_components/canvas/recenter-canvas-button.tsx","apps/web/client/src/app/project/[id]/_components/canvas/selection-utils.ts","apps/web/client/src/app/project/[id]/_components/clone-project-dialog.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/div-selected.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/border-color.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/border.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/color-background.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/direction.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/gap.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/horizontal-align.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/index.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/type.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/display/vertical-align.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/height.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/img-background.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/img-fit.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/margin.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/opacity.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/padding.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/radius.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/state-dropdown.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/dropdowns/width.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/frame-selected/device-selector.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/frame-selected/index.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/frame-selected/rotate-group.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/frame-selected/theme-group.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/frame-selected/window-actions-group.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-background-image-update.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-box-control.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-color-update.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-dimension-control.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-dropdown-manager.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-gradient-update.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-input-control.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-measure-group.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hooks/use-text-control.ts","apps/web/client/src/app/project/[id]/_components/editor-bar/hover-tooltip.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/img-selected.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/index.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/color-picker.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-color.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-dropdown.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-icon.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-image.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-radio.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/input-range.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/inputs/spacing-inputs.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/overflow-menu.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/separator.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/advanced-typography.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/font/font-family-selector.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/font/font-family.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/font/font-size.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/font/font-weight.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/text-align.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-inputs/text-color.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/text-selected.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/toolbar-button.tsx","apps/web/client/src/app/project/[id]/_components/editor-bar/utils/gradient.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/code-editor.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/code-mirror-config.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/floating-add-to-chat-button.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-content/unsaved-changes-dialog.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-tabs/file-tab.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/file-tabs/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/header-controls.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/hooks/use-code-navigation.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/modals/file-modal.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/modals/folder-modal.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/modals/upload-modal.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/shared/file-operations.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/shared/file-templates.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/shared/types.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/shared/utils.ts","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/sidebar/file-icon.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/sidebar/file-tree-node.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/sidebar/file-tree-row.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/sidebar/file-tree-search.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/code-tab/sidebar/file-tree.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/code-panel/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/branches-tab/branch-management.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/branches-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/color-panel/color-name-input.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/color-panel/color-pallet-group.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/color-panel/color-popover.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/color-panel/color-row.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/color-panel/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/font-panel/font-family.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/font-panel/font-files.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/font-panel/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/font-panel/system-font.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/font-panel/upload-modal.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/brand-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/help-button/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/breadcrumb-navigation.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/folder-list.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/hooks/use-image-drag-drop.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/hooks/use-image-operations.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/hooks/use-navigation.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/image-grid.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/image-item.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/search-upload-bar.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/types.ts","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/utils/image-references.test.ts","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/image-tab/utils/image-references.ts","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/layers-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/layers-tab/tree/page-tree-node.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/layers-tab/tree/page-tree-row.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/layers-tab/tree/tree-node.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/layers-tab/tree/tree-row.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/page-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/page-tab/page-modal.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/windows-tab/device-settings.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/windows-tab/frame-dimensions.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/windows-tab/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/design-panel/zoom-controls/index.tsx","apps/web/client/src/app/project/[id]/_components/left-panel/index.tsx","apps/web/client/src/app/project/[id]/_components/main.tsx","apps/web/client/src/app/project/[id]/_components/members/index.tsx","apps/web/client/src/app/project/[id]/_components/members/invitation-row.tsx"],"storefront":"/r/onlook-dev","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/onlook-dev/onlook/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}