// ============================================================================= // Shared Data Page Toolbar // Used by data-browsing pages (events, logs) for filter/action bars. // Usage: @use 'data-toolbar' as *; // ============================================================================= // Pins a page header bar to the top of the shell scroll container @mixin sticky-page-header { position: sticky; top: calc(-1 * var(--content-padding, var(--space-6))); z-index: var(--z-sticky); background: var(--surface-overlay); backdrop-filter: blur(20px) saturate(1.4); -webkit-backdrop-filter: blur(20px) saturate(1.4); padding-top: var(--content-padding, var(--space-6)); padding-bottom: var(--space-3); padding-left: var(--content-padding, var(--space-6)); padding-right: var(--content-padding, var(--space-6)); margin-top: calc(-1 * var(--content-padding, var(--space-6))); margin-left: calc(-1 * var(--content-padding, var(--space-6))); margin-right: calc(-1 * var(--content-padding, var(--space-6))); box-shadow: 0 10px 18px -14px rgba(0, 0, 0, 0.35); } @mixin data-toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); flex-wrap: wrap; &__filters { display: flex; align-items: flex-end; gap: var(--space-3); flex: 1; min-width: 0; flex-wrap: wrap; app-select { width: 180px; flex-shrink: 0; } } &__actions { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; } @media (max-width: 1024px) { &__filters { app-select { width: 150px; flex-shrink: 1; } } } @media (max-width: 768px) { flex-direction: column; align-items: stretch; &__filters { app-select { width: 100%; flex-shrink: 1; } app-input { width: 100%; min-width: 0; } } &__actions { justify-content: flex-end; } } }