Skip to content

feat(portal): configurable hover effects and text links style#95

Draft
BatLeDev wants to merge 27 commits into
masterfrom
feat-hover-links-style
Draft

feat(portal): configurable hover effects and text links style#95
BatLeDev wants to merge 27 commits into
masterfrom
feat-hover-links-style

Conversation

@BatLeDev

@BatLeDev BatLeDev commented Jul 8, 2026

Copy link
Copy Markdown
Member

Make hover effects on clickable elements and the style of text links configurable, portal-wide with per-block overrides.

  • New hoverConfig primitive in common-defs (effects: darken, elevate, background color, border color, title color, title underline, image zoom + a hover color) with per-field resolution: block override > portal defaults > legacy darken
  • Hover effects wired on dataset/application/reuse/news/event cards, box (card) elements, topics chips and linked title elements; keyboard focus (:focus-visible) matches hover and prefers-reduced-motion disables transitions (RGAA)
  • hoverColor on button configs: navigation links, menu element, contact submit button, and footer important links (which gain a full buttonConfig — variant, density, rounded, uppercase — defaulting to the previous rendering)
  • New linksConfig (underline always/hover/never + color) applied globally to text links (a.simple-link, markdown included), with a live preview card in the portal configuration
  • Unit tests on the resolution logic and e2e coverage (hover classes, defaults inheritance, legacy behavior, links underline)

Heads-up:

  • linksConfig.underline defaults to always: text links on existing portals become underlined (deliberate, RGAA recommendation)
  • Unconfigured portals keep the exact previous card hover behavior (native Vuetify darken overlay), covered by e2e
  • The manager image build now needs portal/app/utils (cross-workspace import of the hover utils), hence the Dockerfile change

BatLeDev added 16 commits July 7, 2026 12:48
Apply the configured hover color to nav links, the navigation menu
button and footer important-link buttons, and add an importantLinksConfig
option to the footer schema to style those buttons.
… for links

The `text-secondary` custom property is only emitted in assisted theme
mode; manual/advanced color configs strip it, leaving the links color
rule pointing at an undefined --v-theme-text-secondary. Use a nested
var() fallback to the raw --v-theme-secondary so the rule always
resolves, matching the getTextColorsCss precedent in lib-common-types.
…anager type-check

ui's AutoImport only scans src/utils and src/composables, not portal's
dirs, so shared components using the new hover helpers failed
check-types. Re-export the pure portal util and reimplement the
composable against ui's own portal store, following the existing
convention for other portal composables.
… fallback

- apply buttonHoverClass/buttonHoverStyle to the contact form send button so
  buttonConfig.hoverColor is no longer dead there
- filter topics chip hover effects to the chip-relevant subset before
  deriving classes/style, falling back to native darken when the resolved
  defaults only contain title/image effects, instead of stripping classes
  after the fact and losing all hover feedback
- re-export portal hover utils via the #portal alias in ui/src/utils/hover.ts
  instead of a relative path, matching existing alias usage
ui/src/utils/hover.ts and the copied topics-list.vue value-import
../../../portal/app/utils/hover, but the Docker "ui" stage only copied
portal/app/components and composables/agent, so `npm -w ui run build`
failed in CI while passing locally. Type-only #portal imports
(use-catalog) don't need the source and are unaffected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant