Skip to content

Conversation

@beeman
Copy link
Contributor

@beeman beeman commented Dec 14, 2025

Description

Moves the 'edit/delete/export' option to a dropdown menu.

Part of #736

Screenshots / Video

image

Important

Consolidates wallet item actions into a dropdown menu, removing individual buttons and updating translations.

  • UI Changes:
    • Replaces individual buttons for edit, delete, and export actions with a dropdown menu in SettingsUiWalletListItem.
    • Introduces SettingsUiWalletMenu component to handle dropdown actions.
  • Deleted Components:
    • Removes SettingsUiExportWalletMnemonic and SettingsUiWalletDeleteConfirm components.
  • Translations:
    • Adds actionDeleteWallet and exportMnemonic keys to en/settings.json and es/settings.json.
  • TypeScript:
    • Updates resources.d.ts to include new translation keys.

This description was created by Ellipsis for 4b35c5b. You can customize this summary. It will automatically update as commits are pushed.

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Dec 14, 2025

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
samui-wallet-web 4b35c5b Commit Preview URL

Branch Preview URL
Dec 14 2025, 03:23 PM

@beeman beeman force-pushed the beeman/wallet-menu branch from 1e85561 to 4b35c5b Compare December 14, 2025 15:21
Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Caution

Changes requested ❌

Reviewed everything up to 1e85561 in 2 minutes and 21 seconds. Click for details.
  • Reviewed 170 lines of code in 5 files
  • Skipped 0 files when reviewing.
  • Skipped posting 1 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. packages/settings/src/ui/settings-ui-wallet-menu.tsx:31
  • Draft comment:
    For better accessibility, add an ARIA label (e.g., aria-label="Wallet options menu") to the menu button since it only displays an icon.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 20% vs. threshold = 50% This is an accessibility suggestion for a new file. The comment is about adding an aria-label to an icon-only button, which is a legitimate accessibility concern. However, I need to consider: 1) The rules say "Do NOT comment unless there is clearly a code change required" and "Do NOT make comments that are obvious or unimportant." 2) Accessibility is important, but this could be considered a "nice to have" rather than a critical issue. 3) The rules also say "Do NOT comment on anything that would be obviously caught by the build" - accessibility linting might catch this. 4) The comment is actionable and specific. 5) However, the rules emphasize not making comments unless there's a CLEAR code change required, and accessibility improvements might be considered optional enhancements rather than required fixes. This could be a legitimate accessibility improvement that makes the code better. The comment is specific and actionable. It's possible that the project doesn't have automated accessibility linting that would catch this, making the manual review valuable. The suggestion improves code quality in a measurable way. While accessibility is important, the rules explicitly state not to make comments unless there's clearly a code change REQUIRED. This appears to be a quality improvement suggestion rather than a bug fix. Additionally, if the project has accessibility linting tools, this would be caught automatically. The rules prioritize only commenting on clear issues, not best practices or enhancements. This comment should be deleted. While it's a valid accessibility suggestion, it falls into the category of "nice to have" improvements rather than required code changes. The rules emphasize only commenting when there's a clear, required code change, not for best practice suggestions or quality improvements.

Workflow ID: wflow_HdvmLmDXw5ggoqPB

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

{t(($) => $.actionEditWallet)}
</Link>
</DropdownMenuItem>
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenDelete((value) => !value)}>
Copy link

Choose a reason for hiding this comment

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

Instead of toggling the delete modal state with setOpenDelete((value) => !value), consider setting it explicitly (setOpenDelete(true)) to ensure the modal reliably opens.

Suggested change
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenDelete((value) => !value)}>
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenDelete(true)}>

<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenDelete((value) => !value)}>
{t(($) => $.actionDeleteWallet)}
</DropdownMenuItem>
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenExport((value) => !value)}>
Copy link

Choose a reason for hiding this comment

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

Similarly, rather than toggling openExport with setOpenExport((value) => !value), use setOpenExport(true) so that the export sheet always opens as expected.

Suggested change
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenExport((value) => !value)}>
<DropdownMenuItem className="cursor-pointer" onClick={() => setOpenExport(true)}>

<SettingsUiExportWalletMnemonicSheet open={openExport} setOpen={setOpenExport} wallet={wallet} />
<UiConfirm
action={async () => await deleteItem(wallet)}
actionLabel="Delete"
Copy link

Choose a reason for hiding this comment

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

The delete confirmation's actionLabel is hardcoded as "Delete". Consider using a localized string with t() to support internationalization.

Suggested change
actionLabel="Delete"
actionLabel={t(($) => $.actionDeleteWallet)}

@bundlemon
Copy link

bundlemon bot commented Dec 14, 2025

BundleMon

Files added (3)
Status Path Size Limits
apps/extension/.output/chrome-mv3/chunks/drop
down-(hash).js
+2.16KB -
apps/desktop/dist/assets/dropdown-(hash).js
+2.16KB -
apps/web/dist/assets/dropdown-(hash).js
+2.15KB -
Files updated (10)
Status Path Size Limits
apps/web/dist/assets/index-(hash).js
279.85KB (+279.68KB +165547.4%) -
apps/extension/.output/chrome-mv3/chunks/clie
nt-(hash).js
254.88KB (+314B +0.12%) -
apps/web/dist/assets/settings-(hash).js
20.06KB (+24B +0.12%) -
apps/desktop/dist/assets/settings-(hash).js
20.06KB (+20B +0.1%) -
apps/desktop/dist/assets/index.browser-(hash)
.js
814B (-555B -40.54%) -
apps/desktop/dist/assets/portfolio-(hash).js
2.62KB (-1.89KB -41.93%) -
apps/web/dist/assets/portfolio-(hash).js
2.62KB (-1.9KB -41.96%) -
apps/extension/.output/chrome-mv3/chunks/port
folio-(hash).js
2.62KB (-1.91KB -42.15%) -
apps/extension/.output/chrome-mv3/chunks/inde
x.browser-(hash).js
1.34KB (-4.59KB -77.39%) -
apps/desktop/dist/assets/index-(hash).js
172B (-251.63KB -99.93%) -
Unchanged files (88)
Status Path Size Limits
apps/extension/.output/chrome-mv3/chunks/deri
ve-(hash).js
23.43KB -
apps/desktop/dist/assets/derive-(hash).js
23.42KB -
apps/web/dist/assets/derive-(hash).js
23.42KB -
apps/extension/.output/chrome-mv3/chunks/sett
ings-(hash).js
20.06KB -
apps/extension/.output/chrome-mv3/chunks/form
-(hash).js
11.03KB -
apps/desktop/dist/assets/form-(hash).js
11.03KB -
apps/web/dist/assets/form-(hash).js
11.03KB -
apps/extension/.output/chrome-mv3/chunks/sele
ct-(hash).js
8.08KB -
apps/desktop/dist/assets/select-(hash).js
8.08KB -
apps/web/dist/assets/select-(hash).js
8.07KB -
apps/extension/.output/chrome-mv3/chunks/onbo
arding-(hash).js
5.27KB -
apps/desktop/dist/assets/onboarding-(hash).js
5.26KB -
apps/web/dist/assets/onboarding-(hash).js
5.26KB -
apps/extension/.output/chrome-mv3/chunks/crea
te-(hash).js
4.23KB -
apps/desktop/dist/assets/create-(hash).js
4.23KB -
apps/web/dist/assets/create-(hash).js
4.22KB -
apps/desktop/dist/assets/use-(hash).js
3.21KB -
apps/web/dist/assets/use-(hash).js
3.21KB -
apps/extension/.output/chrome-mv3/chunks/use-
(hash).js
3.2KB -
apps/extension/.output/chrome-mv3/chunks/cons
tants-(hash).js
3.16KB -
apps/web/dist/assets/constants-(hash).js
3.16KB -
apps/desktop/dist/assets/constants-(hash).js
3.15KB -
apps/desktop/dist/assets/vanity-(hash).js
2.68KB -
apps/web/dist/assets/vanity-(hash).js
2.68KB -
apps/extension/.output/chrome-mv3/chunks/togg
le-(hash).js
2.45KB -
apps/desktop/dist/assets/toggle-(hash).js
2.45KB -
apps/web/dist/assets/toggle-(hash).js
2.45KB -
apps/extension/.output/chrome-mv3/chunks/fiel
d-(hash).js
1.93KB -
apps/desktop/dist/assets/field-(hash).js
1.93KB -
apps/web/dist/assets/field-(hash).js
1.93KB -
apps/extension/.output/chrome-mv3/chunks/chec
kbox-(hash).js
1.89KB -
apps/desktop/dist/assets/checkbox-(hash).js
1.88KB -
apps/web/dist/assets/checkbox-(hash).js
1.88KB -
apps/extension/.output/chrome-mv3/chunks/requ
est-(hash).js
1.87KB -
apps/desktop/dist/assets/request-(hash).js
1.87KB -
apps/web/dist/assets/request-(hash).js
1.79KB -
apps/extension/.output/chrome-mv3/chunks/item
-(hash).js
1.22KB -
apps/desktop/dist/assets/item-(hash).js
1.22KB -
apps/web/dist/assets/item-(hash).js
1.21KB -
apps/extension/.output/chrome-mv3/chunks/tool
s-(hash).js
1.17KB -
apps/desktop/dist/assets/tools-(hash).js
1.16KB -
apps/web/dist/assets/tools-(hash).js
1.16KB -
apps/desktop/dist/assets/explorer-(hash).js
1.14KB -
apps/web/dist/assets/explorer-(hash).js
1.14KB -
apps/extension/.output/chrome-mv3/chunks/expl
orer-(hash).js
1.14KB -
apps/web/dist/assets/index.browser-(hash).js
815B -
apps/web/dist/assets/zod-(hash).js
763B -
apps/desktop/dist/assets/zod-(hash).js
762B -
apps/extension/.output/chrome-mv3/chunks/zod-
(hash).js
760B -
apps/extension/.output/chrome-mv3/chunks/badg
e-(hash).js
734B -
apps/desktop/dist/assets/badge-(hash).js
733B -
apps/web/dist/assets/badge-(hash).js
730B -
apps/desktop/dist/assets/standard-(hash).js
650B -
apps/extension/.output/chrome-mv3/chunks/stan
dard-(hash).js
648B -
apps/web/dist/assets/standard-(hash).js
648B -
apps/desktop/dist/assets/button-(hash).js
579B -
apps/web/dist/assets/button-(hash).js
579B -
apps/desktop/dist/assets/input-(hash).js
576B -
apps/extension/.output/chrome-mv3/chunks/butt
on-(hash).js
576B -
apps/extension/.output/chrome-mv3/chunks/inpu
t-(hash).js
575B -
apps/web/dist/assets/input-(hash).js
575B -
apps/desktop/dist/assets/ui-(hash).js
525B -
apps/extension/.output/chrome-mv3/chunks/ui-(
hash).js
525B -
apps/web/dist/assets/ui-(hash).js
524B -
apps/extension/.output/chrome-mv3/chunks/labe
l-(hash).js
515B -
apps/web/dist/assets/label-(hash).js
515B -
apps/desktop/dist/assets/label-(hash).js
514B -
apps/desktop/dist/assets/get-(hash).js
492B -
apps/extension/.output/chrome-mv3/chunks/get-
(hash).js
492B -
apps/web/dist/assets/get-(hash).js
492B -
apps/extension/.output/chrome-mv3/chunks/conv
ert-(hash).js
423B -
apps/desktop/dist/assets/convert-(hash).js
421B -
apps/web/dist/assets/convert-(hash).js
420B -
apps/extension/.output/chrome-mv3/chunks/sol-
(hash).js
419B -
apps/web/dist/assets/sol-(hash).js
416B -
apps/desktop/dist/assets/sol-(hash).js
415B -
apps/extension/.output/chrome-mv3/chunks/dev-
(hash).js
276B -
apps/web/dist/assets/dev-(hash).js
276B -
apps/desktop/dist/assets/dev-(hash).js
275B -
apps/extension/.output/chrome-mv3/chunks/side
panel-(hash).js
202B -
apps/extension/.output/chrome-mv3/chunks/popu
p-(hash).js
197B -
apps/extension/.output/chrome-mv3/chunks/inde
x-(hash).js
172B -
apps/desktop/dist/assets/ellipsify-(hash).js
145B -
apps/extension/.output/chrome-mv3/chunks/elli
psify-(hash).js
145B -
apps/web/dist/assets/ellipsify-(hash).js
145B -
apps/desktop/dist/assets/network-(hash).js
121B -
apps/extension/.output/chrome-mv3/chunks/netw
ork-(hash).js
121B -
apps/web/dist/assets/network-(hash).js
121B -

Total files change +23.96KB +2.91%

Groups updated (3)
Status Path Size Limits
apps/web/dist/**/*-.js
461.39KB (+577B +0.12%) -
apps/extension/.output/chrome-mv3/**/*-
.js
433.41KB (+575B +0.13%) -
apps/desktop/dist/**/*-.js
435.28KB (+540B +0.12%) -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Caution

Changes requested ❌

Reviewed 4b35c5b in 1 minute and 46 seconds. Click for details.
  • Reviewed 236 lines of code in 7 files
  • Skipped 0 files when reviewing.
  • Skipped posting 0 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.

Workflow ID: wflow_lncGAlOdR18JNoZE

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

</DropdownMenuContent>
</DropdownMenu>
<SettingsUiExportWalletMnemonicSheet open={openExport} setOpen={setOpenExport} wallet={wallet} />
<UiConfirm
Copy link

Choose a reason for hiding this comment

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

Consider localizing the static texts in the UiConfirm component (actionLabel, description, title) instead of using hardcoded English strings for consistency with other translations.

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.

3 participants