glam/frontend/src/components/mapping/MappingExplorer.css
kempersc b34a8ac777 Update LinkML manifest generation timestamp and enhance MappingExplorer with schema validation
- Updated the generated timestamp in the LinkML manifest file.
- Added new CSS styles for schema status and warning indicators in MappingExplorer.
- Implemented schema validation logic in MappingExplorer to check field validity against the loaded LinkML schema.
- Enhanced the UI to display schema status and warnings for invalid fields in the mapping interface.
- Refactored field details panel to show schema validity messages for target classes and slots.
- Updated various target classes and slots in custodian data mappings for consistency and accuracy.
2026-02-18 18:44:03 +01:00

1136 lines
24 KiB
CSS

/**
* MappingExplorer.css
*
* Styles for the data mapping visualization component
* Following Netwerk Digitaal Erfgoed (NDE) house style
*
* NDE Brand Colors:
* - Primary Blue: #0a3dfa
* - Dark Blue: #172a59 (primary text)
* - Orange Accent: #fa5200 (highlights)
* - Light Gray: #f6f6f6 (backgrounds)
*/
/* ============================================================================
* MAIN CONTAINER
* ============================================================================ */
.mapping-explorer {
display: flex;
flex-direction: column;
height: 100%;
min-height: 600px;
background: #f6f6f6; /* NDE light background */
color: #172a59; /* NDE dark blue text */
border-radius: 8px;
overflow: hidden;
border: 1px solid #e0e0e0;
}
/* ============================================================================
* HEADER
* ============================================================================ */
.mapping-explorer__header {
display: flex;
flex-wrap: wrap;
gap: 12px;
padding: 16px;
background: #ffffff;
border-bottom: 1px solid #e0e0e0;
}
.mapping-explorer__search {
display: flex;
align-items: center;
flex: 1;
min-width: 200px;
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 0 12px;
transition: border-color 0.2s, box-shadow 0.2s;
}
.mapping-explorer__search:focus-within {
border-color: #0a3dfa;
box-shadow: 0 0 0 2px rgba(10, 61, 250, 0.15);
}
.mapping-explorer__search-icon {
color: #757575;
flex-shrink: 0;
}
.mapping-explorer__search-input {
flex: 1;
background: transparent;
border: none;
color: #172a59;
padding: 10px 12px;
font-size: 14px;
font-family: 'Roboto', Helvetica, Arial, sans-serif;
}
.mapping-explorer__search-input::placeholder {
color: #9e9e9e;
}
.mapping-explorer__search-input:focus {
outline: none;
}
.mapping-explorer__filters {
display: flex;
gap: 12px;
flex-wrap: wrap;
}
.mapping-explorer__category-select {
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 6px;
color: #172a59;
padding: 8px 12px;
font-size: 14px;
font-family: 'Roboto', Helvetica, Arial, sans-serif;
cursor: pointer;
transition: border-color 0.2s;
min-width: 220px;
}
.mapping-explorer__category-select:focus {
outline: none;
border-color: #0a3dfa;
}
.mapping-explorer__category-select:active {
background: rgba(10, 61, 250, 0.08); /* Light blue press state */
color: #172a59;
}
.mapping-explorer__view-toggle {
display: flex;
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 6px;
overflow: hidden;
}
.mapping-explorer__view-btn {
display: flex;
align-items: center;
gap: 6px;
background: transparent;
border: none;
color: #757575;
padding: 8px 12px;
font-size: 13px;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
transition: all 0.2s;
}
.mapping-explorer__view-btn:hover {
background: #f6f6f6;
color: #172a59;
}
.mapping-explorer__view-btn:active {
background: rgba(10, 61, 250, 0.15); /* Light blue press state */
color: #172a59;
}
.mapping-explorer__view-btn--active {
background: #0a3dfa; /* NDE primary blue */
color: white;
}
.mapping-explorer__view-btn--active:hover {
background: #172a59; /* NDE dark blue */
color: white;
}
.mapping-explorer__view-btn--active:active {
background: #0a3dfa; /* Slightly lighter on press */
color: white;
}
/* ============================================================================
* DATA SOURCE TOGGLE
* ============================================================================ */
.mapping-explorer__data-source-toggle {
display: flex;
align-items: center;
gap: 8px;
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 4px;
}
.mapping-explorer__data-source-label {
font-size: 12px;
color: #757575;
padding: 0 8px;
font-family: 'Roboto', Helvetica, Arial, sans-serif;
}
.mapping-explorer__data-source-btn {
display: flex;
align-items: center;
gap: 6px;
background: transparent;
border: none;
color: #757575;
padding: 6px 12px;
font-size: 13px;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
border-radius: 4px;
transition: all 0.2s;
}
.mapping-explorer__data-source-btn:hover {
background: #f6f6f6;
color: #172a59;
}
.mapping-explorer__data-source-btn:active {
background: rgba(10, 61, 250, 0.15); /* Light blue press state */
color: #172a59;
}
.mapping-explorer__data-source-btn--active {
background: #0a3dfa; /* NDE primary blue */
color: white;
}
.mapping-explorer__data-source-btn--active:hover {
background: #172a59; /* NDE dark blue */
color: white;
}
.mapping-explorer__data-source-btn--active:active {
background: #0a3dfa; /* Slightly lighter on press */
color: white;
}
/* ============================================================================
* EXPORT BUTTON
* ============================================================================ */
.mapping-explorer__export-btn {
display: flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #fa5200 0%, #d44600 100%); /* NDE orange gradient */
border: none;
color: white;
padding: 8px 16px;
font-size: 13px;
font-weight: 500;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
border-radius: 6px;
transition: all 0.2s;
box-shadow: 0 2px 4px rgba(250, 82, 0, 0.2);
}
.mapping-explorer__export-btn:hover:not(:disabled) {
background: linear-gradient(135deg, #ff6b1a 0%, #fa5200 100%);
box-shadow: 0 4px 8px rgba(250, 82, 0, 0.3);
transform: translateY(-1px);
}
.mapping-explorer__export-btn:active:not(:disabled) {
transform: translateY(0);
box-shadow: 0 1px 2px rgba(250, 82, 0, 0.2);
}
.mapping-explorer__export-btn:disabled {
opacity: 0.7;
cursor: not-allowed;
}
.mapping-explorer__export-btn--loading {
background: linear-gradient(135deg, #757575 0%, #616161 100%);
box-shadow: none;
}
.mapping-explorer__export-btn svg {
flex-shrink: 0;
}
.mapping-explorer__schema-status {
display: flex;
align-items: center;
height: 34px;
padding: 0 10px;
border-radius: 6px;
border: 1px solid #e0e0e0;
background: #ffffff;
color: #172a59;
font-size: 12px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
white-space: nowrap;
}
.mapping-explorer__schema-status--warn {
border-color: #fa5200;
box-shadow: 0 0 0 2px rgba(250, 82, 0, 0.15);
}
/* ============================================================================
* STATISTICS BAR
* ============================================================================ */
.mapping-explorer__stats {
display: flex;
justify-content: space-around;
padding: 12px 16px;
background: linear-gradient(90deg, #0a3dfa 0%, #172a59 100%); /* NDE blue gradient */
border-bottom: 1px solid #e0e0e0;
}
.mapping-explorer__stat {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
}
.mapping-explorer__stat-value {
font-size: 20px;
font-weight: 700;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
color: #ffffff;
}
.mapping-explorer__stat-label {
font-size: 11px;
text-transform: uppercase;
color: rgba(255, 255, 255, 0.8);
letter-spacing: 0.05em;
font-family: 'Roboto', Helvetica, Arial, sans-serif;
}
/* Statistics sections */
.mapping-explorer__stats-section {
display: flex;
gap: 24px;
align-items: center;
}
.mapping-explorer__stats-section--status {
gap: 12px;
}
/* Divider between general stats and status counts */
.mapping-explorer__stats-divider {
width: 1px;
height: 36px;
background: rgba(255, 255, 255, 0.3);
margin: 0 16px;
}
/* Status stat pills */
.mapping-explorer__status-stat {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
padding: 6px 12px;
border-radius: 6px;
border: 1px solid;
min-width: 70px;
}
.mapping-explorer__status-stat-value {
font-size: 16px;
font-weight: 700;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
.mapping-explorer__status-stat-label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.03em;
font-family: 'Roboto', Helvetica, Arial, sans-serif;
white-space: nowrap;
}
/* Responsive adjustments for stats */
@media (max-width: 1100px) {
.mapping-explorer__stats {
flex-wrap: wrap;
gap: 12px;
justify-content: center;
}
.mapping-explorer__stats-divider {
display: none;
}
.mapping-explorer__stats-section {
gap: 16px;
}
.mapping-explorer__stats-section--status {
gap: 8px;
}
.mapping-explorer__status-stat {
min-width: 60px;
padding: 4px 8px;
}
.mapping-explorer__status-stat-value {
font-size: 14px;
}
.mapping-explorer__status-stat-label {
font-size: 9px;
}
}
/* ============================================================================
* THREE-COLUMN CONTENT
* ============================================================================ */
.mapping-explorer__content {
display: grid;
grid-template-columns: 280px 1fr 360px;
flex: 1;
overflow: hidden;
}
@media (max-width: 1200px) {
.mapping-explorer__content {
grid-template-columns: 240px 1fr 300px;
}
}
@media (max-width: 900px) {
.mapping-explorer__content {
grid-template-columns: 1fr;
grid-template-rows: auto 1fr auto;
}
}
.mapping-explorer__panel {
display: flex;
flex-direction: column;
overflow: hidden;
border-right: 1px solid #e0e0e0;
background: #ffffff;
}
.mapping-explorer__panel:last-child {
border-right: none;
}
.mapping-explorer__panel-title {
padding: 12px 16px;
margin: 0;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: #757575;
background: #f6f6f6;
border-bottom: 1px solid #e0e0e0;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
/* ============================================================================
* LEFT PANEL: SOURCE TREE
* ============================================================================ */
.mapping-explorer__source-tree {
flex: 1;
overflow-y: auto;
padding: 8px;
background: #ffffff;
}
.mapping-explorer__source-item {
margin-bottom: 4px;
border-radius: 6px;
overflow: hidden;
}
.mapping-explorer__source-item--selected {
background: rgba(10, 61, 250, 0.08); /* NDE blue tint */
}
.mapping-explorer__source-header {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
cursor: pointer;
border-radius: 6px;
transition: background 0.15s;
}
.mapping-explorer__source-header:hover {
background: #f6f6f6;
}
.mapping-explorer__expand-btn {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
background: transparent;
border: none;
color: #757575;
cursor: pointer;
flex-shrink: 0;
}
.mapping-explorer__source-icon {
font-size: 16px;
flex-shrink: 0;
}
.mapping-explorer__source-name {
flex: 1;
font-size: 13px;
font-weight: 500;
color: #172a59;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
}
.mapping-explorer__field-count {
font-size: 11px;
color: #757575;
background: #f6f6f6;
padding: 2px 8px;
border-radius: 10px;
border: 1px solid #e0e0e0;
}
.mapping-explorer__field-list {
padding: 4px 8px 8px 36px;
}
.mapping-explorer__field-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 6px 10px;
margin: 2px 0;
border-radius: 4px;
cursor: pointer;
transition: background 0.15s;
}
.mapping-explorer__field-item:hover {
background: #f6f6f6;
}
.mapping-explorer__field-item--selected {
background: rgba(10, 61, 250, 0.12); /* NDE blue tint */
}
.mapping-explorer__field-path {
font-size: 12px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: #757575;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mapping-explorer__schema-warning {
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
border-radius: 999px;
border: 1px solid rgba(250, 82, 0, 0.45);
background: rgba(250, 82, 0, 0.12);
color: #fa5200;
font-size: 12px;
font-weight: 700;
line-height: 1;
}
.mapping-explorer__schema-warning-text {
margin-left: 8px;
font-size: 12px;
color: #fa5200;
font-weight: 600;
}
/* ============================================================================
* CENTER PANEL: MAPPING ARROWS
* ============================================================================ */
.mapping-explorer__arrows {
flex: 1;
overflow-y: auto;
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
background: #f6f6f6;
}
.mapping-explorer__arrow {
display: grid;
grid-template-columns: 1fr auto 1fr;
align-items: center;
gap: 12px;
padding: 12px;
background: #ffffff;
border-radius: 6px;
border: 1px solid #e0e0e0;
transition: all 0.2s;
}
.mapping-explorer__arrow:hover {
border-color: #0a3dfa;
box-shadow: 0 2px 8px rgba(10, 61, 250, 0.1);
}
.mapping-explorer__arrow--highlighted {
background: rgba(10, 61, 250, 0.08);
border-color: #0a3dfa;
}
.mapping-explorer__arrow-source,
.mapping-explorer__arrow-target {
overflow: hidden;
}
.mapping-explorer__arrow-source code,
.mapping-explorer__arrow-target code {
font-size: 11px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: #757575;
background: #f6f6f6;
padding: 4px 8px;
border-radius: 4px;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mapping-explorer__arrow-target code {
color: #0a3dfa; /* NDE primary blue */
}
.mapping-explorer__arrow-line {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
min-width: 100px;
}
.mapping-explorer__arrow-svg {
width: 80px;
height: 20px;
color: #0a3dfa; /* NDE primary blue */
}
/* ============================================================================
* TRANSFORMATION BADGES
* ============================================================================ */
.mapping-explorer__transform-badge {
display: inline-flex;
align-items: center;
padding: 2px 8px;
font-size: 10px;
font-weight: 600;
border-radius: 4px;
border: 1px solid;
text-transform: uppercase;
letter-spacing: 0.03em;
white-space: nowrap;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
/* ============================================================================
* RIGHT PANEL: TARGET DETAILS
* ============================================================================ */
.mapping-explorer__panel--target {
overflow-y: auto;
}
.mapping-explorer__details {
padding: 16px;
}
.mapping-explorer__details-title {
font-size: 14px;
font-weight: 600;
color: #172a59;
margin: 0 0 16px;
padding-bottom: 8px;
border-bottom: 1px solid #e0e0e0;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
.mapping-explorer__details-section {
margin-bottom: 20px;
}
.mapping-explorer__details-section h5 {
display: flex;
align-items: center;
gap: 8px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
color: #757575;
margin: 0 0 10px;
letter-spacing: 0.05em;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
.mapping-explorer__section-icon {
color: #0a3dfa; /* NDE primary blue */
}
.mapping-explorer__details-row {
display: flex;
align-items: flex-start;
gap: 8px;
margin-bottom: 8px;
flex-wrap: wrap;
min-width: 0; /* Allow flex children to shrink below content size */
}
.mapping-explorer__details-label {
font-size: 12px;
color: #757575;
min-width: 80px;
flex-shrink: 0;
}
.mapping-explorer__details-value {
font-size: 12px;
color: #172a59;
flex: 1;
min-width: 0; /* Allow text to truncate */
overflow: hidden;
text-overflow: ellipsis;
}
.mapping-explorer__details-value code,
code.mapping-explorer__details-value {
font-family: 'JetBrains Mono', 'Fira Code', monospace;
background: #f6f6f6;
padding: 2px 6px;
border-radius: 3px;
font-size: 11px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: block;
max-width: 100%;
}
.mapping-explorer__details-value--class {
color: #7b1fa2; /* Purple for classes */
}
.mapping-explorer__details-value--entity {
color: #2e7d32; /* Green for entities */
}
.mapping-explorer__details-value--required {
color: #d32f2f; /* Red for required */
font-weight: 600;
}
.mapping-explorer__copy-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 4px 6px;
min-width: 0;
height: 26px;
background: #f6f6f6;
border: 1px solid #e0e0e0;
border-radius: 4px;
color: #757575;
cursor: pointer;
transition: all 0.15s;
flex-shrink: 0;
font-size: 11px;
font-family: inherit;
white-space: nowrap;
}
.mapping-explorer__copy-btn:hover {
background: #0a3dfa;
border-color: #0a3dfa;
color: white;
}
.mapping-explorer__copy-btn-label {
font-weight: 500;
}
/* ============================================================================
* EXAMPLE SECTION
* ============================================================================ */
.mapping-explorer__example {
background: #f6f6f6;
border-radius: 6px;
padding: 12px;
border: 1px solid #e0e0e0;
}
.mapping-explorer__example-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 4px;
}
.mapping-explorer__example-label {
font-size: 11px;
color: #757575;
min-width: 50px;
}
.mapping-explorer__example-row code {
font-size: 11px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: #fa5200; /* NDE orange accent */
}
.mapping-explorer__example-arrow {
text-align: center;
color: #0a3dfa; /* NDE primary blue */
font-size: 16px;
padding: 4px 0;
}
.mapping-explorer__example-rdf {
margin-top: 8px;
padding-top: 8px;
border-top: 1px solid #e0e0e0;
}
.mapping-explorer__example-rdf code {
display: block;
font-size: 10px;
color: #757575;
word-break: break-all;
}
/* ============================================================================
* SOURCE INFO (when source selected but no field)
* ============================================================================ */
.mapping-explorer__source-info {
padding: 16px;
}
.mapping-explorer__source-info h4 {
font-size: 16px;
font-weight: 600;
color: #0a3dfa; /* NDE primary blue */
margin: 0 0 8px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
}
.mapping-explorer__source-desc {
font-size: 13px;
color: #172a59;
margin: 0 0 8px;
line-height: 1.5;
}
.mapping-explorer__source-detail {
font-size: 12px;
color: #757575;
margin: 0 0 16px;
line-height: 1.6;
white-space: pre-wrap;
}
.mapping-explorer__source-meta {
background: #f6f6f6;
border-radius: 6px;
padding: 12px;
margin-bottom: 16px;
border: 1px solid #e0e0e0;
}
.mapping-explorer__meta-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
.mapping-explorer__meta-row:last-child {
margin-bottom: 0;
}
.mapping-explorer__meta-label {
font-size: 11px;
color: #757575;
min-width: 100px;
}
.mapping-explorer__meta-row code {
font-size: 12px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: #172a59;
}
.mapping-explorer__tier {
font-size: 11px;
padding: 2px 8px;
border-radius: 4px;
font-weight: 500;
}
.mapping-explorer__tier--tier-1-authoritative {
background: #e8f5e9;
color: #2e7d32;
}
.mapping-explorer__tier--tier-2-verified {
background: #e3f2fd;
color: #1565c0;
}
.mapping-explorer__tier--tier-3-crowd-sourced {
background: #fff3e0;
color: #e65100;
}
.mapping-explorer__tier--tier-4-inferred {
background: #f3e5f5;
color: #7b1fa2;
}
/* ============================================================================
* YAML EXAMPLE
* ============================================================================ */
.mapping-explorer__yaml-example {
margin-top: 16px;
}
.mapping-explorer__yaml-example h5 {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
color: #757575;
margin: 0 0 8px;
letter-spacing: 0.05em;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
}
.mapping-explorer__yaml-example pre {
background: #f6f6f6;
border-radius: 6px;
padding: 12px;
margin: 0;
overflow-x: auto;
border: 1px solid #e0e0e0;
}
.mapping-explorer__yaml-example code {
font-size: 11px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: #0a3dfa; /* NDE primary blue */
line-height: 1.5;
}
/* ============================================================================
* EMPTY STATE
* ============================================================================ */
.mapping-explorer__empty {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
min-height: 200px;
color: #757575;
font-size: 13px;
text-align: center;
padding: 20px;
}
/* ============================================================================
* SCROLLBAR STYLING (NDE themed)
* ============================================================================ */
.mapping-explorer ::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.mapping-explorer ::-webkit-scrollbar-track {
background: #f6f6f6;
}
.mapping-explorer ::-webkit-scrollbar-thumb {
background: rgba(10, 61, 250, 0.3); /* Semi-transparent NDE blue */
border-radius: 4px;
}
.mapping-explorer ::-webkit-scrollbar-thumb:hover {
background: #0a3dfa; /* NDE primary blue */
}
/* ============================================================================
* STATUS BADGES
* Visual indicators for mapping status (mapped, partial, out_of_scope, future)
* ============================================================================ */
.mapping-explorer__status-badge {
display: inline-flex;
align-items: center;
padding: 2px 6px;
font-size: 9px;
font-weight: 600;
border-radius: 3px;
border: 1px solid;
text-transform: uppercase;
letter-spacing: 0.03em;
white-space: nowrap;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
margin-left: 4px;
}
/* Mapped status - Green (verified/complete) */
.mapping-explorer__status-badge--mapped {
background-color: #dcfce7;
color: #166534;
border-color: #86efac;
}
/* Partial status - Amber/Yellow (incomplete mapping) */
.mapping-explorer__status-badge--partial {
background-color: #fef3c7;
color: #92400e;
border-color: #fcd34d;
}
/* Out of scope status - Gray (intentionally not mapped) */
.mapping-explorer__status-badge--out-of-scope {
background-color: #f1f5f9;
color: #475569;
border-color: #cbd5e1;
}
/* Future status - Blue (planned for future implementation) */
.mapping-explorer__status-badge--future {
background-color: #dbeafe;
color: #1e40af;
border-color: #93c5fd;
}
/* Status badge in field item - adjust spacing */
.mapping-explorer__field-item .mapping-explorer__status-badge {
margin-left: auto;
margin-right: 4px;
}
/* Status in details panel */
.mapping-explorer__details-status {
display: flex;
align-items: center;
gap: 8px;
}
.mapping-explorer__details-status .mapping-explorer__status-badge {
margin-left: 0;
font-size: 10px;
padding: 3px 8px;
}
/* Status filter dropdown */
.mapping-explorer__status-select {
padding: 6px 10px;
border: 1px solid #0a3dfa;
border-radius: 4px;
background-color: white;
color: #333;
font-size: 13px;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
min-width: 130px;
}
.mapping-explorer__status-select:hover {
border-color: #0830c0;
}
.mapping-explorer__status-select:focus {
outline: none;
border-color: #0a3dfa;
box-shadow: 0 0 0 2px rgba(10, 61, 250, 0.15);
}
/* Transformation filter dropdown */
.mapping-explorer__transformation-select {
padding: 6px 10px;
border: 1px solid #0a3dfa;
border-radius: 4px;
background-color: white;
color: #333;
font-size: 13px;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
min-width: 130px;
}
.mapping-explorer__transformation-select:hover {
border-color: #0830c0;
}
.mapping-explorer__transformation-select:focus {
outline: none;
border-color: #0a3dfa;
box-shadow: 0 0 0 2px rgba(10, 61, 250, 0.15);
}
/* Clear filters button */
.mapping-explorer__clear-filters-btn {
display: flex;
align-items: center;
gap: 4px;
padding: 6px 12px;
border: 1px solid #ef4444;
border-radius: 4px;
background-color: #fef2f2;
color: #dc2626;
font-size: 13px;
font-family: 'Poppins', Helvetica, Arial, sans-serif;
cursor: pointer;
transition: all 0.15s ease;
}
.mapping-explorer__clear-filters-btn:hover {
background-color: #fee2e2;
border-color: #dc2626;
}
.mapping-explorer__clear-filters-btn:active {
background-color: #fecaca;
}