Enhances Services module with detail view and interactions

Adds comprehensive service detail view with multiple tabs and dynamic interactions
Implements client-side navigation between service list and detail views
Introduces mock service data catalog for flexible component rendering
Extends localization support for new service detail screens

Improves user experience by adding edit capabilities and smooth view transitions
This commit is contained in:
Janus C. H. Knudsen 2026-01-16 22:03:22 +01:00
parent fad5e46dfb
commit 120367acbb
22 changed files with 1780 additions and 597 deletions

View file

@ -181,3 +181,95 @@ swp-notification-intro {
color: var(--color-text-secondary);
margin-bottom: var(--spacing-5);
}
/* ===========================================
SELECT DROPDOWN (Popover API)
=========================================== */
swp-select {
position: relative;
display: inline-block;
}
swp-select button {
display: flex;
align-items: center;
gap: var(--spacing-3);
padding: var(--spacing-2) var(--spacing-3);
font-size: var(--font-size-base);
font-family: inherit;
border-radius: var(--radius-sm);
background: var(--color-background-alt);
border: 1px solid transparent;
cursor: pointer;
transition: all 150ms ease;
min-width: 160px;
anchor-name: --select-trigger;
&:hover {
background: var(--color-background);
}
&:focus {
outline: none;
border-color: var(--color-teal);
}
}
swp-select-value {
flex: 1;
text-align: left;
color: var(--color-text);
}
swp-select button i {
color: var(--color-text-secondary);
font-size: var(--font-size-base);
transition: transform 150ms ease;
}
swp-select button[aria-expanded="true"] i {
transform: rotate(180deg);
}
swp-select [popover] {
position: absolute;
position-anchor: --select-trigger;
top: anchor(bottom);
left: anchor(left);
margin: var(--spacing-1) 0 0 0;
padding: var(--spacing-2);
background: var(--color-surface);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-lg);
min-width: anchor-size(width);
max-height: 280px;
overflow-y: auto;
}
swp-select [popover]:popover-open {
display: flex;
flex-direction: column;
gap: 2px;
}
swp-select-option {
display: flex;
align-items: center;
padding: var(--spacing-2) var(--spacing-3);
border-radius: var(--radius-sm);
cursor: pointer;
transition: background 150ms ease;
font-size: var(--font-size-sm);
color: var(--color-text);
&:hover {
background: var(--color-background);
}
&.selected {
background: var(--bg-teal-subtle);
font-weight: var(--font-weight-medium);
color: var(--color-teal);
}
}