/** * TableList Component Styles */ .table-list { display: flex; flex-direction: column; height: 100%; background-color: var(--bg-primary); overflow: hidden; } /* ── Empty state ─────────────────────────────────── */ .table-list-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; gap: var(--space-3); color: var(--text-muted); } .table-list-empty-icon { font-size: 40px; line-height: 1; } .table-list-empty p { margin: 0; font-size: var(--text-base); font-weight: 600; color: var(--text-secondary); } .table-list-empty span { font-size: var(--text-sm); } /* ── Header ──────────────────────────────────────── */ .table-list-header { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3) var(--space-4); background-color: var(--bg-tertiary); border-bottom: 1px solid var(--border); flex-shrink: 0; } .table-list-header-top { display: flex; align-items: center; justify-content: space-between; } .table-list-title { display: flex; align-items: baseline; gap: var(--space-3); } .table-list-conn-name { font-size: var(--text-sm); font-weight: 600; color: var(--text-primary); } .table-list-summary { font-size: var(--text-xs); color: var(--text-muted); } .table-list-search-row { display: flex; align-items: center; gap: var(--space-2); background-color: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 0 var(--space-2); transition: border-color var(--transition-fast) var(--ease-in-out); } .table-list-search-row:focus-within { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } .table-list-search-icon { font-size: 13px; color: var(--text-muted); flex-shrink: 0; } .table-list-search { flex: 1; height: 30px; background: transparent; border: none; outline: none; font-size: var(--text-sm); color: var(--text-primary); font-family: var(--font-sans); } .table-list-search::placeholder { color: var(--text-muted); } .table-list-search-clear { width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: var(--radius-sm); font-size: 14px; color: var(--text-muted); cursor: pointer; flex-shrink: 0; line-height: 1; } .table-list-search-clear:hover { background-color: var(--bg-primary); color: var(--text-primary); } /* ── Body ────────────────────────────────────────── */ .table-list-body { flex: 1; overflow-y: auto; padding: var(--space-2) 0; } .table-list-no-results { padding: var(--space-6) var(--space-4); text-align: center; font-size: var(--text-sm); color: var(--text-muted); } .table-list-search-info { padding: var(--space-2) var(--space-4); font-size: var(--text-xs); color: var(--text-muted); text-align: right; border-top: 1px solid var(--border); margin-top: var(--space-2); } /* ── Schema group ────────────────────────────────── */ .table-list-schema { margin-bottom: var(--space-1); } .table-list-schema-header { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4); cursor: pointer; user-select: none; background-color: var(--bg-secondary); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); } .table-list-schema-header:hover { background-color: var(--bg-tertiary); } .table-list-schema-toggle { display: inline-flex; align-items: center; justify-content: center; width: 14px; font-size: 10px; color: var(--text-secondary); transition: transform var(--transition-fast) var(--ease-in-out); flex-shrink: 0; } .table-list-schema-toggle.expanded { transform: rotate(90deg); } .table-list-schema-icon { font-size: var(--text-sm); flex-shrink: 0; } .table-list-schema-name { font-size: var(--text-sm); font-weight: 600; color: var(--text-primary); flex: 1; } .table-list-schema-count { padding: 1px 7px; font-size: 10px; font-weight: 600; color: var(--text-muted); background-color: var(--bg-primary); border: 1px solid var(--border); border-radius: 9px; line-height: 1.6; } /* ── Tables inside a schema ──────────────────────── */ .table-list-tables { display: flex; flex-direction: column; } .table-list-col-headers { display: flex; align-items: center; padding: var(--space-1) var(--space-4) var(--space-1) calc(var(--space-4) + 28px); background-color: var(--bg-primary); border-bottom: 1px solid var(--border); } .col-name { flex: 1; font-size: var(--text-xs); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; } .col-actions { font-size: var(--text-xs); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; width: 140px; text-align: right; } .table-list-row { display: flex; align-items: center; padding: var(--space-2) var(--space-4); gap: var(--space-2); border-bottom: 1px solid var(--border); transition: background-color var(--transition-fast) var(--ease-in-out); } .table-list-row:hover { background-color: var(--bg-secondary); } .table-list-row:hover .table-list-row-actions { opacity: 1; } .table-list-row-icon { font-size: 13px; flex-shrink: 0; } .table-list-row-name { flex: 1; font-size: var(--text-sm); color: var(--text-primary); font-family: var(--font-mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .table-list-row-actions { display: flex; gap: var(--space-1); opacity: 0; transition: opacity var(--transition-fast) var(--ease-in-out); flex-shrink: 0; } .tl-action-btn { display: flex; align-items: center; gap: 4px; padding: 3px 8px; font-size: var(--text-xs); font-family: var(--font-sans); color: var(--text-secondary); background: transparent; border: 1px solid var(--border); border-radius: var(--radius-sm); cursor: pointer; white-space: nowrap; transition: all var(--transition-fast) var(--ease-in-out); } .tl-action-btn:hover { color: var(--primary); border-color: var(--primary); background-color: rgba(59, 130, 246, 0.06); }