// Data-display component styles — data tables, detail rows, list items, // charts, flow nodes, metadata, seed status, search results. // Uses MD3 CSS custom properties from var(--mat-sys-*) // ─── Data Table ───────────────────────────────────────────────────────────── .data-table { width: 100%; border-collapse: collapse; background: var(--mat-sys-surface); &__header { background: var(--mat-sys-surface-container); } &__header-cell { padding: 10px 16px; font-size: 12px; font-weight: 600; color: var(--mat-sys-on-surface-variant); border-bottom: 2px solid var(--mat-sys-outline-variant); text-align: left; &--sortable { cursor: pointer; user-select: none; } } &__row { &:hover { background: color-mix(in srgb, var(--mat-sys-primary) 5%, transparent); } &--clickable { cursor: pointer; } &--selected { background: color-mix(in srgb, var(--mat-sys-primary) 8%, transparent); } } &__cell { padding: 10px 16px; font-size: 14px; color: var(--mat-sys-on-surface); border-bottom: 1px solid var(--mat-sys-outline-variant); text-align: left; } &__empty-cell { padding: 32px 16px; font-size: 14px; color: var(--mat-sys-on-surface-variant); text-align: center; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__wrapper { width: 100%; overflow-x: auto; border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; } } // ─── Detail Row ────────────────────────────────────────────────────────────── .detail-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--mat-sys-outline-variant); &:last-child { border-bottom: none; } &__left { display: flex; align-items: center; gap: 8px; } &__icon { color: var(--mat-sys-on-surface-variant); display: flex; align-items: center; } &__label { font-size: 14px; font-weight: 500; color: var(--mat-sys-on-surface); } &__value { font-size: 13px; color: var(--mat-sys-on-surface-variant); } } // ─── List Item ─────────────────────────────────────────────────────────────── .list-item { display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 6px; transition: background 0.15s ease; &--interactive { cursor: pointer; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); } } &--active { background: color-mix(in srgb, var(--mat-sys-primary) 10%, transparent); } &__icon { flex-shrink: 0; color: var(--mat-sys-on-surface-variant); display: flex; align-items: center; } &__content { flex: 1; min-width: 0; font-size: 14px; color: var(--mat-sys-on-surface); } &__end { flex-shrink: 0; } } // ─── List Header ───────────────────────────────────────────────────────────── .list-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; background: var(--mat-sys-surface-container); border-bottom: 1px solid var(--mat-sys-outline-variant); &__left { display: flex; flex-direction: column; gap: 4px; } &__title { margin: 0; font-size: 16px; font-weight: 600; color: var(--mat-sys-on-surface); } &__subtitle { margin: 0; font-size: 13px; color: var(--mat-sys-on-surface-variant); &--hidden { display: none; } } &__badge { &--hidden { display: none; } } } // ─── Search Result Item ─────────────────────────────────────────────────────── .search-result-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); cursor: pointer; transition: background 0.15s ease; &:last-child { border-bottom: none; } &:hover { background: color-mix(in srgb, var(--mat-sys-primary) 5%, transparent); } &__icon { flex-shrink: 0; color: var(--mat-sys-on-surface-variant); display: flex; align-items: center; padding-top: 2px; } &__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } &__title { font-size: 14px; font-weight: 500; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__meta { font-size: 12px; color: var(--mat-sys-on-surface-variant); } } // ─── Metadata Viewer ───────────────────────────────────────────────────────── .metadata-viewer { display: flex; flex-direction: column; gap: 8px; padding: 12px; background: var(--mat-sys-surface-container); border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; &__title { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0 0 4px; } &__row { display: flex; align-items: baseline; gap: 8px; font-size: 13px; } &__key { flex-shrink: 0; font-weight: 500; color: var(--mat-sys-on-surface-variant); min-width: 120px; } &__value { color: var(--mat-sys-on-surface); word-break: break-all; font-family: monospace; font-size: 12px; } } // ─── Flow Node Item ────────────────────────────────────────────────────────── .flow-node { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--mat-sys-surface-container); border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease; &:hover { background: color-mix(in srgb, var(--mat-sys-primary) 5%, transparent); border-color: var(--mat-sys-primary); } &--selected { border-color: var(--mat-sys-primary); background: color-mix(in srgb, var(--mat-sys-primary) 8%, transparent); } &__icon { flex-shrink: 0; color: var(--mat-sys-primary); display: flex; align-items: center; } &__label { flex: 1; min-width: 0; font-size: 13px; font-weight: 500; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__badge { flex-shrink: 0; } } // ─── Workflow Node Details ──────────────────────────────────────────────────── .workflow-node-details { display: flex; flex-direction: column; gap: 12px; padding: 16px; &__header { display: flex; align-items: center; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__icon { color: var(--mat-sys-primary); display: flex; align-items: center; } &__title { margin: 0; font-size: 15px; font-weight: 600; color: var(--mat-sys-on-surface); } &__subtitle { margin: 2px 0 0; font-size: 12px; color: var(--mat-sys-on-surface-variant); } &__section { display: flex; flex-direction: column; gap: 8px; } &__section-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mat-sys-on-surface-variant); margin: 0; } } // ─── Seed Data Status ───────────────────────────────────────────────────────── .seed-data-status { &__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; @media (min-width: 768px) { grid-template-columns: repeat(3, 1fr); } } &__item { display: flex; align-items: center; justify-content: space-between; padding: 12px; background: color-mix(in srgb, var(--mat-sys-on-surface) 6%, transparent); border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; } &__label { font-size: 14px; font-weight: 500; color: var(--mat-sys-on-surface); } &__badge { margin-left: 8px; } &__title { display: flex; align-items: center; gap: 8px; font-size: 18px; } } // ─── Chart Container ────────────────────────────────────────────────────────── .chart-container { width: 100%; height: 300px; &--bar { // bar-chart-specific overrides if needed } &--line { // line-chart-specific overrides if needed } &__placeholder { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; background: color-mix(in srgb, var(--mat-sys-on-surface) 6%, transparent); border-radius: 6px; color: var(--mat-sys-on-surface-variant); font-size: 14px; } }