Use nldd-icon-button for the card-detail modal source link #239

Closed
robbertbos wants to merge 1 commit from style/modal-header-icon-button into main
Owner

The card-detail modal header held two controls at very different sizes.

Box Icon Hover Cursor
Close (Modal.vue) 44x44 24px none arrow
"Open in Mattermost" 24x24 16px grey plate hand

Modal.vue:85 renders the close button as an nldd-icon-button with no size, so it gets NLDD's md default. The source link was hand-rolled with its own box, its own hover rule and its own colour.

The swap

nldd-icon-button supplies all of it, so the 15 lines of .iconButton CSS go with it. No size attribute, matching the close button: both land on md, the header stays 60px, and NLDD uses neutral-transparent at md for a panel dismissal in its own components (banner, just-in-time-education).

:rel and :title fall away - the component sets rel="noopener noreferrer" under target="_blank" and renders its own tooltip from the accessible label.

If you want them smaller instead

size="sm" on both would make the header 49px instead of 60px, but that shrinks it in Sneltoetsen, RecoveryKey and ComposeOverlay too, since they share Modal.vue. Worth deciding deliberately rather than as a side effect; not done here.

Verification

vue-tsc, eslint (0 errors), vitest 691 in 94 files, vite build.

The card-detail modal header held two controls at very different sizes. | | Box | Icon | Hover | Cursor | |---|---|---|---|---| | Close (`Modal.vue`) | 44x44 | 24px | none | arrow | | "Open in Mattermost" | 24x24 | 16px | grey plate | hand | `Modal.vue:85` renders the close button as an `nldd-icon-button` with no `size`, so it gets NLDD's `md` default. The source link was hand-rolled with its own box, its own hover rule and its own colour. ## The swap `nldd-icon-button` supplies all of it, so the 15 lines of `.iconButton` CSS go with it. **No `size` attribute**, matching the close button: both land on `md`, the header stays 60px, and NLDD uses `neutral-transparent` at `md` for a panel dismissal in its own components (`banner`, `just-in-time-education`). `:rel` and `:title` fall away - the component sets `rel="noopener noreferrer"` under `target="_blank"` and renders its own tooltip from the accessible label. ## If you want them smaller instead `size="sm"` on **both** would make the header 49px instead of 60px, but that shrinks it in Sneltoetsen, RecoveryKey and ComposeOverlay too, since they share `Modal.vue`. Worth deciding deliberately rather than as a side effect; not done here. ## Verification `vue-tsc`, eslint (0 errors), vitest 691 in 94 files, `vite build`.
robbertbos force-pushed style/modal-header-icon-button from 25179d5d52
Some checks failed
CI / pre-commit (pull_request) Successful in 1m46s
CI / backend-test (pull_request) Failing after 1m28s
CI / release-scripts (pull_request) Successful in 11s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m4s
security-scan / Python SAST (bandit) (pull_request) Successful in 45s
security-scan / JS SCA (npm audit) (pull_request) Successful in 44s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 26s
security-scan / SBOM (trivy) (pull_request) Successful in 18s
CI / frontend-test (pull_request) Successful in 6m3s
test-build / build (backend) (pull_request) Successful in 2m4s
test-build / build (frontend) (pull_request) Successful in 2m25s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Successful in 13m0s
to 73a30f3fba
All checks were successful
CI / release-scripts (pull_request) Successful in 9s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 22s
security-scan / Python SAST (bandit) (pull_request) Successful in 33s
security-scan / JS SCA (npm audit) (pull_request) Successful in 27s
security-scan / SBOM (trivy) (pull_request) Successful in 14s
CI / pre-commit (pull_request) Successful in 46s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 52s
CI / frontend-test (pull_request) Successful in 1m31s
test-build / build (backend) (pull_request) Successful in 1m3s
test-build / build (frontend) (pull_request) Successful in 1m7s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m25s
CI / e2e (pull_request) Successful in 4m22s
2026-08-06 18:20:59 +00:00
Compare
Author
Owner

Closing: this is being handled elsewhere, like #236.

What was in here: the card-detail modal header had two controls at very different sizes. Modal.vue's close button is an nldd-icon-button with no size, so NLDD's md default (44x44, 24px icon); the "Open in Mattermost" link beside it was hand-rolled at 24x24 with a 16px icon, and it was the only one of the two with a hover plate and the link cursor.

The change made it an nldd-icon-button with no size attribute, matching the close button, and dropped the 15 lines of .iconButton CSS. :rel and :title fall away because the component sets rel="noopener noreferrer" under target="_blank" and renders its own tooltip from the accessible label.

One thing to decide if you want them smaller instead: size="sm" on both makes the header 49px instead of 60px, but Modal.vue is shared, so that also shrinks Sneltoetsen, RecoveryKey and ComposeOverlay. Worth deciding deliberately rather than as a side effect.

Closing: this is being handled elsewhere, like #236. What was in here: the card-detail modal header had two controls at very different sizes. `Modal.vue`'s close button is an `nldd-icon-button` with no `size`, so NLDD's `md` default (44x44, 24px icon); the "Open in Mattermost" link beside it was hand-rolled at 24x24 with a 16px icon, and it was the only one of the two with a hover plate and the link cursor. The change made it an `nldd-icon-button` with **no size attribute**, matching the close button, and dropped the 15 lines of `.iconButton` CSS. `:rel` and `:title` fall away because the component sets `rel="noopener noreferrer"` under `target="_blank"` and renders its own tooltip from the accessible label. One thing to decide if you want them smaller instead: `size="sm"` on **both** makes the header 49px instead of 60px, but `Modal.vue` is shared, so that also shrinks Sneltoetsen, RecoveryKey and ComposeOverlay. Worth deciding deliberately rather than as a side effect.
robbertbos closed this pull request 2026-08-06 18:24:28 +00:00
Author
Owner

Opgegaan in #245, samen met #236 en #242. De commit is ongewijzigd overgenomen.

Opgegaan in #245, samen met #236 en #242. De commit is ongewijzigd overgenomen.
All checks were successful
CI / release-scripts (pull_request) Successful in 9s
Required
Details
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 22s
Required
Details
security-scan / Python SAST (bandit) (pull_request) Successful in 33s
Required
Details
security-scan / JS SCA (npm audit) (pull_request) Successful in 27s
Required
Details
security-scan / SBOM (trivy) (pull_request) Successful in 14s
Required
Details
CI / pre-commit (pull_request) Successful in 46s
Required
Details
security-scan / Python SCA (pip-audit) (pull_request) Successful in 52s
Required
Details
CI / frontend-test (pull_request) Successful in 1m31s
Required
Details
test-build / build (backend) (pull_request) Successful in 1m3s
Required
Details
test-build / build (frontend) (pull_request) Successful in 1m7s
Required
Details
test-build / build (pull_request) Successful in 0s
Required
Details
CI / backend-test (pull_request) Successful in 2m25s
Required
Details
CI / e2e (pull_request) Successful in 4m22s
Required
Details

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!239
No description provided.