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`.
Use nldd-icon-button for the card-detail modal source link
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
25179d5d52
The modal header held 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), while the "Open in Mattermost" link beside it was hand-rolled at 24x24
with a 16px icon. It was also the only one of the two with a hover plate, and
the only one taking the link cursor.

The component supplies all of it, so 15 lines of CSS go with the swap. No size
attribute, matching the close button: both land on md, the header stays 60px,
and NLDD uses neutral-transparent on md for a panel dismissal itself.

:rel and :title fall away - the component sets rel="noopener noreferrer" under
target="_blank" and renders its own tooltip from the accessible label.
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
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
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.