## Tables and Data-Dense Views * Use tables only for genuinely tabular data. * Keep column names concise. * Align numeric data consistently. * Make sorting and filtering discoverable. * Preserve filter and sort state where useful. * Do not overload tables with too many actions. * Prefer a clear primary row action and secondary contextual actions. * Keep important columns visible. * Allow horizontal scrolling only when necessary. * Use pagination, virtualization or incremental loading for large data sets. * Provide clear empty states. * Avoid showing unnecessary columns by default. * Use sensible formatting for dates, numbers and units. ## Search and Filtering * Search should behave predictably. * Make active filters visible. * Make filters easy to remove. * Provide a clear way to reset filters. * Preserve search and filter state when navigating back where practical. * Avoid requiring users to configure many filters before seeing results. * Use sensible defaults. * Clearly distinguish no results from loading or errors. * Suggest recovery options when no results are found. ## Dialogs and Modals * Use dialogs only when interruption is justified. * Avoid stacking dialogs. * Keep dialogs focused on one decision or task. * Use clear titles. * Keep primary and secondary actions obvious. * Make cancellation easy. * Support Escape where appropriate. * Do not use dialogs for information that belongs inline. * Avoid large workflows inside modal dialogs. * Do not close dialogs unexpectedly while users are entering data.