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:
parent
fad5e46dfb
commit
120367acbb
22 changed files with 1780 additions and 597 deletions
|
|
@ -1,10 +1,18 @@
|
|||
/**
|
||||
* Services List Styles
|
||||
* Services Styles
|
||||
*
|
||||
* Feature-specific styling only.
|
||||
* Reuses: swp-stat-card (stats.css), swp-data-table (components.css),
|
||||
* swp-sticky-header (page.css), swp-row-toggle (employees.css),
|
||||
* swp-btn (components.css)
|
||||
* Reuses:
|
||||
* - swp-stat-card (stats.css)
|
||||
* - swp-data-table (components.css)
|
||||
* - swp-sticky-header, swp-page-container (page.css)
|
||||
* - swp-row-toggle (components.css)
|
||||
* - swp-btn (components.css)
|
||||
* - swp-detail-grid, swp-edit-section (components.css)
|
||||
* - swp-tags-row, swp-tag (components.css)
|
||||
* - swp-status-indicator (components.css)
|
||||
* - swp-fact-boxes-inline (components.css)
|
||||
* - view-fade-out (components.css)
|
||||
*/
|
||||
|
||||
/* ===========================================
|
||||
|
|
@ -18,6 +26,11 @@ swp-services-header {
|
|||
margin-bottom: var(--section-gap);
|
||||
}
|
||||
|
||||
swp-services-header swp-btn-group {
|
||||
display: flex;
|
||||
gap: var(--spacing-3);
|
||||
}
|
||||
|
||||
swp-search-input {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -170,6 +183,29 @@ swp-category-row[data-expanded="false"] swp-category-toggle i {
|
|||
margin-left: var(--spacing-2);
|
||||
}
|
||||
|
||||
/* Category edit icon */
|
||||
swp-category-edit {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
color: var(--color-text-tertiary);
|
||||
border-radius: var(--radius-sm);
|
||||
cursor: pointer;
|
||||
transition: all 0.15s ease;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
swp-category-row:hover swp-category-edit {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
swp-category-edit:hover {
|
||||
color: var(--color-blue);
|
||||
background: var(--bg-blue-medium);
|
||||
}
|
||||
|
||||
/* ===========================================
|
||||
SERVICE ROW (indented under category)
|
||||
=========================================== */
|
||||
|
|
@ -191,52 +227,48 @@ swp-card.services-list swp-data-table-row:hover swp-row-toggle {
|
|||
}
|
||||
|
||||
/* ===========================================
|
||||
CATEGORIES LIST TABLE
|
||||
VIEW CONTAINERS (List / Detail)
|
||||
=========================================== */
|
||||
|
||||
swp-card.categories-list {
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
swp-services-list-view,
|
||||
swp-service-detail-view {
|
||||
transition: opacity 100ms ease;
|
||||
}
|
||||
|
||||
/* Table columns: Category(1fr) | ServiceCount(120px) | Caret(40px) */
|
||||
swp-card.categories-list swp-data-table {
|
||||
grid-template-columns: 1fr 120px 40px;
|
||||
swp-service-detail-view {
|
||||
display: none;
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-header,
|
||||
swp-card.categories-list swp-data-table-row {
|
||||
padding: 0 var(--spacing-10);
|
||||
/* ===========================================
|
||||
SERVICE DETAIL HEADER
|
||||
=========================================== */
|
||||
|
||||
swp-service-detail-header {
|
||||
display: flex;
|
||||
gap: var(--spacing-6);
|
||||
padding: var(--spacing-6) 0;
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-header swp-data-table-cell {
|
||||
padding-top: var(--spacing-5);
|
||||
padding-bottom: var(--spacing-5);
|
||||
swp-service-info {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--spacing-2);
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-row {
|
||||
cursor: pointer;
|
||||
swp-service-name-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--spacing-4);
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-cell {
|
||||
padding: var(--spacing-5) 0;
|
||||
swp-service-name {
|
||||
font-size: var(--font-size-2xl);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
color: var(--color-text);
|
||||
outline: none;
|
||||
|
||||
&:last-child {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
&:focus {
|
||||
border-bottom: 1px dashed var(--color-teal);
|
||||
}
|
||||
}
|
||||
|
||||
/* Mono font for service count */
|
||||
swp-card.categories-list swp-data-table-row swp-data-table-cell:nth-child(2) {
|
||||
font-family: var(--font-mono);
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-row:hover {
|
||||
background: var(--color-background-hover);
|
||||
}
|
||||
|
||||
swp-card.categories-list swp-data-table-row:hover swp-row-toggle {
|
||||
color: var(--color-teal);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue