Skip to content

Google Sheets design and UX improvements#469

Merged
madebyisaacr merged 12 commits intomainfrom
sheets-design
Oct 2, 2025
Merged

Google Sheets design and UX improvements#469
madebyisaacr merged 12 commits intomainfrom
sheets-design

Conversation

@madebyisaacr
Copy link
Copy Markdown
Collaborator

@madebyisaacr madebyisaacr commented Oct 1, 2025

Description

This pull request improves the design and UX of the Google Sheets plugin, updating it to match the appearance of Notion and Airtable plugins.

  • Swapped type and name columns.
  • Added disabled state to sheet selection page when no sheet is selected.
  • Added green tint color for input focus borders and primary buttons.
  • Removed spinner and button components and replaced with built-in plugin CSS classes.
  • Updated success notification text in sync mode to match manage mode.
  • Disable text user select.
  • Fix disabled state on dropdowns.
  • Auto focus sheet URL input.
  • Disable draggable on 3D sheet image.

Testing

  • Connect your Google account
  • Connect a sheet
  • Disable some fields to view disabled states
  • Sync the sheet

Note

Revamps the Google Sheets plugin UI to use Framer built-in styles, improves sheet selection and disabled states, adds green tint and success messaging, and removes custom Button/Spinner components.

  • UI/Design:
    • Replace custom Button/Spinner with Framer built-ins (framer-button-*, framer-spinner); delete Button.tsx, Spinner.tsx, spinner.module.css, CenteredSpinner.tsx.
    • Add green tint variables and global main styles; disable text selection.
    • Make Hero image non-draggable.
  • Field Mapping (pages/MapSheetFields.tsx):
    • Reorder columns to Column → Type → Name and wrap in main.
    • Improve disabled/permission states with opacity and titles; native submit button with loading state.
  • Auth/Problem Flows:
    • Convert to native buttons with loading spinners; wrap pages in main.
    • Update sync close message to “Synchronization successful”.
  • Sheet Selection (pages/SelectSheet.tsx):
    • Parse spreadsheet ID from URL, auto-focus URL input, and disable Next until valid.
    • Improve disabled styling of sheet dropdown.
  • Misc:
    • Replace intermediate spinners with centered framer-spinner containers.
    • Minor class cleanup; remove unused green text class.

Written by Cursor Bugbot for commit a3f4eef. This will update automatically on new commits. Configure here.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment @cursor review or bugbot run to trigger another review on this PR

<GoogleLogo /> Sign In
</>
)}
</button>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Button Clicks Not Disabled During Loading

The "Sign In" button and the field mapping form's submit button lack a disabled prop when isLoading or isPending is true. This allows multiple clicks, which can lead to race conditions or duplicate operations.

Additional Locations (1)

Fix in Cursor Fix in Web

Copy link
Copy Markdown
Collaborator Author

@madebyisaacr madebyisaacr Oct 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is intentional. If you close the Google sign in tab after it opens, it will still show as loading in the plugin, but you need to be able to open it again by clicking the same button. MapSheetFields handles this by checking isPending in handleSubmit, so clicking multiple times there isn't a problem.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind adding the explanation in a code comment? That helps the future you and all of us with a bit of added context

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a comment right above the button.

Copy link
Copy Markdown
Contributor

@elmarburke elmarburke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code: LGTM

QA: I can't scroll in the Manage view anymore

Comment thread plugins/google-sheets/src/globals.css
Comment thread plugins/google-sheets/src/globals.css Outdated
Comment thread plugins/google-sheets/src/pages/SelectSheet.tsx
const [selectedSheetTitle, setSelectedSheetTitle] = useState<string>("")

const selectedSpreadsheetId = useMemo(() => {
if (!spreadsheetUrl) return ""
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in here, I think it would be good to also have undefined or null as a potential value

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean return null instead of "" when there's no spreadsheet URL?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, exactly. With ts an empty string still counts as a string, so it can look valid when it’s really not.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated it to return null instead of ""

<GoogleLogo /> Sign In
</>
)}
</button>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind adding the explanation in a code comment? That helps the future you and all of us with a bit of added context

@madebyisaacr
Copy link
Copy Markdown
Collaborator Author

@elmarburke thanks for the review. Fixed scrolling in manage view.

Is it showing the correct code here? I didn't understand what needs a comment.

image

@elmarburke
Copy link
Copy Markdown
Contributor

@elmarburke thanks for the review. Fixed scrolling in manage view.

👍

Is it showing the correct code here? I didn't understand what needs a comment.

I've added this comment to the thread between cursor and you

@madebyisaacr madebyisaacr added this pull request to the merge queue Oct 2, 2025
Merged via the queue into main with commit 98a0f9d Oct 2, 2025
6 checks passed
@madebyisaacr madebyisaacr deleted the sheets-design branch October 2, 2025 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants