Skip to content

feat(ui): add fill styles dropdown to style panel#7885

Merged
steveruizok merged 7 commits intomainfrom
claude/add-fill-styles-dropdown
Feb 11, 2026
Merged

feat(ui): add fill styles dropdown to style panel#7885
steveruizok merged 7 commits intomainfrom
claude/add-fill-styles-dropdown

Conversation

@steveruizok
Copy link
Copy Markdown
Collaborator

@steveruizok steveruizok commented Feb 11, 2026

In order to expose additional fill styles (pattern, fill, lined-fill) that were previously hidden from the UI, this PR replaces the 4th fill button with a dropdown picker. The first three fill options (none, semi, solid) remain as inline buttons, following the same pattern used by the vertical alignment dropdown.

Closes #7578

pr-7885-walkthrough.mp4

Change type

  • improvement

Test plan

  1. Select a shape that supports fill (e.g. geo shape)
  2. Verify none, semi, solid buttons appear as inline buttons in the style panel
  3. Verify a dropdown appears after the solid button with access to pattern, lined-fill, and fill options
  4. Verify selecting a dropdown option applies the fill style correctly
  5. Verify the dropdown icon shows the correct fill style when a dropdown fill is active
  6. Verify the mixed icon only appears when multiple shapes truly have different fill values
  • Unit tests
  • End to end tests

Release notes

  • Add a dropdown to the fill style picker exposing pattern, fill, and lined-fill options that were previously hidden from the UI.

API changes

  • Added fillExtra to STYLES object for additional fill style options shown in the dropdown

Note

Medium Risk
Moderate risk: changes core style-panel interaction patterns and icon-selection logic, which could regress fill selection or mixed-state display across shape types, but scope is limited to UI/assets and e2e updates.

Overview
Updates the style panel’s fill picker to show none/semi/solid as inline buttons and moves additional fill options into a new dropdown (fill-extra), including newly-exposed lined-fill and the previously-hidden fill option.

Adds the new fill-lined-fill icon across the assets pipeline (SVG + generated URL maps/types) and extends STYLES with fillExtra to back the dropdown. The dropdown picker logic is adjusted to show the correct icon for the current value (including mixed) and to fall back safely when the current value isn’t in the dropdown items.

Updates Playwright e2e fixtures/tests to reflect the new fill UI (removing direct access to the old pattern fill button and asserting solid behavior instead).

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

claude and others added 3 commits February 11, 2026 11:55
Replace the 4th fill button with a dropdown that provides access to
additional fill styles (pattern, fill, lined-fill) that were previously
hidden from the UI. The first three fill options (none, semi, solid)
remain as inline buttons, following the same pattern used by the
vertical alignment dropdown.

https://claude.ai/code/session_01BwXAEf4pp4F9UopEZq1ZPm
When the current fill value is one of the inline button values (none,
semi, solid), the dropdown had no matching item and fell back to the
mixed icon. Now falls back to the first dropdown item's icon (pattern)
instead, reserving the mixed icon for when multiple shapes truly have
different fill values.
Replace multiple rect elements in fill-lined-fill.svg with a single path (adjusted opacity) to simplify the icon, and swap the order of 'fill' and 'lined-fill' entries in STYLES.fillExtra so the lined-fill option appears before the fill option in the UI.
@vercel
Copy link
Copy Markdown

vercel bot commented Feb 11, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
examples Ready Ready Preview Feb 11, 2026 6:50pm
5 Skipped Deployments
Project Deployment Actions Updated (UTC)
analytics Ignored Ignored Preview Feb 11, 2026 6:50pm
chat-template Ignored Ignored Preview Feb 11, 2026 6:50pm
tldraw-docs Ignored Ignored Preview Feb 11, 2026 6:50pm
tldraw-shader Ignored Ignored Preview Feb 11, 2026 6:50pm
workflow-template Ignored Ignored Preview Feb 11, 2026 6:50pm

Request Review

@huppy-bot
Copy link
Copy Markdown
Contributor

huppy-bot bot commented Feb 11, 2026

API Changes Check Passed

Great! The PR description now includes the required "### API changes" section. This helps reviewers and SDK users understand the impact of your changes.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Feb 11, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
image-pipeline-template fbc1add Commit Preview URL

Branch Preview URL
Feb 11 2026, 06:51 PM

@steveruizok steveruizok changed the title Add fill styles dropdown to style panel feat(ui): add fill styles dropdown to style panel Feb 11, 2026
@huppy-bot huppy-bot bot added the improvement Product improvement label Feb 11, 2026
Remove items[0]?.icon fallback so no dropdown item appears active when
the current value belongs to an inline button (none, semi, solid).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Return the first item's icon when no matching item is found in StylePanelDropdownPicker (use match ?? items[0]?.icon). This prevents an undefined icon when the current value doesn't match any item, improving visual consistency.
Replace pattern with solid in e2e tests since pattern moved to a
dropdown popover. Use distinct uiType for the fill dropdown to avoid
duplicate data-testid="style.fill" conflicts.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
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.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

<StylePanelDropdownPickerInline
type="icon"
id="fill-extra"
uiType="fill-extra"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Dropdown uses wrong uiType for translation key lookup

Medium Severity

The StylePanelDropdownPickerInline is passed uiType="fill-extra", which causes translation key lookups like fill-extra-style.pattern, fill-extra-style.lined-fill, and fill-extra-style.fill. These keys don't exist in any translation file — the actual keys use the fill-style. prefix (e.g., fill-style.pattern). This results in broken/missing tooltip text for the dropdown trigger and each dropdown item.

Additional Locations (1)

Fix in Cursor Fix in Web

@steveruizok steveruizok added this pull request to the merge queue Feb 11, 2026
Merged via the queue into main with commit 2981d4d Feb 11, 2026
19 checks passed
@steveruizok steveruizok deleted the claude/add-fill-styles-dropdown branch February 11, 2026 19:03
github-merge-queue bot pushed a commit that referenced this pull request Feb 11, 2026
…7889)

In order to fix a Playwright test failure caused by duplicate
`data-testid="style.fill"` elements and missing tooltip translations,
this PR adds a `testIdType` prop to `StylePanelDropdownPickerProps` and
applies it to the fill-extra dropdown.

The fill-extra dropdown introduced in #7885 originally used
`uiType="fill-extra"`, which broke tooltip translations (keys like
`fill-extra-style.none` don't exist). The first commit fixed this by
changing `uiType` back to `"fill"`, but that caused both the button
picker and dropdown picker to emit `data-testid="style.fill"`, breaking
the Playwright strict mode selector. The second commit adds `testIdType`
to decouple the test ID from the translation key, giving the dropdown
`data-testid="style.fill-extra"` while keeping `uiType="fill"` for
correct translations.

### Change type

- [x] `bugfix`

### Test plan

1. Select a geo shape
2. Hover over the fill dropdown button — verify tooltip shows "Fill —
Pattern" (not raw keys)
3. Open the dropdown, hover each option — verify all tooltips are
translated
4. Run the style panel e2e test — verify `getByTestId('style.fill')`
resolves uniquely

- [ ] End to end tests

### Release notes

- Fixed duplicate test IDs and missing translations in the fill style
dropdown.

### API changes

- Added optional `testIdType` to `StylePanelDropdownPickerProps` to
override the test ID prefix independently of `uiType`
huppy-bot bot pushed a commit that referenced this pull request Feb 11, 2026
…7889)

In order to fix a Playwright test failure caused by duplicate
`data-testid="style.fill"` elements and missing tooltip translations,
this PR adds a `testIdType` prop to `StylePanelDropdownPickerProps` and
applies it to the fill-extra dropdown.

The fill-extra dropdown introduced in #7885 originally used
`uiType="fill-extra"`, which broke tooltip translations (keys like
`fill-extra-style.none` don't exist). The first commit fixed this by
changing `uiType` back to `"fill"`, but that caused both the button
picker and dropdown picker to emit `data-testid="style.fill"`, breaking
the Playwright strict mode selector. The second commit adds `testIdType`
to decouple the test ID from the translation key, giving the dropdown
`data-testid="style.fill-extra"` while keeping `uiType="fill"` for
correct translations.

### Change type

- [x] `bugfix`

### Test plan

1. Select a geo shape
2. Hover over the fill dropdown button — verify tooltip shows "Fill —
Pattern" (not raw keys)
3. Open the dropdown, hover each option — verify all tooltips are
translated
4. Run the style panel e2e test — verify `getByTestId('style.fill')`
resolves uniquely

- [ ] End to end tests

### Release notes

- Fixed duplicate test IDs and missing translations in the fill style
dropdown.

### API changes

- Added optional `testIdType` to `StylePanelDropdownPickerProps` to
override the test ID prefix independently of `uiType`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Product improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make last fill option a dropdown to select other fill types

2 participants