gitextract_41hngla7/ ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ └── ISSUE_TEMPLATE/ │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── actions/ │ ├── account.ts │ ├── ai-usage.ts │ ├── checkout.ts │ ├── community-themes.ts │ ├── customer.ts │ └── themes.ts ├── app/ │ ├── (auth)/ │ │ └── components/ │ │ └── auth-dialog.tsx │ ├── (legal)/ │ │ ├── layout.tsx │ │ └── privacy-policy/ │ │ └── page.tsx │ ├── ai/ │ │ ├── components/ │ │ │ ├── ai-announcement.tsx │ │ │ ├── ai-chat-form.tsx │ │ │ ├── ai-chat-hero.tsx │ │ │ ├── chat-heading.tsx │ │ │ ├── community-theme-card.tsx │ │ │ ├── community-themes.tsx │ │ │ └── suggested-pill-actions.tsx │ │ ├── layout.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ ├── api/ │ │ ├── auth/ │ │ │ └── [...all]/ │ │ │ └── route.ts │ │ ├── enhance-prompt/ │ │ │ └── route.ts │ │ ├── generate-theme/ │ │ │ └── route.ts │ │ ├── google-fonts/ │ │ │ └── route.ts │ │ ├── oauth/ │ │ │ ├── app-info/ │ │ │ │ └── route.ts │ │ │ ├── authorize/ │ │ │ │ └── route.ts │ │ │ ├── revoke/ │ │ │ │ └── route.ts │ │ │ ├── token/ │ │ │ │ └── route.ts │ │ │ └── userinfo/ │ │ │ └── route.ts │ │ ├── subscription/ │ │ │ └── route.ts │ │ ├── v1/ │ │ │ ├── me/ │ │ │ │ └── route.ts │ │ │ └── themes/ │ │ │ ├── [themeId]/ │ │ │ │ └── route.ts │ │ │ └── route.ts │ │ └── webhook/ │ │ └── polar/ │ │ └── route.ts │ ├── community/ │ │ ├── components/ │ │ │ ├── community-sidebar.tsx │ │ │ ├── community-theme-card.tsx │ │ │ ├── community-theme-preview-dialog.tsx │ │ │ └── community-themes-content.tsx │ │ ├── layout.tsx │ │ └── page.tsx │ ├── dashboard/ │ │ ├── layout.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ ├── editor/ │ │ └── theme/ │ │ └── [[...themeId]]/ │ │ ├── layout.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ ├── figma/ │ │ ├── layout.tsx │ │ └── page.tsx │ ├── globals.css │ ├── layout.tsx │ ├── loaders.css │ ├── not-found.tsx │ ├── oauth/ │ │ └── authorize/ │ │ └── page.tsx │ ├── page.tsx │ ├── pricing/ │ │ ├── components/ │ │ │ └── checkout-button.tsx │ │ ├── layout.tsx │ │ └── page.tsx │ ├── r/ │ │ ├── themes/ │ │ │ └── [id]/ │ │ │ └── route.ts │ │ └── v0/ │ │ └── [id]/ │ │ └── route.ts │ ├── settings/ │ │ ├── account/ │ │ │ ├── components/ │ │ │ │ └── delete-account-section.tsx │ │ │ └── page.tsx │ │ ├── components/ │ │ │ ├── customer-portal-link.tsx │ │ │ ├── settings-header.tsx │ │ │ ├── settings-sidebar.tsx │ │ │ ├── theme-card.tsx │ │ │ ├── themes-list.tsx │ │ │ ├── usage-stats.tsx │ │ │ └── user-info.tsx │ │ ├── layout.tsx │ │ ├── page.tsx │ │ ├── portal/ │ │ │ └── route.ts │ │ ├── themes/ │ │ │ └── page.tsx │ │ └── usage/ │ │ └── page.tsx │ ├── sitemap.ts │ ├── success/ │ │ ├── layout.tsx │ │ └── page.tsx │ └── themes/ │ └── [themeId]/ │ ├── error.tsx │ ├── layout.tsx │ ├── loading.tsx │ ├── not-found.tsx │ ├── opengraph-image.alt.txt │ ├── opengraph-image.tsx │ └── page.tsx ├── components/ │ ├── ai-elements/ │ │ ├── code-block.tsx │ │ ├── conversation.tsx │ │ └── response.tsx │ ├── auth-dialog-wrapper.tsx │ ├── block-viewer.tsx │ ├── copy-button.tsx │ ├── debug-button.tsx │ ├── dynamic-font-loader.tsx │ ├── dynamic-website-preview.tsx │ ├── editor/ │ │ ├── action-bar/ │ │ │ ├── action-bar.tsx │ │ │ └── components/ │ │ │ ├── action-bar-buttons.tsx │ │ │ ├── ai-generate-button.tsx │ │ │ ├── code-button.tsx │ │ │ ├── import-button.tsx │ │ │ ├── mcp-dialog.tsx │ │ │ ├── more-options.tsx │ │ │ ├── publish-button.tsx │ │ │ ├── reset-button.tsx │ │ │ ├── save-button.tsx │ │ │ ├── share-button.tsx │ │ │ ├── theme-toggle.tsx │ │ │ └── undo-redo-buttons.tsx │ │ ├── ai/ │ │ │ ├── ai-chat-form-body.tsx │ │ │ ├── alert-banner.tsx │ │ │ ├── chat-image-preview.tsx │ │ │ ├── chat-input.tsx │ │ │ ├── chat-interface.tsx │ │ │ ├── chat-theme-preview.tsx │ │ │ ├── closeable-suggested-pill-actions.tsx │ │ │ ├── drag-and-drop-image-uploader.tsx │ │ │ ├── enhance-prompt-button.tsx │ │ │ ├── image-uploader.tsx │ │ │ ├── loading-logo.tsx │ │ │ ├── message-actions.tsx │ │ │ ├── message-edit-form.tsx │ │ │ ├── message.tsx │ │ │ ├── messages.tsx │ │ │ ├── no-messages-placeholder.tsx │ │ │ ├── pill-action-button.tsx │ │ │ ├── stream-text.tsx │ │ │ └── uploaded-image-preview.tsx │ │ ├── code-panel-dialog.tsx │ │ ├── code-panel.tsx │ │ ├── color-picker.tsx │ │ ├── color-selector-popover.tsx │ │ ├── colors-tab-content.tsx │ │ ├── contrast-checker.tsx │ │ ├── control-section.tsx │ │ ├── css-import-dialog.tsx │ │ ├── custom-textarea.tsx │ │ ├── editor.tsx │ │ ├── font-picker.tsx │ │ ├── hsl-adjustment-controls.tsx │ │ ├── hsl-preset-button.tsx │ │ ├── inspector-class-item.tsx │ │ ├── inspector-overlay.tsx │ │ ├── mention-list.tsx │ │ ├── mention-suggestion.ts │ │ ├── section-context.tsx │ │ ├── shadow-control.tsx │ │ ├── share-dialog.tsx │ │ ├── slider-with-input.tsx │ │ ├── theme-control-actions.tsx │ │ ├── theme-control-panel.tsx │ │ ├── theme-font-select.tsx │ │ ├── theme-preset-select.tsx │ │ ├── theme-preview/ │ │ │ ├── color-preview.tsx │ │ │ ├── components-showcase.tsx │ │ │ ├── examples-preview-container.tsx │ │ │ └── tabs-trigger-pill.tsx │ │ ├── theme-preview-panel.tsx │ │ └── theme-save-dialog.tsx │ ├── effects/ │ │ ├── frame-highlight.tsx │ │ ├── noise-effect.tsx │ │ └── spotlight.tsx │ ├── error-boundary.tsx │ ├── examples/ │ │ ├── ai-chat-demo.tsx │ │ ├── cards/ │ │ │ ├── activity-goal.tsx │ │ │ ├── calendar.tsx │ │ │ ├── chat.tsx │ │ │ ├── cookie-settings.tsx │ │ │ ├── create-account.tsx │ │ │ ├── date-picker-with-range.tsx │ │ │ ├── exercise-minutes.tsx │ │ │ ├── forms.tsx │ │ │ ├── github-card.tsx │ │ │ ├── index.tsx │ │ │ ├── payment-method.tsx │ │ │ ├── payments.tsx │ │ │ ├── report-issue.tsx │ │ │ ├── share.tsx │ │ │ ├── stats.tsx │ │ │ └── team-members.tsx │ │ ├── custom/ │ │ │ └── index.tsx │ │ ├── dashboard/ │ │ │ ├── components/ │ │ │ │ ├── app-sidebar.tsx │ │ │ │ ├── chart-area-interactive.tsx │ │ │ │ ├── chart-bar-mixed.tsx │ │ │ │ ├── chart-pie-donut.tsx │ │ │ │ ├── data-table.tsx │ │ │ │ ├── nav-documents.tsx │ │ │ │ ├── nav-main.tsx │ │ │ │ ├── nav-secondary.tsx │ │ │ │ ├── nav-user.tsx │ │ │ │ ├── section-cards.tsx │ │ │ │ └── site-header.tsx │ │ │ ├── data.json │ │ │ └── index.tsx │ │ ├── mail/ │ │ │ ├── components/ │ │ │ │ ├── account-switcher.tsx │ │ │ │ ├── mail-display.tsx │ │ │ │ ├── mail-list.tsx │ │ │ │ ├── mail.tsx │ │ │ │ └── nav.tsx │ │ │ ├── data.tsx │ │ │ ├── index.tsx │ │ │ └── use-mail.ts │ │ ├── music/ │ │ │ ├── components/ │ │ │ │ ├── album-artwork.tsx │ │ │ │ ├── menu.tsx │ │ │ │ ├── podcast-empty-placeholder.tsx │ │ │ │ └── sidebar.tsx │ │ │ ├── data/ │ │ │ │ ├── albums.ts │ │ │ │ └── playlists.ts │ │ │ └── index.tsx │ │ ├── pricing/ │ │ │ └── pricing.tsx │ │ ├── tasks/ │ │ │ ├── components/ │ │ │ │ ├── columns.tsx │ │ │ │ ├── data-table-column-header.tsx │ │ │ │ ├── data-table-faceted-filter.tsx │ │ │ │ ├── data-table-pagination.tsx │ │ │ │ ├── data-table-row-actions.tsx │ │ │ │ ├── data-table-toolbar.tsx │ │ │ │ ├── data-table-view-options.tsx │ │ │ │ ├── data-table.tsx │ │ │ │ └── user-nav.tsx │ │ │ ├── data/ │ │ │ │ ├── data.tsx │ │ │ │ ├── schema.ts │ │ │ │ └── tasks.json │ │ │ └── index.tsx │ │ └── typography/ │ │ ├── blog-post.tsx │ │ ├── font-showcase.tsx │ │ └── typography-demo.tsx │ ├── figma-export-dialog.tsx │ ├── figma-header.tsx │ ├── footer.tsx │ ├── get-pro-cta.tsx │ ├── get-pro-dialog-wrapper.tsx │ ├── header.tsx │ ├── home/ │ │ ├── ai-generation-cta.tsx │ │ ├── cta.tsx │ │ ├── faq.tsx │ │ ├── features.tsx │ │ ├── header.tsx │ │ ├── hero.tsx │ │ ├── how-it-works.tsx │ │ ├── testimonials.tsx │ │ ├── theme-preset-buttons.tsx │ │ └── theme-preset-selector.tsx │ ├── horizontal-scroll-area.tsx │ ├── icons/ │ │ └── tailwind-css.tsx │ ├── icons.tsx │ ├── loader.tsx │ ├── loading.tsx │ ├── posthog-init.tsx │ ├── social-link.tsx │ ├── tag-selector.tsx │ ├── theme-preview.tsx │ ├── theme-provider.tsx │ ├── theme-script.tsx │ ├── theme-toggle.tsx │ ├── theme-view.tsx │ ├── tooltip-wrapper.tsx │ ├── ui/ │ │ ├── accordion.tsx │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── aspect-ratio.tsx │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── base-ui-tabs.tsx │ │ ├── breadcrumb.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── card.tsx │ │ ├── carousel.tsx │ │ ├── chart.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── context-menu.tsx │ │ ├── dialog.tsx │ │ ├── drawer.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── hover-card.tsx │ │ ├── input-otp.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── menubar.tsx │ │ ├── navigation-menu.tsx │ │ ├── pagination.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── resizable.tsx │ │ ├── revola.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── sidebar.tsx │ │ ├── skeleton.tsx │ │ ├── slider.tsx │ │ ├── sonner.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ ├── toaster.tsx │ │ ├── toggle-group.tsx │ │ ├── toggle.tsx │ │ ├── tooltip.tsx │ │ └── use-toast.ts │ └── user-profile-dropdown.tsx ├── components.json ├── config/ │ └── theme.ts ├── db/ │ ├── index.ts │ └── schema.ts ├── docker-compose.yml ├── docs/ │ └── oauth-api.md ├── drizzle/ │ ├── 0000_rare_moira_mactaggert.sql │ ├── 0001_late_mikhail_rasputin.sql │ ├── 0002_nebulous_randall.sql │ ├── 0003_bumpy_quasimodo.sql │ ├── 0004_red_monster_badoon.sql │ └── meta/ │ ├── 0000_snapshot.json │ ├── 0001_snapshot.json │ ├── 0002_snapshot.json │ ├── 0003_snapshot.json │ ├── 0004_snapshot.json │ └── _journal.json ├── drizzle.config.ts ├── eslint.config.mjs ├── hooks/ │ ├── inspector/ │ │ ├── use-inspector-mouse-events.ts │ │ ├── use-inspector-scroll.ts │ │ ├── use-inspector-state.ts │ │ └── use-theme-inspector.ts │ ├── themes/ │ │ ├── index.ts │ │ ├── use-community-themes.ts │ │ ├── use-theme-mutations.ts │ │ └── use-themes-data.ts │ ├── use-ai-chat-form.ts │ ├── use-ai-enhance-prompt.ts │ ├── use-ai-theme-generation-core.ts │ ├── use-chat-context.tsx │ ├── use-contrast-checker.ts │ ├── use-controls-tab-from-url.ts │ ├── use-copy-to-clipboard.ts │ ├── use-debounced-callback.ts │ ├── use-dialog-actions.tsx │ ├── use-document-drag-and-drop-intent.ts │ ├── use-feedback-text.ts │ ├── use-font-search.ts │ ├── use-fullscreen.ts │ ├── use-github-stars.ts │ ├── use-guards.ts │ ├── use-iframe-theme-injector.ts │ ├── use-image-upload-reducer.ts │ ├── use-image-upload.ts │ ├── use-media-query.tsx │ ├── use-mobile.tsx │ ├── use-mounted.tsx │ ├── use-post-login-action.ts │ ├── use-scroll-start-end.ts │ ├── use-subscription.ts │ ├── use-theme-inspector-classnames.ts │ ├── use-theme-inspector-regex.ts │ ├── use-theme-inspector.ts │ ├── use-theme-preset-from-url.ts │ ├── use-toast.ts │ └── use-website-preview.ts ├── lib/ │ ├── ai/ │ │ ├── generate-theme/ │ │ │ ├── index.ts │ │ │ └── tools.ts │ │ ├── parse-ai-sdk-transport-error.ts │ │ ├── prompts.ts │ │ └── providers.ts │ ├── auth-client.ts │ ├── auth.ts │ ├── checkout.ts │ ├── constants.ts │ ├── error-response.ts │ ├── figma-constants.ts │ ├── inspector/ │ │ ├── class-utils.ts │ │ ├── inspector-state-utils.ts │ │ ├── segment-classname.ts │ │ └── theme-class-finder.ts │ ├── oauth.ts │ ├── polar.ts │ ├── posthog.ts │ ├── query-client.tsx │ ├── shared.ts │ ├── subscription.ts │ └── utils.ts ├── middleware.ts ├── next.config.ts ├── package.json ├── postcss.config.mjs ├── public/ │ ├── live-preview.js │ └── r/ │ └── registry.json ├── routes.ts ├── scripts/ │ ├── create-oauth-app.ts │ ├── generate-registry.ts │ └── generate-theme-registry.ts ├── store/ │ ├── ai-chat-store.ts │ ├── ai-local-draft-store.ts │ ├── auth-store.ts │ ├── color-control-focus-store.ts │ ├── editor-store.ts │ ├── get-pro-dialog-store.ts │ ├── idb-storage.ts │ ├── preferences-store.ts │ ├── theme-preset-store.ts │ └── website-preview-store.ts ├── tsconfig.json ├── types/ │ ├── ai.ts │ ├── community.ts │ ├── editor.ts │ ├── errors.ts │ ├── fonts.ts │ ├── index.ts │ ├── live-preview-embed.ts │ ├── subscription.ts │ └── theme.ts └── utils/ ├── ai/ │ ├── ai-prompt.tsx │ ├── apply-theme.ts │ ├── image-upload.ts │ ├── message-converter.ts │ ├── messages.ts │ └── prompts.ts ├── apply-style-to-element.ts ├── apply-theme.ts ├── color-converter.ts ├── contrast-checker.ts ├── debounce.ts ├── fonts/ │ ├── google-fonts.ts │ └── index.ts ├── format.ts ├── parse-css-input.ts ├── registry/ │ ├── tailwind-colors.ts │ ├── themes.ts │ └── v0.ts ├── shadows.ts ├── subscription.ts ├── theme-fonts.ts ├── theme-preset-helper.ts ├── theme-presets.ts ├── theme-style-generator.ts ├── theme-styles.ts └── try-catch.ts