// Feature page components — BEM classes for JSON-driven UI definitions // Uses MD3 CSS custom properties from var(--mat-sys-*) // ─── File Explorer ────────────────────────────────────────────────────────── .file-explorer { height: 100%; display: flex; flex-direction: column; background: var(--mat-sys-surface-container); border-right: 1px solid var(--mat-sys-outline-variant); &__header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; padding: 12px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__title { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--mat-sys-on-surface); } &__body { flex: 1; overflow-y: auto; } &__item { display: flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 13px; color: var(--mat-sys-on-surface); cursor: pointer; border-radius: 4px; transition: background 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); } &--active { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); color: var(--mat-sys-primary); font-weight: 500; } } } // ─── Tree Panel ───────────────────────────────────────────────────────────── .tree-panel { width: 320px; flex-shrink: 0; display: flex; flex-direction: column; gap: 16px; padding: 16px; background: var(--mat-sys-surface-container); border-right: 1px solid var(--mat-sys-outline-variant); &__header { display: flex; flex-direction: column; gap: 12px; } &__header-row { display: flex; align-items: center; justify-content: space-between; } &__title-row { display: flex; align-items: center; gap: 8px; } &__title { font-size: 18px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__actions { display: flex; gap: 8px; } &__body { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; } &__node { background: var(--mat-sys-surface); border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; padding: 16px; cursor: pointer; transition: background 150ms ease, box-shadow 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 4%, var(--mat-sys-surface)); } &--selected { border-color: var(--mat-sys-primary); box-shadow: 0 0 0 2px var(--mat-sys-primary); background: color-mix(in srgb, var(--mat-sys-primary) 8%, var(--mat-sys-surface)); } } &__node-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 12px; } &__node-info { flex: 1; min-width: 0; } &__node-name { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; } &__node-desc { font-size: 12px; color: var(--mat-sys-on-surface-variant); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin: 2px 0 0; } &__node-badge { margin-top: 8px; } &__node-actions { display: flex; gap: 4px; } } // ─── Tree Card ────────────────────────────────────────────────────────────── .tree-card { cursor: pointer; transition: background 150ms ease, box-shadow 150ms ease; padding: 16px; border-radius: 8px; background: var(--mat-sys-surface); border: 1px solid var(--mat-sys-outline-variant); &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 4%, var(--mat-sys-surface)); } &--selected { border-color: var(--mat-sys-primary); box-shadow: 0 0 0 2px var(--mat-sys-primary); background: color-mix(in srgb, var(--mat-sys-primary) 8%, var(--mat-sys-surface)); } &__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; } &__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } &__name { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; } &__description { font-size: 12px; color: var(--mat-sys-on-surface-variant); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } } // ─── Navigation Menu ──────────────────────────────────────────────────────── .nav-menu { &__header { padding: 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__title { font-size: 18px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__controls { display: flex; gap: 8px; margin-top: 16px; } &__body { padding: 0 16px; } &__groups { display: flex; flex-direction: column; gap: 8px; padding: 16px 0; } &__group { display: flex; flex-direction: column; } &__group-trigger { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: none; cursor: pointer; padding: 4px 0; color: var(--mat-sys-on-surface-variant); &:hover { color: var(--mat-sys-on-surface); } } &__group-caret { transition: transform 200ms ease; flex-shrink: 0; &--open { transform: rotate(180deg); } } &__group-label { flex: 1; text-align: left; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mat-sys-on-surface-variant); } &__group-count { font-size: 11px; color: var(--mat-sys-on-surface-variant); } &__group-items { margin-top: 4px; padding-left: 8px; display: flex; flex-direction: column; gap: 2px; } &__item { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: none; cursor: pointer; padding: 6px 8px; border-radius: 6px; font-size: 13px; font-weight: 500; color: var(--mat-sys-on-surface); transition: background 150ms ease; text-align: left; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); } &--active { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); color: var(--mat-sys-primary); } } &__item-icon { flex-shrink: 0; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } &__item-label { flex: 1; } } // ─── Storybook Designer ───────────────────────────────────────────────────── .storybook-designer { height: 100%; display: flex; &__list-panel { width: 320px; flex-shrink: 0; background: var(--mat-sys-surface-container); border-right: 1px solid var(--mat-sys-outline-variant); display: flex; flex-direction: column; } &__list-header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__list-title { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__list-actions { display: flex; gap: 4px; } &__list-body { flex: 1; overflow-y: auto; } &__category-group { margin-bottom: 16px; } &__category-label { padding: 8px 16px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mat-sys-on-surface-variant); } &__category-items { padding: 0 8px; display: flex; flex-direction: column; gap: 2px; } &__story-item { display: flex; align-items: center; padding: 6px 8px; border-radius: 6px; cursor: pointer; transition: background 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); } &--selected { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); } } &__story-info { flex: 1; min-width: 0; } &__story-component { font-size: 13px; font-weight: 500; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__story-name { font-size: 12px; color: var(--mat-sys-on-surface-variant); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__editor-panel { flex: 1; padding: 24px; overflow-y: auto; background: var(--mat-sys-surface); } &__editor-content { display: flex; flex-direction: column; gap: 24px; } &__editor-header { display: flex; align-items: center; justify-content: space-between; } &__editor-title { font-size: 22px; font-weight: 700; color: var(--mat-sys-on-surface); margin: 0; } &__fields-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } &__field { display: flex; flex-direction: column; gap: 8px; } &__args-row { display: flex; gap: 8px; } &__args-list { display: flex; flex-direction: column; gap: 8px; } &__arg-row { display: flex; align-items: flex-start; gap: 12px; } &__arg-details { flex: 1; display: flex; flex-direction: column; gap: 8px; } &__arg-label-row { display: flex; align-items: center; gap: 8px; } &__empty-state { height: 100%; display: flex; align-items: center; justify-content: center; } &__empty-state-content { text-align: center; } &__empty-state-title { font-size: 18px; font-weight: 500; color: var(--mat-sys-on-surface); margin: 0 0 8px; } &__empty-state-subtitle { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0 0 16px; } } // ─── Schema Viewer ────────────────────────────────────────────────────────── .schema-viewer { height: 100%; display: flex; flex-direction: column; background: var(--mat-sys-surface-container); &__header { flex-shrink: 0; padding: 12px 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__tabs { flex: 1; display: flex; flex-direction: column; overflow: hidden; } &__code { padding: 16px; font-size: 12px; font-family: monospace; color: var(--mat-sys-on-surface); } &__preview { padding: 16px; color: var(--mat-sys-on-surface-variant); font-size: 13px; } } // ─── Feature Toggle ───────────────────────────────────────────────────────── .feature-toggle { height: 100%; padding: 24px; background: var(--mat-sys-surface); &__header { margin-bottom: 24px; } &__title { font-size: 22px; font-weight: 700; color: var(--mat-sys-on-surface); margin: 0 0 8px; } &__description { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } &__grid { display: grid; grid-template-columns: 1fr; gap: 16px; @media (min-width: 1024px) { grid-template-columns: 1fr 1fr; } } &__item { background: var(--mat-sys-surface-container); border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; padding: 16px; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } &__item-info { flex: 1; } &__item-name { font-size: 14px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0 0 4px; } &__item-desc { font-size: 12px; color: var(--mat-sys-on-surface-variant); margin: 0; } } // ─── Seed Manager ─────────────────────────────────────────────────────────── .seed-manager { $gutter: 28px; &__card { max-width: 600px; } &__header { padding: $gutter $gutter 20px; display: flex; flex-direction: column; gap: 6px; border-bottom: 1px solid var(--mat-sys-outline-variant); } &__title-row { display: flex; align-items: center; gap: 12px; } &__title-icon { color: var(--mat-sys-primary); flex-shrink: 0; } // Override CardContent's default 16px padding so everything aligns to $gutter &__content { padding: $gutter !important; display: flex; flex-direction: column; gap: $gutter; } &__actions { display: flex; flex-direction: column; gap: 20px; } &__buttons-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; } &__helper-text { font-size: 13px; color: var(--mat-sys-on-surface-variant); display: flex; flex-direction: column; gap: 8px; padding: 16px; background: var(--mat-sys-surface-container-low); border-radius: 8px; border: 1px solid var(--mat-sys-outline-variant); p { margin: 0; line-height: 1.6; } strong { color: var(--mat-sys-on-surface); } } } // ─── Storage Settings ─────────────────────────────────────────────────────── .storage-settings { display: flex; flex-direction: column; gap: 24px; &__backend-row { display: flex; align-items: center; gap: 8px; } &__backend-label { font-size: 13px; color: var(--mat-sys-on-surface-variant); } &__options { display: grid; gap: 16px; } &__flask-section { display: flex; flex-direction: column; gap: 8px; } &__flask-row { display: flex; gap: 8px; } &__other-backends { display: flex; gap: 8px; } &__export-row { display: flex; gap: 8px; } } // ─── Feature Cloud ────────────────────────────────────────────────────────── .feature-cloud { padding: 16px; &__title { font-size: 18px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0 0 8px; } &__empty { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } &__items { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } &__tag { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: 16px; font-size: 13px; background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); color: var(--mat-sys-primary); cursor: pointer; transition: background 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-primary) 20%, transparent); } } } // ─── Documentation View ───────────────────────────────────────────────────── .doc-view { height: 100%; display: flex; flex-direction: column; background: var(--mat-sys-surface); &__tabs { flex: 1; display: flex; flex-direction: column; } &__header { flex-shrink: 0; background: var(--mat-sys-surface-container); border-bottom: 1px solid var(--mat-sys-outline-variant); padding: 12px 24px; display: flex; flex-direction: column; gap: 12px; } &__tabs-list { display: flex; flex-direction: row; gap: 4px; overflow-x: auto; } &__search-wrapper { position: relative; } &__search-icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--mat-sys-on-surface-variant); pointer-events: none; } &__search-input { padding-left: 40px; width: 100%; } &__body { flex: 1; overflow-y: auto; } &__content { max-width: 900px; margin: 0 auto; padding: 32px; } &__content-title { font-size: 1.5rem; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0 0 24px; } &__sections { display: flex; flex-direction: column; gap: 16px; } &__para { font-size: 0.9375rem; line-height: 1.7; color: var(--mat-sys-on-surface-variant); margin: 0; } } // ─── Atomic Library Showcase ──────────────────────────────────────────────── .atomic-showcase { max-width: 1280px; margin: 0 auto; padding: 32px 16px; &__sections { display: flex; flex-direction: column; gap: 48px; } } // ─── JSON Component Tree Manager ──────────────────────────────────────────── .tree-manager { height: 100%; width: 100%; } // ─── Playwright Designer ──────────────────────────────────────────────────── .playwright-designer { &__editor { flex: 1; padding: 24px; overflow: auto; background: var(--mat-sys-surface); } &__btn-label { display: inline-flex; align-items: center; gap: 8px; } } // ─── Playwright Editor Content ─────────────────────────────────────────────── .playwright-editor { &__content { display: flex; flex-direction: column; gap: 16px; } &__header { display: flex; align-items: center; justify-content: space-between; } &__title { font-size: 20px; font-weight: 700; color: var(--mat-sys-on-surface); margin: 0; } &__fields { display: flex; flex-direction: column; gap: 12px; padding: 8px 0; } &__steps-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; } &__scroll-area { height: 400px; overflow-y: auto; } &__steps-list { display: flex; flex-direction: column; gap: 12px; padding: 4px 0; } &__no-steps { text-align: center; padding: 48px 0; font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } &__label { font-size: 12px; font-weight: 500; color: var(--mat-sys-on-surface-variant); display: block; margin-bottom: 4px; } } // ─── Step Editor ───────────────────────────────────────────────────────────── .step-editor { &__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; } &__index-label { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); } &__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } &__field { display: flex; flex-direction: column; gap: 6px; &--full { grid-column: span 2; } } &__field-label { font-size: 12px; font-weight: 500; color: var(--mat-sys-on-surface-variant); } &__select { width: 100%; padding: 8px 12px; border: 1px solid var(--mat-sys-outline-variant); border-radius: 4px; background: var(--mat-sys-surface); color: var(--mat-sys-on-surface); font-size: 14px; cursor: pointer; &:focus { outline: 2px solid var(--mat-sys-primary); outline-offset: -1px; } } } // ─── Test List ─────────────────────────────────────────────────────────────── .test-list { width: 320px; flex-shrink: 0; display: flex; flex-direction: column; border-right: 1px solid var(--mat-sys-outline-variant); background: var(--mat-sys-surface-container); &__header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); flex-shrink: 0; } &__title { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__actions { display: flex; gap: 4px; } &__scroll { flex: 1; overflow-y: auto; } &__items { padding: 8px; display: flex; flex-direction: column; gap: 2px; } &__item { display: flex; align-items: flex-start; justify-content: space-between; padding: 10px 12px; border-radius: 6px; cursor: pointer; transition: background 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); .test-list__item-delete { opacity: 1; } } &--selected { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); .test-list__item-name { color: var(--mat-sys-primary); } } } &__item-body { flex: 1; min-width: 0; } &__item-name { font-size: 13px; font-weight: 500; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__item-url { font-size: 12px; color: var(--mat-sys-on-surface-variant); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; } &__item-steps { font-size: 12px; color: var(--mat-sys-on-surface-variant); margin-top: 2px; } &__item-delete { opacity: 0; transition: opacity 150ms ease; flex-shrink: 0; } &__empty { padding: 32px 16px; text-align: center; font-size: 13px; color: var(--mat-sys-on-surface-variant); } } // ─── Project Settings ──────────────────────────────────────────────────────── .project-settings { height: 100%; display: flex; flex-direction: column; background: var(--mat-sys-surface); &__header { display: flex; align-items: center; gap: 16px; padding: 20px 24px; border-bottom: 1px solid var(--mat-sys-outline-variant); flex-shrink: 0; background: var(--mat-sys-surface-container); } &__icon { width: 40px; height: 40px; border-radius: 8px; background: linear-gradient(135deg, #3b82f6, #a855f7); display: flex; align-items: center; justify-content: center; color: #fff; flex-shrink: 0; } &__title { font-size: 17px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__subtitle { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 3px 0 0; } &__tabs { flex-shrink: 0; } &__content { flex: 1; min-height: 0; overflow-y: auto; } &__panel { padding: 24px; max-width: 800px; display: flex; flex-direction: column; gap: 24px; } } // ─── Settings Tab Shared Layout ─────────────────────────────────────────────── .settings-tab { display: flex; flex-direction: column; gap: 20px; &__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } &__title { font-size: 15px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0 0 3px; } &__description { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } &__list { display: flex; flex-direction: column; gap: 8px; } &__empty { padding: 24px; text-align: center; font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } // Script cards &__script-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } &__script-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } &__script-name { display: flex; align-items: center; gap: 6px; color: var(--mat-sys-on-surface-variant); code { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); } } &__script-value { font-size: 12px; color: var(--mat-sys-on-surface-variant); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } &__script-actions { display: flex; gap: 4px; flex-shrink: 0; } // Package manager select &__package-manager { display: flex; flex-direction: column; gap: 6px; } &__select { width: 200px; height: 36px; padding: 0 10px; border: 1px solid var(--mat-sys-outline); border-radius: 4px; background: var(--mat-sys-surface); color: var(--mat-sys-on-surface); font-size: 14px; &:focus { outline: none; border-color: var(--mat-sys-primary); } } &__sections { display: flex; flex-direction: column; gap: 24px; } } // ─── Package List Section ───────────────────────────────────────────────────── .pkg-section { display: flex; flex-direction: column; gap: 8px; &__title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mat-sys-on-surface-variant); margin: 0 0 6px; } &__list { display: flex; flex-direction: column; gap: 6px; } &__row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } &__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } &__name-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; color: var(--mat-sys-on-surface-variant); code { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); } } &__desc { font-size: 12px; color: var(--mat-sys-on-surface-variant); margin: 0; } &__actions { display: flex; gap: 4px; flex-shrink: 0; } &__empty { padding: 16px; text-align: center; font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0; } } // ─── Next.js Config Tab ─────────────────────────────────────────────────────── .nextjs-config-tab { display: flex; flex-direction: column; gap: 20px; } // ─── Card Form Fields (shared across settings cards) ───────────────────────── .ps-card-fields { display: flex; flex-direction: column; gap: 16px; } .ps-card-field { display: flex; flex-direction: column; gap: 6px; } .ps-helper-text { font-size: 12px; color: var(--mat-sys-on-surface-variant); margin: 2px 0 0; } // ─── Switch Rows (features card) ───────────────────────────────────────────── .ps-switch-list { display: flex; flex-direction: column; } .ps-switch-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--mat-sys-outline-variant); &:last-child { border-bottom: none; padding-bottom: 0; } } .ps-switch-info { flex: 1; } .ps-switch-desc { font-size: 12px; color: var(--mat-sys-on-surface-variant); margin: 3px 0 0; } // ─── Workspace Body ────────────────────────────────────────────────────────── // Shared layout root for full-height designer/workspace pages. // Used as the root class in JSON page definitions (playwright-designer, unit-test-designer, etc.) // Requires the parent .main to zero out its padding — handled via :has() in layout.module.scss .workspace__body { flex: 1; display: flex; overflow: hidden; } // ─── Unit Test Designer ─────────────────────────────────────────────────────── .unit-test-designer { display: flex; height: 100%; overflow: hidden; } .unit-test-list { width: 300px; flex-shrink: 0; display: flex; flex-direction: column; border-right: 1px solid var(--mat-sys-outline-variant); background: var(--mat-sys-surface-container); &__header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid var(--mat-sys-outline-variant); flex-shrink: 0; } &__title { font-size: 13px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__actions { display: flex; gap: 4px; } &__scroll { flex: 1; min-height: 0; } &__items { padding: 8px; display: flex; flex-direction: column; gap: 2px; } &__item { display: flex; align-items: flex-start; justify-content: space-between; padding: 10px 12px; border-radius: 6px; cursor: pointer; transition: background 150ms ease; &:hover { background: color-mix(in srgb, var(--mat-sys-on-surface) 8%, transparent); .unit-test-list__item-delete { opacity: 1; } } &--selected { background: color-mix(in srgb, var(--mat-sys-primary) 12%, transparent); .unit-test-list__item-name { color: var(--mat-sys-primary); } } } &__item-body { flex: 1; min-width: 0; } &__item-name-row { display: flex; align-items: center; gap: 6px; } &__item-indicator { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } &__item-name { font-size: 13px; font-weight: 500; color: var(--mat-sys-on-surface); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } &__item-file { font-size: 11px; color: var(--mat-sys-on-surface-variant); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 3px; padding-left: 14px; } &__item-count { font-size: 11px; color: var(--mat-sys-on-surface-variant); margin-top: 2px; padding-left: 14px; } &__item-delete { opacity: 0; transition: opacity 150ms ease; flex-shrink: 0; } &__empty { padding: 32px 16px; text-align: center; font-size: 13px; color: var(--mat-sys-on-surface-variant); } } .unit-test-editor { flex: 1; overflow-y: auto; padding: 24px; display: flex; flex-direction: column; min-height: 0; &__content { display: flex; flex-direction: column; gap: 24px; } &__empty { flex: 1; display: flex; align-items: center; justify-content: center; } &__empty-inner { text-align: center; color: var(--mat-sys-on-surface-variant); } &__empty-title { font-size: 16px; font-weight: 500; color: var(--mat-sys-on-surface); margin: 16px 0 8px; } &__empty-body { font-size: 13px; color: var(--mat-sys-on-surface-variant); margin: 0 0 20px; } } .test-suite-editor { &__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } &__title { font-size: 18px; font-weight: 600; color: var(--mat-sys-on-surface); margin: 0; } &__fields { display: flex; flex-direction: column; gap: 16px; } &__field { display: flex; flex-direction: column; gap: 6px; } &__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } &__select { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--mat-sys-outline); border-radius: 4px; background: var(--mat-sys-surface); color: var(--mat-sys-on-surface); font-size: 14px; &:focus { outline: none; border-color: var(--mat-sys-primary); } } } .test-cases-panel { &__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } &__scroll { height: 480px; overflow-y: auto; } &__items { display: flex; flex-direction: column; gap: 12px; padding: 4px 0; } &__empty { padding: 32px 16px; text-align: center; font-size: 13px; color: var(--mat-sys-on-surface-variant); } } .test-case-card { border: 1px solid var(--mat-sys-outline-variant); border-radius: 8px; overflow: hidden; &__header { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: var(--mat-sys-surface-container-low); border-bottom: 1px solid var(--mat-sys-outline-variant); } &__body { padding: 14px; display: flex; flex-direction: column; gap: 14px; } &__field { display: flex; flex-direction: column; gap: 6px; } &__assertions { display: flex; flex-direction: column; gap: 8px; } &__assertions-header { display: flex; align-items: center; justify-content: space-between; } &__assertion-list { display: flex; flex-direction: column; gap: 6px; } &__assertion-row { display: flex; align-items: center; gap: 6px; } }