* fix: border radius and overflow in ImagePreview component
* fix: Proper support for SVGs and UI feedback when errors occur
* SVG files are treated and displayed as Images in the UI
* SVG files are processed as Markup Text to send to the API
* Remove support for GIFs
* chore: improve system prompt to handle SVGs properly
* styles: Add border radius to uploaded image preview when loading
* chore: improve ThemePresetSelect
* Remove double border and shadow
* Add "Default" themes at the top and make it searchable
* Change text size and padding for consistency
* chore: add Manage text back for Managing Saved themes
* feat: Add polar for tweakcn-plus checkout
* migrate to polar nextjs for more control
* chore: save closable chat suggestions state as a preference in local storage
* chore: improve color contrast in user UI message
* feat: add pro features components
* chore: update TextArea styles
* feat: adjust theme generation types, functions and API to support adding an image
* feat: AI components now support and display images
* feat: add support for multiple images
* feat: add support for multiple images to components
* feat: support image only prompts and clean up API code
* chore: save closable chat suggestions state as a preference in local storage
* chore: improve color contrast in user UI message
* feat: add pro features components
* chore: update TextArea styles
* feat: adjust theme generation types, functions and API to support adding an image
* feat: AI components now support and display images
* feat: add support for multiple images
* feat: add support for multiple images to components
* feat: support image only prompts and clean up API code
* add checkout link support
* add ai-usage schema and actions
* feat: dashboard: add AI usage stats with bar chart
* feat: enforce subscription limits and improved error handling for AI theme generation
* feat: Integrate alert-banner with actual usage
* fix: pricing navigation
* feat: Checkout link generation
* feat: add quick action to create a theme from an image in ai page
* feat: add drag and drop for images
* chore: move Image Upload constant vars and update imports
* feat: improve feedback while theme is being generated
* feat: Add pricing page UI
* refactor: Dashboard migration to Settings page
* feat: improve pricing page
* feat: add auth check in checkout and refactor implementation for consistency and typesafety
* refactor: adjust code and API to follow new types and useQuery hook typesafety
* refactor: alert banner displays correctly and uses the new subscription hook
* feat: improve UI feedback for Pro users
* feat: upload images by pasting (cmd/crtl + v)
* feat: add Go Pro dialog, and global store (no implemented in app yet)
* chore(WIP): scaffold of Pro subscription modal show logic
* feat: Add openProModal logic to handleGenerateTheme in chat-interface
* chore: save closable chat suggestions state as a preference in local storage
* chore: improve color contrast in user UI message
* feat: add pro features components
* chore: update TextArea styles
* feat: adjust theme generation types, functions and API to support adding an image
* feat: AI components now support and display images
* feat: add support for multiple images
* feat: add support for multiple images to components
* feat: support image only prompts and clean up API code
* add ai-usage schema and actions
* feat: dashboard: add AI usage stats with bar chart
* feat: enforce subscription limits and improved error handling for AI theme generation
* feat: Integrate alert-banner with actual usage
* fix: pricing navigation
* feat: Checkout link generation
* feat: add quick action to create a theme from an image in ai page
* feat: add drag and drop for images
* chore: move Image Upload constant vars and update imports
* feat: improve feedback while theme is being generated
* feat: Add pricing page UI
* refactor: Dashboard migration to Settings page
* feat: improve pricing page
* feat: add auth check in checkout and refactor implementation for consistency and typesafety
* refactor: adjust code and API to follow new types and useQuery hook typesafety
* refactor: alert banner displays correctly and uses the new subscription hook
* feat: improve UI feedback for Pro users
* feat: upload images by pasting (cmd/crtl + v)
* feat: add Go Pro dialog, and global store (no implemented in app yet)
* chore(WIP): scaffold of Pro subscription modal show logic
* feat: Add openProModal logic to handleGenerateTheme in chat-interface
* refactor: follow naming convention
* chore: refactor components and layout/pages for consistency
* fix: enforce auth checks or redirect in /settings routes
* chore: update Go Pro dialog
* refactor: create reusable theme toggle component
* feat: add Get Pro dialog to header
* chore: rename GoPro dialog to GetPro and update imports
* feat: add AI generation section to Home page and adjust Get Pro dialog
* chore: save closable chat suggestions state as a preference in local storage
* chore: improve color contrast in user UI message
* feat: add pro features components
* chore: update TextArea styles
* feat: adjust theme generation types, functions and API to support adding an image
* feat: AI components now support and display images
* feat: add support for multiple images
* feat: add support for multiple images to components
* feat: support image only prompts and clean up API code
* add ai-usage schema and actions
* feat: dashboard: add AI usage stats with bar chart
* feat: enforce subscription limits and improved error handling for AI theme generation
* feat: Integrate alert-banner with actual usage
* fix: pricing navigation
* feat: Checkout link generation
* feat: add quick action to create a theme from an image in ai page
* feat: add drag and drop for images
* chore: move Image Upload constant vars and update imports
* feat: improve feedback while theme is being generated
* feat: Add pricing page UI
* refactor: Dashboard migration to Settings page
* feat: improve pricing page
* feat: add auth check in checkout and refactor implementation for consistency and typesafety
* refactor: adjust code and API to follow new types and useQuery hook typesafety
* refactor: alert banner displays correctly and uses the new subscription hook
* feat: improve UI feedback for Pro users
* feat: upload images by pasting (cmd/crtl + v)
* feat: add Go Pro dialog, and global store (no implemented in app yet)
* chore(WIP): scaffold of Pro subscription modal show logic
* feat: Add openProModal logic to handleGenerateTheme in chat-interface
* refactor: follow naming convention
* chore: refactor components and layout/pages for consistency
* fix: enforce auth checks or redirect in /settings routes
* chore: update Go Pro dialog
* refactor: create reusable theme toggle component
* feat: add Get Pro dialog to header
* chore: rename GoPro dialog to GetPro and update imports
* feat: add AI generation section to Home page and adjust Get Pro dialog
* feat: Add customer portal
* feat: add chat input draft persistence (not images)
* styles: improve styles for ai generation and alert banner defaults
* feat: Send whole chat context to AI
* fix: silly typo lol
* feat: support images persistence and sync
* feat: edit message (text, mentions and images)
* fix: add eslint-disable for exhaustive-deps warnings
* chore: fix build error & improve text and styles in suggested prompts
* refactor: handle session and subscription checks and handle post login actions
* migrate to turbopack
* refactor: use reducer builder pattern to sync ai-draft-store with image-uploader
* fix: ai-usage computation: account for abort
* feat: Theme limit handling for pro tier
* refactor: remove duplicate code from ai-chat-form and chat-input
* feat: Add faq to pricing page
* fix: /dashboard navigations -> /settings
* feat: update ui for success page
* feat: Migrate ai chat and draft message store to idb-keyval
* feat: move subscription details in-house
* generate migration
* fix: build err
* styles: improve Message UI
* fix: allow scroll in GoPro dialog chat preview
* feat: improve AI usage feedback when theme generation when success or failure
* feat: Message UI enhancement when assistant message is error feedback
* feat: add latest features in /ai page and refactor Core Theme Generation logic hooks
* styles: improve styles and layout for consistency
* styles: improve styles in settings pages for consistency
* cancelled theme doesn't cost requests
* update next to latest (for turbopack compat)
* fail build if polar webhook secret is not set
* update polar sdk and nextjs plugin
* feat: Create customer before creating checkout for them
* chore: save closable chat suggestions state as a preference in local storage
* chore: improve color contrast in user UI message
* feat: add pro features components
* chore: update TextArea styles
* feat: adjust theme generation types, functions and API to support adding an image
* feat: AI components now support and display images
* feat: add support for multiple images
* feat: add support for multiple images to components
* feat: support image only prompts and clean up API code
* add ai-usage schema and actions
* feat: dashboard: add AI usage stats with bar chart
* feat: enforce subscription limits and improved error handling for AI theme generation
* feat: Integrate alert-banner with actual usage
* fix: pricing navigation
* feat: Checkout link generation
* feat: add quick action to create a theme from an image in ai page
* feat: add drag and drop for images
* chore: move Image Upload constant vars and update imports
* feat: improve feedback while theme is being generated
* feat: Add pricing page UI
* refactor: Dashboard migration to Settings page
* feat: improve pricing page
* feat: add auth check in checkout and refactor implementation for consistency and typesafety
* refactor: adjust code and API to follow new types and useQuery hook typesafety
* refactor: alert banner displays correctly and uses the new subscription hook
* feat: improve UI feedback for Pro users
* feat: upload images by pasting (cmd/crtl + v)
* feat: add Go Pro dialog, and global store (no implemented in app yet)
* chore(WIP): scaffold of Pro subscription modal show logic
* feat: Add openProModal logic to handleGenerateTheme in chat-interface
* refactor: follow naming convention
* chore: refactor components and layout/pages for consistency
* fix: enforce auth checks or redirect in /settings routes
* chore: update Go Pro dialog
* refactor: create reusable theme toggle component
* feat: add Get Pro dialog to header
* chore: rename GoPro dialog to GetPro and update imports
* feat: add AI generation section to Home page and adjust Get Pro dialog
* feat: Add customer portal
* feat: add chat input draft persistence (not images)
* styles: improve styles for ai generation and alert banner defaults
* feat: Send whole chat context to AI
* fix: silly typo lol
* feat: support images persistence and sync
* feat: edit message (text, mentions and images)
* fix: add eslint-disable for exhaustive-deps warnings
* chore: fix build error & improve text and styles in suggested prompts
* refactor: handle session and subscription checks and handle post login actions
* migrate to turbopack
* refactor: use reducer builder pattern to sync ai-draft-store with image-uploader
* fix: ai-usage computation: account for abort
* feat: Theme limit handling for pro tier
* refactor: remove duplicate code from ai-chat-form and chat-input
* feat: Add faq to pricing page
* fix: /dashboard navigations -> /settings
* feat: update ui for success page
* feat: Migrate ai chat and draft message store to idb-keyval
* feat: move subscription details in-house
* generate migration
* fix: build err
* styles: improve Message UI
* fix: allow scroll in GoPro dialog chat preview
* feat: improve AI usage feedback when theme generation when success or failure
* feat: Message UI enhancement when assistant message is error feedback
* feat: add latest features in /ai page and refactor Core Theme Generation logic hooks
* styles: improve styles and layout for consistency
* styles: improve styles in settings pages for consistency
* cancelled theme doesn't cost requests
* update next to latest (for turbopack compat)
* fail build if polar webhook secret is not set
* update polar sdk and nextjs plugin
* feat: Create customer before creating checkout for them
---------
Co-authored-by: Luis Llanes <luisllaboj@gmail.com>
* feat: Support Tailwind CSS Color Palette in UI Color Pickers
* adding a hex function
* fixes position of color picker
* improve code and adding tailwindcss classes on typing
* refactor: simplify ColorPicker and adding Color Popover component
* remove state and ref
---------
Co-authored-by: Sahaj Jain <82111591+jnsahaj@users.noreply.github.com>
* refactor: Rename and break components into smaller components
* refactor: move ai utils to own folder and update imports
* feat: improve the AI context for theme generation
* fix: line breaks on CustomTextArea when shift + enter and when pasting a multiline prompt
* feat: improve 'create' example prompts for more consistent results
* fix: ensure compound foreground tokens are matched correctly in inspector
- Sort theme tokens by length descending to prioritize longer matches
- Fixes issue where text-muted-foreground showed as text-muted
- Ensures compound tokens like card-foreground, primary-foreground are captured fully
* refactor: optimize theme inspector for performance
- Move regex creation to module level to prevent recreation on each render
- Memoize event handlers with useCallback to prevent child re-renders
- Extract state update logic into separate memoized functions
- Create separate component for class items to enable granular memoization
- Add custom prop comparison for better React.memo optimization
- Extract classNames computation to dedicated hook
Reduces re-renders significantly in inspector components
* refactor: optimize theme inspector scroll performance
- Add ref-based overlay state tracking to prevent unnecessary re-renders
- Cache scrollable viewport element to avoid repeated DOM queries
- Implement efficient scroll event handling with early exit conditions
- Add comprehensive performance documentation and inline comments
- Separate viewport discovery from scroll event management for better organization
* refactor inspector hooks and fix minor functionality
* remove toggleInspector on edit
* feat: Add segment styles and add inspector overlay bounds
* update color-picker animated styles and fix timer
* fix: Unwanted elements for overlay and add specific classes for missing els
* refactor: Improve layout and styling in inspector components
- Adjusted spacing in InspectorClassItem for better alignment
- Enhanced InspectorOverlay with a title and separator for clarity
- Updated ThemePreviewPanel to refine button size and inspector toggle visibility
* fix: focus color now works from any tab
* improve inspector overlay styles
- Added SectionContext to manage expanded state for ControlSection components.
- Enhanced ColorPicker to support programmatic focus and highlight animations.
- Introduced useColorControlFocus hook for managing color control references.
- Updated ColorPreview to utilize new focus functionality for color items.
- Added name prop to ColorPicker for identifying color controls in the focus store.
* feat: add AuthDialogWrapper to main layout to work in every route
* refactor: move footer to global components
* refactor: separate route components into layouts, pages, and loading components
* chore: remove AuthDialogWrapper from AI page after it was moved to root layout
* Enhanced Editor (#100)
* refactor: editor page to improve responsiveness
* feat: add editor tab persistance to url
* chore: clean up classNames
* feat: enhance theme color-preview to make it responsive
* feat: add ai chat tab working with local state
* successful responses return a theme color-preview
* error responses return a generic message
* fix: invalid tabs fallback to default tab "colors"
* fix: remove messages scroll animation on tabs change and remove duplicate preview
* fix: minor fixes in classNames
* feat: Chat starts with a default message
* refactor: Enhance editor controls and toolbar buttons to disable when generating theme
- Updated button components to be extendible.
- Refactored buttons to utilize TooltipWrapper for consistent tooltip behavior.
* fix: sync controls tabs by 'value' instead of 'defaultValue'
* fix: load messages from local storage, otherwise set a default initial message
* fix: editor mention list positions correctly and add a tab handler for selecting mention
* fix: build errors due to unused imports
* chore: improve defaults and styles for ai chat interface and editor
* refactor: move AIChat state management to a zustand store
* feat: preserve control tab between edit mode and traditional editor mode
* feat: reset ai chat on editor reset button click
* feat: load chat messages dynamically to avoid layout shifts due to local storage
* fix: Use const id for default ai message to avoid re-render
* fix: Use searchParams for callback url as well after auth
* refactor: Remove unused getEditorConfig code
* feat: Only have 1 handler per postlogin action type
This was causing issues in AI Chat form. AI_GENERATE_FROM_CHAT action
was being scheduled twice because of re-render (caused by lazy-loaded
component)
* fix: Add user message for post login action
* refactor: Only use JSONContent in application state (derive textContent from it)
* feat: Auto-attach current theme to prompt after 1st user message
* feat: clean up AI interface and add community themes section
* feat: AI entrypoint redirect to main Editor and trigger theme generation
* chore: improve styles on ai page
* refactor: clean up AI components components from AI page and Editor page
* refactor: share repeated theme generation logic
* fix: chat messages inconsistent padding and pill buttons disabled state
* fix: build error
* feat: remove AI Generation Dialog and related logic
* feat: show agent response about the theme
* refactor: simplify theme generation logic and improve error handling
* refactor: transition from JSONContent to AIPromptData for theme generation
* feat: add retry functionality for user messages in AI chat interface
* refactor: remove unused loading fallback component and integrate loading indicator in chat messages
* change position of retry button
* feat: Improve system prompt
* refactor: replace createCurrentThemePrompt with attachCurrentThemeMention for improved prompt handling
* feat: add a placeholder for new chat and fix chat area styles
* chore: hide Community themes from AI page
* fix: build errors
* fix: ai theme generation only happens when there is content to be sent as the prompt
* feat: show AI tab in production
* fix: Early return after showing error message in ai chat
* feat: Attach last generated message instead of current theme for chat
* Use @ mentions in example prompts
* Enhance mention rendering in AI prompts and update mention styles in CSS
* skip posthog on dev
* Enhanced Editor (#100)
* refactor: editor page to improve responsiveness
* feat: add editor tab persistance to url
* chore: clean up classNames
* feat: enhance theme color-preview to make it responsive
* feat: add ai chat tab working with local state
* successful responses return a theme color-preview
* error responses return a generic message
* fix: invalid tabs fallback to default tab "colors"
* fix: remove messages scroll animation on tabs change and remove duplicate preview
* fix: minor fixes in classNames
* feat: Chat starts with a default message
* refactor: Enhance editor controls and toolbar buttons to disable when generating theme
- Updated button components to be extendible.
- Refactored buttons to utilize TooltipWrapper for consistent tooltip behavior.
* fix: sync controls tabs by 'value' instead of 'defaultValue'
* fix: load messages from local storage, otherwise set a default initial message
* fix: editor mention list positions correctly and add a tab handler for selecting mention
* fix: build errors due to unused imports
* chore: improve defaults and styles for ai chat interface and editor
* refactor: move AIChat state management to a zustand store
* feat: preserve control tab between edit mode and traditional editor mode
* feat: reset ai chat on editor reset button click
* feat: load chat messages dynamically to avoid layout shifts due to local storage
* fix: Use const id for default ai message to avoid re-render
* fix: Use searchParams for callback url as well after auth
* refactor: Remove unused getEditorConfig code
* feat: Only have 1 handler per postlogin action type
This was causing issues in AI Chat form. AI_GENERATE_FROM_CHAT action
was being scheduled twice because of re-render (caused by lazy-loaded
component)
* fix: Add user message for post login action
* refactor: Only use JSONContent in application state (derive textContent from it)
* feat: Auto-attach current theme to prompt after 1st user message
* feat: clean up AI interface and add community themes section
* feat: AI entrypoint redirect to main Editor and trigger theme generation
* chore: improve styles on ai page
* refactor: clean up AI components components from AI page and Editor page
* refactor: share repeated theme generation logic
* fix: chat messages inconsistent padding and pill buttons disabled state
* fix: build error
* feat: remove AI Generation Dialog and related logic
* feat: show agent response about the theme
* refactor: simplify theme generation logic and improve error handling
* refactor: transition from JSONContent to AIPromptData for theme generation
* feat: add retry functionality for user messages in AI chat interface
* refactor: remove unused loading fallback component and integrate loading indicator in chat messages
* change position of retry button
* feat: Improve system prompt
* refactor: replace createCurrentThemePrompt with attachCurrentThemeMention for improved prompt handling
* feat: add a placeholder for new chat and fix chat area styles
* chore: hide Community themes from AI page
* fix: build errors
* fix: ai theme generation only happens when there is content to be sent as the prompt
* feat: show AI tab in production
* fix: Early return after showing error message in ai chat
* feat: Attach last generated message instead of current theme for chat
* Use @ mentions in example prompts
* Enhance mention rendering in AI prompts and update mention styles in CSS
* fix: missing fade effect on chat messages scroll area and overflow in placeholder buttons
* feat: add user name from session to the chat placeholder component
* feat: Improve system prompt context
* chore: remove unnecessary context from example prompts
* feat: Enhance mention list with auto-scroll functionality and update prompt structures in no-messages placeholder
* feat: Add character limit for AI prompt input and integrate character count extension
* fix: Simplify prompt data handling in AI chat component and adjust textarea behavior during AI generation
* fix: Update theme state handling to include current mode in editor store
* chore: improve styles for consistency
* feat: add fun prompts to chat placeholder
* feat: add typography demo to preview panel
* feat: add responsive cards demo based on shadcn showcase
* fix: typography demo scroll area
* fix: build errors due to components refactor
* fix: wrap typography demo in ExamplesPreviewContainer
* feat: change default theme to match shadcn/ui default
* chore: move some theme previews into a dropdown to keep ui clean
---------
Co-authored-by: Luis Llanes <137589205+llanesluis@users.noreply.github.com>
Co-authored-by: Luis Llanes <luisllaboj@gmail.com>