Skip to content

feat(app): the confirmation, settings and vault dialogs from @frostyard/lodge-ui - #82

Merged
bketelsen merged 2 commits into
mainfrom
ui/sheet
Oct 21, 2026
Merged

bketelsen merged 2 commits into
mainfrom
ui/sheet

Conversation

@bketelsen

Copy link
Copy Markdown
Contributor

Step 4 of the UI library migration (Brian, 2026-10-21), on ui/v0.4.0 (lodge #28: a Sheet named without a heading, alertdialog, portal; menu rows named by their label).

  • ConfirmDialog: lodge-ui's Sheet with role="alertdialog", width 400, focus on the confirm button, no close button, portal.
  • SettingsDialog and VaultManager's dialog form: ariaLabel (no heading), their own widths (900, 720) and heights, their own Close, portal.
  • Prompt, Drawer and VaultManager's page form stay local: they are not centred dialogs.
  • 127 lines removed, 83 added.

Visual changes: ConfirmDialog's buttons sit 4 px higher (16 px gap instead of 20). Settings and Manage vaults: none (they pass p-0! to keep their own layout; a padding option on the Sheet would make that cleaner later).

Conflicts with #81 (Menu, ui/v0.3.0) on app/package.json and the lock: whichever merges second, I resolve with a merge and an nsl lock regeneration on ui/v0.4.0, which also restores the menu rows' accessible names.

Gates: make check, make ui-check (783 tests).

…rd/lodge-ui

The three frames are lodge-ui's Sheet at ui/v0.4.0, whose options this
step needed: a sheet named without a heading, an alertdialog role, and a
portal onto the body.

- ConfirmDialog: role="alertdialog", width 400, no close button, its
  confirm button as initialFocus, title and text as title and description,
  portalled. Its own Escape and overlay handling go with the frame.
- SettingsDialog: ariaLabel="Settings" (it draws no heading in a wide
  window), width 900, its height and narrow-window classes in className,
  portalled, with its own top-right Close (showClose is false), and its
  layout in a wrapper that fills the frame.
- VaultManager's dialog form: ariaLabel="Manage vaults", width 720, its
  height and widths in className, portalled, with the same Close; its page
  form and the Prompt and the Drawer stay local, as they are not centred
  dialogs.

Visual differences:
- ConfirmDialog's actions are 4 pixels higher: the frame's content starts
  at mt-4 (16px) where the old block was mt-5 (20px). Nothing else moves:
  the title and the text keep their type roles, the width 400, and the
  backdrop was already --backdrop.
- SettingsDialog and VaultManager keep their exact frame: p-0! cancels the
  package's p-5 (which is meant for a small form), and their layouts sit in
  an absolute inset-0 wrapper, so the sizes, the radius, the border and
  the shadow are as before. The one visible change: the Close buttons are
  unchanged, and no second close button is drawn (showClose is false).
- All three now portal through the Sheet rather than their own
  createPortal: the same place on the body.

79 lines added, 127 removed. Tests: SettingsDialog's and VaultManager's
own close/Escape/outside checks pass as before, now with one Close button.

Gates: make ui-check (783 tests) and make check.
@bketelsen
bketelsen merged commit 74d617d into main Oct 21, 2026
4 checks passed
@bketelsen
bketelsen deleted the ui/sheet branch October 21, 2026 17:02
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.

1 participant