feat(ui): Bulk Export matches the Figma Export frames - #743
Merged
Conversation
Closes #735. The create form takes the frame's shape: scope as a radio-card row (the app's first designed radio-group treatment - choice-grid/choice-card, documented in the README vocabulary), the resource-type grid and the narrow-down filters as icon-headed cards with a Clear reset, and the actions on a footer row (Active exports pill + Start export). The Group ID show/hide keeps riding the same :has() rule. Active Exports becomes the frame's job cards: name and the action row (Cancel/Retry plus the status tag) up top, a full-width progress track recolored by terminal state, one meta line, and the completed files as designed download pills - the payoff list was a bare ul. The card view model derives progress_pct from the recipient's X-Progress so the track has a width. The issue's Figma link points at the Batch/Transaction section; the authoritative frames are Export (390:621) and Export - Active Exports (392:1275). Neither shows a job detail view, so the flow question stays with #609 and this change is presentation only.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
smunini
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #735.
First, a correction for the record: the issue's Figma link (
node-id=330-719) lands on the Batch/Transaction section. The authoritative frames are in the Export section:Export(390:621) andExport — Active Exports(392:1275). Neither shows a job detail view, so per the issue's sequencing note the flow question stays with #609 — this change is presentation only.Create form
choice-grid/choice-card, the app's first designed radio-group treatment (:has(:checked)accent state,accent-coloron the radio itself), documented in the README vocabulary as the issue asks. Group ID keeps riding the existing:has()show/hide.card-headcards (layers/sliders), the filter fields side-by-side with the frame's uppercase labels, and a Clear button — a nativetype=reset(this page ships no JS; the form's defaults are exactly "system scope, nothing checked", so reset is clear).btn--accentmetrics so the row lines up — button-scale unification stays with ui: .btn--primary overrides the base button height, so Cancel and Execute mismatch on Batch/Transaction — unify the button size scale app-wide #728. The frame's top-right "New submission" reads as the shared-header CTA slot; on the create page itself it would self-link, so the footer's Start export is the CTA — flagged for Brett.Active Exports
tag--*), a full-width progress track recolored by terminal state, one meta line.JobCardderivesprogress_pctfrom the recipient's X-Progress so the track has a width; terminal states fill it.<ul>— becomes download pills with the import glyph. (The frame's single Download button is ambiguous for multi-file manifests, and a zip endpoint would be an API change; the pills are the designed treatment for N files.)Checks
Rust ring green (the
.form-panelassert now pins the threechoice-cards); design-system (new classes documented, no duplicate selectors), a11y light+dark, and nojs Playwright projects green; 5s polling and the cancel/retry/kick-off flows untouched. New catalog keys (bulk-export-clear,-files-word,-exports-word) in all three locales.No Playwright spec for bulk export existed before and none is added here — per the issue that split is fine; happy to follow up.