From f8a91dd6f05f3193f54e3861b7ed5105433b8fcc Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sun, 11 Oct 2026 16:12:59 +0300 Subject: [PATCH 1/3] refactor(ui): text styles from our own QueryaTextStyles, shadcn TextExtension hidden xSmall / small / base / large / medium / semiBold / bold / muted / foreground are a kit extension over DefaultTextStyle with the sizes the app already used. The widgets.dart barrel and every direct shadcn import hide shadcn's TextExtension, so call sites are unchanged. Refs #1465 --- lib/app/app.dart | 2 +- lib/core/editor/querya_code_editor.dart | 2 +- lib/core/layout/querya_split_handle.dart | 2 +- lib/core/layout/vertical_split_pane.dart | 2 +- lib/core/storage/app_settings.dart | 2 +- lib/core/theme/app_theme.dart | 2 +- .../parser/querya_theme_color_scheme.dart | 2 +- lib/core/theme/querya_color_scheme.dart | 2 +- lib/core/theme/querya_theme.dart | 2 +- lib/core/theme/theme_controller.dart | 2 +- lib/features/erd/erd_view.dart | 2 +- .../erd/widgets/erd_edge_tip_label.dart | 2 +- lib/features/erd/widgets/erd_group_frame.dart | 2 +- lib/features/erd/widgets/erd_note_card.dart | 2 +- .../erd/widgets/erd_search_panel.dart | 3 +- lib/features/erd/widgets/erd_table_card.dart | 2 +- lib/features/erd/widgets/erd_table_menu.dart | 2 +- .../main_screen/querya_window_title_bar.dart | 3 +- .../mongodb/mongo_document_tree_view.dart | 3 +- .../mongodb/mongo_documents_json_view.dart | 3 +- .../mongodb/mongo_documents_table_view.dart | 3 +- .../settings/preferences_controls.dart | 3 +- .../settings/theme_picker_button.dart | 2 +- .../updater/update_available_badge.dart | 3 +- .../updater/update_changelog_view.dart | 3 +- .../workspace/data_grid_calc_bar.dart | 2 +- .../workspace/data_grid_filter_bar.dart | 3 +- .../workspace/data_grid_value_panel.dart | 3 +- .../workspace/grid/grid_column_sizer.dart | 2 +- .../grid/grid_selection_manager.dart | 2 +- lib/features/workspace/grid_cell_editor.dart | 2 +- lib/features/workspace/query_editor_tab.dart | 2 +- lib/features/workspace/result_grid_view.dart | 2 +- lib/features/workspace/sql_editor_chrome.dart | 2 +- lib/shared/widgets/querya_text.dart | 76 +++++++++++++++++++ lib/shared/widgets/widgets.dart | 3 +- test/core/editor/querya_code_editor_test.dart | 2 +- test/core/storage/app_settings_test.dart | 2 +- .../querya_theme_color_scheme_test.dart | 2 +- .../querya_theme_merge_pipeline_test.dart | 2 +- .../theme_fixtures_integration_test.dart | 2 +- .../theme/parser/vscode_color_map_test.dart | 2 +- test/core/theme/querya_app_theme_test.dart | 2 +- test/core/theme/querya_light_theme_test.dart | 2 +- .../theme/querya_semantic_palette_test.dart | 2 +- test/core/theme/querya_theme_scope_test.dart | 2 +- test/core/theme/querya_theme_test.dart | 2 +- test/core/theme/theme_controller_test.dart | 2 +- test/core/unsaved_work_guard_test.dart | 2 +- .../e2e_redis_cli_terminal_test.dart | 2 +- .../helpers/e2e_command_palette_helper.dart | 2 +- .../command_palette_dialog_test.dart | 2 +- .../palette_keyboard_scroll_test.dart | 2 +- .../quick_switcher_dialog_test.dart | 2 +- ...onnection_dialog_focus_traversal_test.dart | 2 +- .../connection_form_sections_test.dart | 2 +- .../connection_tree_quick_search_test.dart | 2 +- .../connections_panel_layout_test.dart | 2 +- .../new_connection_url_dialog_test.dart | 2 +- .../sqlite_connection_form_test.dart | 2 +- .../extension_sql_workspace_test.dart | 2 +- .../menubar_dropdown_speed_test.dart | 2 +- .../querya_window_title_bar_test.dart | 2 +- .../main_screen/shell_chrome_golden_test.dart | 2 +- .../main_screen/sidebar_toggle_test.dart | 2 +- .../workspace_homes_and_preferences_test.dart | 2 +- .../mongo_aggregation_workspace_test.dart | 2 +- .../mongodb/mongo_database_dialog_test.dart | 2 +- .../mysql/mysql_sql_tx_guard_test.dart | 2 +- .../onboarding/welcome_tour_dialog_test.dart | 2 +- .../postgres_sql_tx_guard_test.dart | 2 +- .../postgres_table_toolbar_layout_test.dart | 2 +- .../postgresql_connection_form_test.dart | 2 +- .../redis/redis_cli_workspace_test.dart | 2 +- .../results/charts/quick_chart_view_test.dart | 2 +- .../settings/interface_scale_slider_test.dart | 2 +- .../preferences_checkbox_row_test.dart | 3 +- .../preferences_master_detail_test.dart | 2 +- .../sqlite/sqlite_sql_tx_guard_test.dart | 2 +- .../context_menu_mode_switch_test.dart | 2 +- .../data_grid_context_menu_test.dart | 2 +- .../destructive_query_dialog_test.dart | 2 +- .../workspace/dml_preview_dialog_test.dart | 2 +- .../workspace/grid_cell_editor_test.dart | 2 +- .../workspace/query_editor_tab_test.dart | 2 +- .../result_grid_lazy_context_menu_test.dart | 2 +- .../result_grid_sorting_model_test.dart | 2 +- .../workspace/sql_editor_chrome_test.dart | 2 +- ...ql_workspace_execute_dirty_guard_test.dart | 2 +- .../workspace/sql_workspace_toolbar_test.dart | 2 +- .../workspace/table_view_sorting_test.dart | 2 +- .../workspace/table_view_staging_test.dart | 2 +- test/shared/widgets/querya_text_test.dart | 71 +++++++++++++++++ test/support/querya_theme_test_shell.dart | 2 +- 94 files changed, 251 insertions(+), 92 deletions(-) create mode 100644 lib/shared/widgets/querya_text.dart create mode 100644 test/shared/widgets/querya_text_test.dart diff --git a/lib/app/app.dart b/lib/app/app.dart index 2e6b16c2..6b30d595 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/core/motion/querya_theme_motion.dart'; import 'package:querya_desktop/core/theme/animated_querya_theme.dart'; import 'package:querya_desktop/core/theme/theme_controller.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'app_lifecycle_cleanup.dart'; import '../features/main_screen/main_screen.dart'; diff --git a/lib/core/editor/querya_code_editor.dart b/lib/core/editor/querya_code_editor.dart index 5432ba28..fe811096 100644 --- a/lib/core/editor/querya_code_editor.dart +++ b/lib/core/editor/querya_code_editor.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/theme/querya_editor_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'querya_code_language.dart'; import 'querya_highlight_controller.dart'; diff --git a/lib/core/layout/querya_split_handle.dart b/lib/core/layout/querya_split_handle.dart index 6126f426..0e7be5c0 100644 --- a/lib/core/layout/querya_split_handle.dart +++ b/lib/core/layout/querya_split_handle.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter/services.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_context.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Accessible split-pane handle that supports mouse dragging and arrow keys. /// diff --git a/lib/core/layout/vertical_split_pane.dart b/lib/core/layout/vertical_split_pane.dart index ebc6e25d..fc969790 100644 --- a/lib/core/layout/vertical_split_pane.dart +++ b/lib/core/layout/vertical_split_pane.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/layout/querya_drag_settle.dart'; import 'package:querya_desktop/core/layout/querya_split_handle.dart'; import 'package:querya_desktop/core/motion/querya_spring.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Counts full rebuilds of [VerticalSplitPane]'s body (cache misses) — should /// only fire when the pane's height or its top/bottom/fraction/etc. inputs diff --git a/lib/core/storage/app_settings.dart b/lib/core/storage/app_settings.dart index 55673907..83e38f2a 100644 --- a/lib/core/storage/app_settings.dart +++ b/lib/core/storage/app_settings.dart @@ -1,7 +1,7 @@ import 'dart:convert'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../motion/querya_motion_scope.dart'; import '../theme/querya_theme_preset.dart'; diff --git a/lib/core/theme/app_theme.dart b/lib/core/theme/app_theme.dart index 51a9f060..3d8f3758 100644 --- a/lib/core/theme/app_theme.dart +++ b/lib/core/theme/app_theme.dart @@ -1,4 +1,4 @@ -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'querya_theme.dart'; diff --git a/lib/core/theme/parser/querya_theme_color_scheme.dart b/lib/core/theme/parser/querya_theme_color_scheme.dart index cb9f4636..fd962e31 100644 --- a/lib/core/theme/parser/querya_theme_color_scheme.dart +++ b/lib/core/theme/parser/querya_theme_color_scheme.dart @@ -1,7 +1,7 @@ // ignore_for_file: deprecated_member_use import 'package:flutter/foundation.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../querya_theme.dart'; import 'color_parser.dart'; diff --git a/lib/core/theme/querya_color_scheme.dart b/lib/core/theme/querya_color_scheme.dart index a15f18a9..177efc15 100644 --- a/lib/core/theme/querya_color_scheme.dart +++ b/lib/core/theme/querya_color_scheme.dart @@ -1,4 +1,4 @@ -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'querya_theme.dart'; diff --git a/lib/core/theme/querya_theme.dart b/lib/core/theme/querya_theme.dart index 312da035..3b3cc333 100644 --- a/lib/core/theme/querya_theme.dart +++ b/lib/core/theme/querya_theme.dart @@ -1,4 +1,4 @@ -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'color_contrast.dart'; import 'parser/vscode_theme_manifest.dart'; diff --git a/lib/core/theme/theme_controller.dart b/lib/core/theme/theme_controller.dart index 497e7b7d..5f11fcac 100644 --- a/lib/core/theme/theme_controller.dart +++ b/lib/core/theme/theme_controller.dart @@ -4,7 +4,7 @@ import 'dart:io'; import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/core/theme/querya_material_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'parser/apply_token_colors_to_editor.dart'; import 'parser/color_parser.dart'; diff --git a/lib/features/erd/erd_view.dart b/lib/features/erd/erd_view.dart index 71c1a119..760a294b 100644 --- a/lib/features/erd/erd_view.dart +++ b/lib/features/erd/erd_view.dart @@ -46,7 +46,7 @@ import 'package:querya_desktop/features/workspace/sql_editor_chrome.dart'; import 'package:querya_desktop/shared/widgets/querya_button.dart'; import 'package:querya_desktop/shared/widgets/querya_spinner.dart'; import 'package:querya_desktop/shared/widgets/querya_tab_strip.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; // Moved out of this file (#1362); re-exported for existing importers. export 'package:querya_desktop/features/erd/widgets/erd_relation_painter.dart' diff --git a/lib/features/erd/widgets/erd_edge_tip_label.dart b/lib/features/erd/widgets/erd_edge_tip_label.dart index d79dff2b..c0eaa35b 100644 --- a/lib/features/erd/widgets/erd_edge_tip_label.dart +++ b/lib/features/erd/widgets/erd_edge_tip_label.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/erd/erd_model.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// "orders.customer_id → customers.id" next to the pointer. class ErdEdgeTipLabel extends material.StatelessWidget { diff --git a/lib/features/erd/widgets/erd_group_frame.dart b/lib/features/erd/widgets/erd_group_frame.dart index 51903627..0eccb960 100644 --- a/lib/features/erd/widgets/erd_group_frame.dart +++ b/lib/features/erd/widgets/erd_group_frame.dart @@ -4,7 +4,7 @@ import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/erd/erd_layout.dart'; import 'package:querya_desktop/core/erd/erd_saved_layout.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// A group's frame on the canvas: a tinted box that takes no pointer, and its /// title, which drags the whole group and has the group's menu. diff --git a/lib/features/erd/widgets/erd_note_card.dart b/lib/features/erd/widgets/erd_note_card.dart index 958d9eb5..ebc9f87a 100644 --- a/lib/features/erd/widgets/erd_note_card.dart +++ b/lib/features/erd/widgets/erd_note_card.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/erd/erd_note_text.dart'; import 'package:querya_desktop/core/erd/erd_saved_layout.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// A sticky note on the canvas: draggable by its body, resizable by its /// corner, with an edit / colour / attach / delete menu (#1283). diff --git a/lib/features/erd/widgets/erd_search_panel.dart b/lib/features/erd/widgets/erd_search_panel.dart index aa93b5a4..ec8eb8dc 100644 --- a/lib/features/erd/widgets/erd_search_panel.dart +++ b/lib/features/erd/widgets/erd_search_panel.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/erd/erd_model.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/shared/widgets/querya_search_field.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Find-a-table field and the tables it matches. Enter picks the first. class ErdSearchPanel extends material.StatelessWidget { diff --git a/lib/features/erd/widgets/erd_table_card.dart b/lib/features/erd/widgets/erd_table_card.dart index 78ec05e2..a292d7a9 100644 --- a/lib/features/erd/widgets/erd_table_card.dart +++ b/lib/features/erd/widgets/erd_table_card.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/erd/erd_model.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/core/theme/querya_typography.dart'; import 'package:querya_desktop/core/erd/erd_layout.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// A card's share of the focus: highlighted, faded, and the column of a /// picked relation on it, if any. diff --git a/lib/features/erd/widgets/erd_table_menu.dart b/lib/features/erd/widgets/erd_table_menu.dart index 80944317..4802b980 100644 --- a/lib/features/erd/widgets/erd_table_menu.dart +++ b/lib/features/erd/widgets/erd_table_menu.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter/services.dart' show Clipboard, ClipboardData; import 'package:querya_desktop/core/erd/erd_saved_layout.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// The entries of a table card's context menu. abstract final class ErdTableMenu { diff --git a/lib/features/main_screen/querya_window_title_bar.dart b/lib/features/main_screen/querya_window_title_bar.dart index 81afe47d..5f53290f 100644 --- a/lib/features/main_screen/querya_window_title_bar.dart +++ b/lib/features/main_screen/querya_window_title_bar.dart @@ -17,7 +17,8 @@ import 'package:querya_desktop/features/updater/update_available_badge.dart'; import 'package:querya_desktop/features/updater/update_controller.dart'; import 'package:querya_desktop/features/updater/update_dialog.dart'; import 'package:querya_desktop/core/actions/sql_editor_actions.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Custom bitsdojo title bar styled from [QueryaThemeScope] workbench tokens. class QueryaWindowTitleBar extends StatelessWidget { diff --git a/lib/features/mongodb/mongo_document_tree_view.dart b/lib/features/mongodb/mongo_document_tree_view.dart index 20c1ef8a..f93f9eb5 100644 --- a/lib/features/mongodb/mongo_document_tree_view.dart +++ b/lib/features/mongodb/mongo_document_tree_view.dart @@ -6,10 +6,11 @@ import 'package:mongo_dart/mongo_dart.dart' show ObjectId; import 'package:querya_desktop/features/mongodb/mongo_ejson.dart'; import 'package:querya_desktop/features/mongodb/mongo_field_codec.dart'; import 'package:querya_desktop/shared/widgets/app_toast.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; import 'package:querya_desktop/shared/widgets/querya_button.dart'; import 'package:querya_desktop/shared/widgets/querya_divider.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; /// Appends a key or list index to a JavaScript / JSON Path expression. /// diff --git a/lib/features/mongodb/mongo_documents_json_view.dart b/lib/features/mongodb/mongo_documents_json_view.dart index dae6b4d0..793958d8 100644 --- a/lib/features/mongodb/mongo_documents_json_view.dart +++ b/lib/features/mongodb/mongo_documents_json_view.dart @@ -5,9 +5,10 @@ import 'package:querya_desktop/core/editor/querya_code_language.dart'; import 'package:querya_desktop/core/editor/syntax_highlight_service.dart'; import 'package:querya_desktop/features/mongodb/mongo_ejson.dart'; import 'package:querya_desktop/shared/widgets/app_toast.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; import 'package:querya_desktop/shared/widgets/querya_button.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; /// Full-page formatted Extended JSON viewer using [QueryaCodeEditor]. class MongoDocumentsJsonView extends StatefulWidget { diff --git a/lib/features/mongodb/mongo_documents_table_view.dart b/lib/features/mongodb/mongo_documents_table_view.dart index b5dfcddd..e82a3982 100644 --- a/lib/features/mongodb/mongo_documents_table_view.dart +++ b/lib/features/mongodb/mongo_documents_table_view.dart @@ -4,9 +4,10 @@ import 'package:mongo_dart/mongo_dart.dart' show ObjectId; import 'package:querya_desktop/features/mongodb/mongo_ejson.dart'; import 'package:querya_desktop/features/workspace/result_grid_view.dart'; import 'package:querya_desktop/shared/widgets/app_toast.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; import 'package:querya_desktop/shared/widgets/querya_button.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; /// Precomputed column and cell model for [MongoDocumentsTableView]. class MongoTableGridData { diff --git a/lib/features/settings/preferences_controls.dart b/lib/features/settings/preferences_controls.dart index fc862048..daf2183e 100644 --- a/lib/features/settings/preferences_controls.dart +++ b/lib/features/settings/preferences_controls.dart @@ -6,7 +6,8 @@ import 'package:querya_desktop/core/layout/ui_scale_controller.dart'; import 'package:querya_desktop/core/layout/ui_scale.dart'; import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/shared/widgets/querya_dropdown.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Helper / hint copy in Preferences — readable on imported themes. class PreferencesHint extends StatelessWidget { diff --git a/lib/features/settings/theme_picker_button.dart b/lib/features/settings/theme_picker_button.dart index 648838fa..94c0315b 100644 --- a/lib/features/settings/theme_picker_button.dart +++ b/lib/features/settings/theme_picker_button.dart @@ -8,7 +8,7 @@ import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/theme_definition.dart'; import 'package:querya_desktop/features/settings/theme_preview_card.dart'; import 'package:querya_desktop/shared/widgets/querya_dropdown_tokens.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Debounce delay before requesting a hover preview load. const Duration themePreviewDebounce = Duration(milliseconds: 120); diff --git a/lib/features/updater/update_available_badge.dart b/lib/features/updater/update_available_badge.dart index a4c9b696..0126aafd 100644 --- a/lib/features/updater/update_available_badge.dart +++ b/lib/features/updater/update_available_badge.dart @@ -7,7 +7,8 @@ import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/features/updater/update_controller.dart'; import 'package:querya_desktop/features/updater/update_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Soft pulse period for the update chip at Full motion (see F9 / #482). /// diff --git a/lib/features/updater/update_changelog_view.dart b/lib/features/updater/update_changelog_view.dart index 85930378..a8113ba0 100644 --- a/lib/features/updater/update_changelog_view.dart +++ b/lib/features/updater/update_changelog_view.dart @@ -1,7 +1,8 @@ import 'dart:convert'; import 'package:flutter/material.dart' as material; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; /// Lightweight Markdown-ish renderer for GitHub release notes. class UpdateChangelogView extends StatelessWidget { diff --git a/lib/features/workspace/data_grid_calc_bar.dart b/lib/features/workspace/data_grid_calc_bar.dart index c0f1da91..a85ba3e0 100644 --- a/lib/features/workspace/data_grid_calc_bar.dart +++ b/lib/features/workspace/data_grid_calc_bar.dart @@ -3,7 +3,7 @@ import 'package:flutter/services.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_context.dart'; import 'package:querya_desktop/features/workspace/grid_selection_calc_engine.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Status bar footer for Data Grid displaying live selection statistics (Count, Distinct, Sum, Avg, Median, Min, Max). class DataGridCalcBar extends StatelessWidget { diff --git a/lib/features/workspace/data_grid_filter_bar.dart b/lib/features/workspace/data_grid_filter_bar.dart index ce436f31..c7e2d7b0 100644 --- a/lib/features/workspace/data_grid_filter_bar.dart +++ b/lib/features/workspace/data_grid_filter_bar.dart @@ -3,7 +3,8 @@ import 'package:flutter/material.dart' as material; import 'package:flutter/services.dart' show KeyDownEvent, LogicalKeyboardKey; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; import 'package:querya_desktop/shared/widgets/querya_icon_button.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Kind of filter autocomplete suggestion. enum FilterSuggestionKind { diff --git a/lib/features/workspace/data_grid_value_panel.dart b/lib/features/workspace/data_grid_value_panel.dart index bc9da4c5..6f79788b 100644 --- a/lib/features/workspace/data_grid_value_panel.dart +++ b/lib/features/workspace/data_grid_value_panel.dart @@ -7,7 +7,8 @@ import 'package:querya_desktop/core/editor/querya_code_language.dart'; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; import 'package:querya_desktop/shared/widgets/querya_dropdown.dart'; import 'package:querya_desktop/shared/widgets/querya_icon_button.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'xml_html_formatter.dart'; diff --git a/lib/features/workspace/grid/grid_column_sizer.dart b/lib/features/workspace/grid/grid_column_sizer.dart index e7813ebe..b319a9c1 100644 --- a/lib/features/workspace/grid/grid_column_sizer.dart +++ b/lib/features/workspace/grid/grid_column_sizer.dart @@ -1,6 +1,6 @@ import 'dart:math' as math; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Layout metrics for [VirtualResultGrid]. abstract final class ResultGridMetrics { diff --git a/lib/features/workspace/grid/grid_selection_manager.dart b/lib/features/workspace/grid/grid_selection_manager.dart index b808b22b..3766828c 100644 --- a/lib/features/workspace/grid/grid_selection_manager.dart +++ b/lib/features/workspace/grid/grid_selection_manager.dart @@ -1,6 +1,6 @@ import 'dart:convert'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Coordinate of a cell in [VirtualResultGrid]. @immutable diff --git a/lib/features/workspace/grid_cell_editor.dart b/lib/features/workspace/grid_cell_editor.dart index 3414f00a..dce589de 100644 --- a/lib/features/workspace/grid_cell_editor.dart +++ b/lib/features/workspace/grid_cell_editor.dart @@ -3,7 +3,7 @@ import 'package:flutter/services.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_context.dart'; import 'package:querya_desktop/features/workspace/grid_data_type_validator.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Active inline editor widget for a data grid cell. class GridCellEditor extends material.StatefulWidget { diff --git a/lib/features/workspace/query_editor_tab.dart b/lib/features/workspace/query_editor_tab.dart index 20b33eb3..83f1674b 100644 --- a/lib/features/workspace/query_editor_tab.dart +++ b/lib/features/workspace/query_editor_tab.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart' as material import 'package:querya_desktop/core/editor/querya_code_editor.dart'; import 'package:querya_desktop/core/editor/querya_code_language.dart'; import 'package:querya_desktop/features/workspace/sql_editor_chrome.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; class QueryEditorTab extends StatelessWidget { const QueryEditorTab({ diff --git a/lib/features/workspace/result_grid_view.dart b/lib/features/workspace/result_grid_view.dart index baa635d5..a29c97fa 100644 --- a/lib/features/workspace/result_grid_view.dart +++ b/lib/features/workspace/result_grid_view.dart @@ -19,7 +19,7 @@ import 'package:querya_desktop/features/workspace/grid_cell_popover_inspector.da import 'package:querya_desktop/features/workspace/grid/grid_column_sizer.dart'; import 'package:querya_desktop/features/workspace/grid/grid_selection_manager.dart'; import 'package:querya_desktop/features/workspace/grid/grid_sorting.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; export 'package:querya_desktop/features/workspace/grid/grid_column_sizer.dart'; export 'package:querya_desktop/features/workspace/grid/grid_selection_manager.dart'; diff --git a/lib/features/workspace/sql_editor_chrome.dart b/lib/features/workspace/sql_editor_chrome.dart index 7dcd62db..4ca45a36 100644 --- a/lib/features/workspace/sql_editor_chrome.dart +++ b/lib/features/workspace/sql_editor_chrome.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/theme/querya_editor_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/core/theme/querya_workbench_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Outer chrome for SQL editors: border, surface, brand accent glow. class SqlEditorChrome extends StatelessWidget { diff --git a/lib/shared/widgets/querya_text.dart b/lib/shared/widgets/querya_text.dart new file mode 100644 index 00000000..46950160 --- /dev/null +++ b/lib/shared/widgets/querya_text.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart' as material; +import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; + +/// Text styles for a `Text` (or anything that renders text) through the +/// ambient [material.DefaultTextStyle], replacing shadcn's `TextExtension` +/// (#1465). +/// +/// Sizes are the ones the app has always used (12 / 14 / 16 / 18); the UI scale +/// reaches them through the `MediaQuery` text scaler, so nothing is scaled here. +/// Colours come from the theme's colour scheme. +/// +/// ```dart +/// Text('Connections').semiBold().small() +/// Text('No rows').muted() +/// ``` +extension QueryaTextStyles on material.Widget { + /// 12 px. + material.Widget xSmall() => _fontSize(12); + + /// 14 px. + material.Widget small() => _fontSize(14); + + /// 16 px. + material.Widget base() => _fontSize(16); + + /// 18 px. + material.Widget large() => _fontSize(18); + + /// Weight 500. + material.Widget medium() => _weight(material.FontWeight.w500); + + /// Weight 600. + material.Widget semiBold() => _weight(material.FontWeight.w600); + + /// Weight 700. + material.Widget bold() => _weight(material.FontWeight.w700); + + /// The muted foreground colour. + material.Widget muted() => _QueryaStyledText( + child: this, + style: (context) => + material.TextStyle(color: context.colors.mutedForeground), + ); + + /// The standard foreground colour. + material.Widget foreground() => _QueryaStyledText( + child: this, + style: (context) => + material.TextStyle(color: context.colors.foreground), + ); + + material.Widget _fontSize(double size) => _QueryaStyledText( + child: this, + style: (_) => material.TextStyle(fontSize: size), + ); + + material.Widget _weight(material.FontWeight weight) => _QueryaStyledText( + child: this, + style: (_) => material.TextStyle(fontWeight: weight), + ); +} + +class _QueryaStyledText extends material.StatelessWidget { + const _QueryaStyledText({required this.child, required this.style}); + + final material.Widget child; + final material.TextStyle Function(material.BuildContext context) style; + + @override + material.Widget build(material.BuildContext context) { + return material.DefaultTextStyle.merge( + style: style(context), + child: child, + ); + } +} diff --git a/lib/shared/widgets/widgets.dart b/lib/shared/widgets/widgets.dart index 05ab1cde..caee584b 100644 --- a/lib/shared/widgets/widgets.dart +++ b/lib/shared/widgets/widgets.dart @@ -33,6 +33,7 @@ export 'querya_icon_button.dart'; export 'querya_modal_dialog.dart'; export 'querya_search_field.dart'; export 'querya_spinner.dart'; +export 'querya_text.dart'; export 'tree_load_error.dart'; export 'package:querya_desktop/core/motion/querya_motion.dart'; export 'package:querya_desktop/core/motion/querya_motion_context.dart'; @@ -40,4 +41,4 @@ export 'package:querya_desktop/core/motion/querya_animated_expand.dart'; export 'package:querya_desktop/core/motion/querya_fade_slide.dart'; export 'package:querya_desktop/core/theme/querya_theme_scope.dart' show QueryaThemeContext; -export 'package:shadcn_flutter/shadcn_flutter.dart'; +export 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; diff --git a/test/core/editor/querya_code_editor_test.dart b/test/core/editor/querya_code_editor_test.dart index 35000d81..686239b3 100644 --- a/test/core/editor/querya_code_editor_test.dart +++ b/test/core/editor/querya_code_editor_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/editor/querya_code_language.dart'; import 'package:querya_desktop/core/editor/querya_highlight_controller.dart'; import 'package:querya_desktop/core/editor/syntax_highlight_service.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/pump_syntax_highlight.dart'; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/core/storage/app_settings_test.dart b/test/core/storage/app_settings_test.dart index b095f0f4..975ae7a6 100644 --- a/test/core/storage/app_settings_test.dart +++ b/test/core/storage/app_settings_test.dart @@ -6,7 +6,7 @@ import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/querya_theme_preset.dart'; import 'package:querya_desktop/core/updater/update_manifest.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// path_provider has no implementation in plain `flutter test`; LocalDb needs a path. class _FakePathProvider extends PathProviderPlatform { diff --git a/test/core/theme/parser/querya_theme_color_scheme_test.dart b/test/core/theme/parser/querya_theme_color_scheme_test.dart index b4ad8bdd..8bcea27c 100644 --- a/test/core/theme/parser/querya_theme_color_scheme_test.dart +++ b/test/core/theme/parser/querya_theme_color_scheme_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/theme/parser/color_parser.dart'; import 'package:querya_desktop/core/theme/parser/querya_theme_color_scheme.dart'; import 'package:querya_desktop/core/theme/parser/querya_theme_manifest.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('colorSchemeFromQueryaThemeColors', () { diff --git a/test/core/theme/parser/querya_theme_merge_pipeline_test.dart b/test/core/theme/parser/querya_theme_merge_pipeline_test.dart index df4b7177..b7e31e13 100644 --- a/test/core/theme/parser/querya_theme_merge_pipeline_test.dart +++ b/test/core/theme/parser/querya_theme_merge_pipeline_test.dart @@ -3,7 +3,7 @@ import 'package:querya_desktop/core/theme/parser/querya_theme_from_vscode.dart'; import 'package:querya_desktop/core/theme/parser/vscode_colors_merge.dart'; import 'package:querya_desktop/core/theme/parser/vscode_theme_manifest.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('theme merge pipeline', () { diff --git a/test/core/theme/parser/theme_fixtures_integration_test.dart b/test/core/theme/parser/theme_fixtures_integration_test.dart index e954ceef..365806cf 100644 --- a/test/core/theme/parser/theme_fixtures_integration_test.dart +++ b/test/core/theme/parser/theme_fixtures_integration_test.dart @@ -4,7 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/parser/querya_theme_from_vscode.dart'; import 'package:querya_desktop/core/theme/parser/vscode_theme_manifest.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('theme fixtures', () { diff --git a/test/core/theme/parser/vscode_color_map_test.dart b/test/core/theme/parser/vscode_color_map_test.dart index 3ddc5cee..224ef755 100644 --- a/test/core/theme/parser/vscode_color_map_test.dart +++ b/test/core/theme/parser/vscode_color_map_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/theme/parser/querya_theme_from_vscode.dart'; import 'package:querya_desktop/core/theme/parser/vscode_color_map.dart'; import 'package:querya_desktop/core/theme/parser/vscode_theme_manifest.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('kVsCodeColorMap', () { diff --git a/test/core/theme/querya_app_theme_test.dart b/test/core/theme/querya_app_theme_test.dart index 4218d51f..612e83db 100644 --- a/test/core/theme/querya_app_theme_test.dart +++ b/test/core/theme/querya_app_theme_test.dart @@ -6,7 +6,7 @@ import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/theme_controller.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; class _FakePathProvider extends PathProviderPlatform { _FakePathProvider(this._root); diff --git a/test/core/theme/querya_light_theme_test.dart b/test/core/theme/querya_light_theme_test.dart index 88fb8180..d9de48e2 100644 --- a/test/core/theme/querya_light_theme_test.dart +++ b/test/core/theme/querya_light_theme_test.dart @@ -3,7 +3,7 @@ import 'dart:math' as math; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_color_scheme.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('QueryaTheme.lightDefault', () { diff --git a/test/core/theme/querya_semantic_palette_test.dart b/test/core/theme/querya_semantic_palette_test.dart index 6358b6d2..5e49f220 100644 --- a/test/core/theme/querya_semantic_palette_test.dart +++ b/test/core/theme/querya_semantic_palette_test.dart @@ -1,7 +1,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_semantic_palette.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { test('semantic palette derives roles from theme tokens', () { diff --git a/test/core/theme/querya_theme_scope_test.dart b/test/core/theme/querya_theme_scope_test.dart index 36fc90fc..8f125b34 100644 --- a/test/core/theme/querya_theme_scope_test.dart +++ b/test/core/theme/querya_theme_scope_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { testWidgets('QueryaThemeScope provides workbench tokens', (tester) async { diff --git a/test/core/theme/querya_theme_test.dart b/test/core/theme/querya_theme_test.dart index 6541b0fa..fa0af679 100644 --- a/test/core/theme/querya_theme_test.dart +++ b/test/core/theme/querya_theme_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/theme/querya_colors.dart'; import 'package:querya_desktop/core/theme/querya_editor_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_workbench_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('QueryaWorkbenchTheme', () { diff --git a/test/core/theme/theme_controller_test.dart b/test/core/theme/theme_controller_test.dart index de342f32..44bf7d39 100644 --- a/test/core/theme/theme_controller_test.dart +++ b/test/core/theme/theme_controller_test.dart @@ -16,7 +16,7 @@ import 'package:querya_desktop/core/theme/theme_definition.dart'; import 'package:querya_desktop/core/extensions/extension_paths.dart'; import 'package:querya_desktop/core/extensions/local_extension_registry.dart'; import 'package:querya_desktop/core/theme/theme_registry_service.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; class _FakePathProvider extends PathProviderPlatform { _FakePathProvider(this._root); diff --git a/test/core/unsaved_work_guard_test.dart b/test/core/unsaved_work_guard_test.dart index c8a58b79..df96b35e 100644 --- a/test/core/unsaved_work_guard_test.dart +++ b/test/core/unsaved_work_guard_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/core/unsaved_work_guard.dart'; import 'package:querya_desktop/core/unsaved_work_registry.dart'; import 'package:querya_desktop/features/workspace/data_grid_staging_buffer.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { tearDown(UnsavedWorkRegistry.instance.resetForTest); diff --git a/test/e2e/04_nosql_workspaces/e2e_redis_cli_terminal_test.dart b/test/e2e/04_nosql_workspaces/e2e_redis_cli_terminal_test.dart index 086c6d97..213f6174 100644 --- a/test/e2e/04_nosql_workspaces/e2e_redis_cli_terminal_test.dart +++ b/test/e2e/04_nosql_workspaces/e2e_redis_cli_terminal_test.dart @@ -4,7 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/database/redis_connection.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/redis/redis_cli_workspace.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/e2e/helpers/e2e_command_palette_helper.dart b/test/e2e/helpers/e2e_command_palette_helper.dart index 7fcc257d..57206b6e 100644 --- a/test/e2e/helpers/e2e_command_palette_helper.dart +++ b/test/e2e/helpers/e2e_command_palette_helper.dart @@ -1,5 +1,5 @@ import 'package:flutter/services.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:flutter_test/flutter_test.dart'; /// Drives the Command Palette (`Ctrl+P`) the way a user does. diff --git a/test/features/command_palette/command_palette_dialog_test.dart b/test/features/command_palette/command_palette_dialog_test.dart index fbb97afb..6b5d020c 100644 --- a/test/features/command_palette/command_palette_dialog_test.dart +++ b/test/features/command_palette/command_palette_dialog_test.dart @@ -6,7 +6,7 @@ import 'package:querya_desktop/core/actions/querya_command_registry.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/features/command_palette/command_palette_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/command_palette/palette_keyboard_scroll_test.dart b/test/features/command_palette/palette_keyboard_scroll_test.dart index 265b4c8e..adfa3539 100644 --- a/test/features/command_palette/palette_keyboard_scroll_test.dart +++ b/test/features/command_palette/palette_keyboard_scroll_test.dart @@ -6,7 +6,7 @@ import 'package:querya_desktop/core/actions/querya_schema_object.dart'; import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/features/command_palette/command_palette_dialog.dart'; import 'package:querya_desktop/features/command_palette/quick_switcher_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/command_palette/quick_switcher_dialog_test.dart b/test/features/command_palette/quick_switcher_dialog_test.dart index 545266cb..43b049b2 100644 --- a/test/features/command_palette/quick_switcher_dialog_test.dart +++ b/test/features/command_palette/quick_switcher_dialog_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/actions/querya_command_host.dart'; import 'package:querya_desktop/core/actions/querya_schema_object.dart'; import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/features/command_palette/quick_switcher_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/connections/connection_dialog_focus_traversal_test.dart b/test/features/connections/connection_dialog_focus_traversal_test.dart index 50cc21d1..950af3d1 100644 --- a/test/features/connections/connection_dialog_focus_traversal_test.dart +++ b/test/features/connections/connection_dialog_focus_traversal_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/features/connections/new_connection_url_dialog.dart'; import 'package:querya_desktop/features/postgresql/postgresql_connection_form.dart'; import 'package:querya_desktop/shared/widgets/ssl_certificate_fields.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/connections/connection_form_sections_test.dart b/test/features/connections/connection_form_sections_test.dart index bdeafe76..975906a4 100644 --- a/test/features/connections/connection_form_sections_test.dart +++ b/test/features/connections/connection_form_sections_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/connections/forms/connection_auth_section.dart'; import 'package:querya_desktop/features/connections/forms/connection_database_section.dart'; import 'package:querya_desktop/features/connections/forms/connection_host_port_section.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { Widget buildApp(Widget child) { diff --git a/test/features/connections/connection_tree_quick_search_test.dart b/test/features/connections/connection_tree_quick_search_test.dart index 7590319e..1c7b7bca 100644 --- a/test/features/connections/connection_tree_quick_search_test.dart +++ b/test/features/connections/connection_tree_quick_search_test.dart @@ -7,7 +7,7 @@ import 'package:querya_desktop/core/storage/folders_storage.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/connections/connections_panel.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; String _isoNow() => DateTime.now().toUtc().toIso8601String(); diff --git a/test/features/connections/connections_panel_layout_test.dart b/test/features/connections/connections_panel_layout_test.dart index ea72c1f7..1e2c4982 100644 --- a/test/features/connections/connections_panel_layout_test.dart +++ b/test/features/connections/connections_panel_layout_test.dart @@ -8,7 +8,7 @@ import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/core/ui/querya_tree_tokens.dart'; import 'package:querya_desktop/features/connections/connections_panel.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/layout_overflow.dart'; diff --git a/test/features/connections/new_connection_url_dialog_test.dart b/test/features/connections/new_connection_url_dialog_test.dart index 5af32e03..81497c21 100644 --- a/test/features/connections/new_connection_url_dialog_test.dart +++ b/test/features/connections/new_connection_url_dialog_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/connections/new_connection_url_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/connections/sqlite_connection_form_test.dart b/test/features/connections/sqlite_connection_form_test.dart index 95cd5acf..4aa0dcad 100644 --- a/test/features/connections/sqlite_connection_form_test.dart +++ b/test/features/connections/sqlite_connection_form_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/connections/sqlite_connection_form.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('showSqliteConnectionForm', () { diff --git a/test/features/extensions/extension_sql_workspace_test.dart b/test/features/extensions/extension_sql_workspace_test.dart index a19a394c..79f1c636 100644 --- a/test/features/extensions/extension_sql_workspace_test.dart +++ b/test/features/extensions/extension_sql_workspace_test.dart @@ -9,7 +9,7 @@ import 'package:querya_desktop/core/extensions/extension_driver_session.dart'; import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/extensions/extension_sql_workspace.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:querya_desktop/shared/widgets/querya_button.dart'; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/main_screen/menubar_dropdown_speed_test.dart b/test/features/main_screen/menubar_dropdown_speed_test.dart index 5c5d6fdb..d8f55d3c 100644 --- a/test/features/main_screen/menubar_dropdown_speed_test.dart +++ b/test/features/main_screen/menubar_dropdown_speed_test.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { testWidgets('Menubar dropdown opens fast and toggles on repeated tap', diff --git a/test/features/main_screen/querya_window_title_bar_test.dart b/test/features/main_screen/querya_window_title_bar_test.dart index 3010e8af..9352b036 100644 --- a/test/features/main_screen/querya_window_title_bar_test.dart +++ b/test/features/main_screen/querya_window_title_bar_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_workbench_theme.dart'; import 'package:querya_desktop/features/main_screen/querya_window_title_bar.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/main_screen/shell_chrome_golden_test.dart b/test/features/main_screen/shell_chrome_golden_test.dart index a9a96a21..cfd31107 100644 --- a/test/features/main_screen/shell_chrome_golden_test.dart +++ b/test/features/main_screen/shell_chrome_golden_test.dart @@ -6,7 +6,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/features/main_screen/querya_window_title_bar.dart'; import 'package:querya_desktop/shared/widgets/app_dialog.dart'; import 'package:querya_desktop/shared/widgets/querya_tab_strip.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/main_screen/sidebar_toggle_test.dart b/test/features/main_screen/sidebar_toggle_test.dart index 28637f4f..c0de41fc 100644 --- a/test/features/main_screen/sidebar_toggle_test.dart +++ b/test/features/main_screen/sidebar_toggle_test.dart @@ -12,7 +12,7 @@ import 'package:querya_desktop/features/connections/connections_panel.dart'; import 'package:querya_desktop/features/main_screen/main_screen.dart'; import 'package:querya_desktop/features/main_screen/querya_window_title_bar.dart'; import 'package:querya_desktop/features/main_screen/workspace_panel.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/main_screen/workspace_homes_and_preferences_test.dart b/test/features/main_screen/workspace_homes_and_preferences_test.dart index dbf006f2..9f3e5c45 100644 --- a/test/features/main_screen/workspace_homes_and_preferences_test.dart +++ b/test/features/main_screen/workspace_homes_and_preferences_test.dart @@ -10,7 +10,7 @@ import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/connections/driver_manager_dialog.dart'; import 'package:querya_desktop/features/mysql/mysql_workspace_home.dart'; import 'package:querya_desktop/features/settings/preferences_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/mongodb/mongo_aggregation_workspace_test.dart b/test/features/mongodb/mongo_aggregation_workspace_test.dart index 88706a7f..8f94df72 100644 --- a/test/features/mongodb/mongo_aggregation_workspace_test.dart +++ b/test/features/mongodb/mongo_aggregation_workspace_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/database/mongodb_connection.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/mongodb/mongo_aggregation_stage.dart'; import 'package:querya_desktop/features/mongodb/mongo_aggregation_workspace.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/mongodb/mongo_database_dialog_test.dart b/test/features/mongodb/mongo_database_dialog_test.dart index e32eb440..ff9846f2 100644 --- a/test/features/mongodb/mongo_database_dialog_test.dart +++ b/test/features/mongodb/mongo_database_dialog_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/mongodb/mongo_database_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('showCreateMongoDBDialog', () { diff --git a/test/features/mysql/mysql_sql_tx_guard_test.dart b/test/features/mysql/mysql_sql_tx_guard_test.dart index 7a7b0590..c771fa00 100644 --- a/test/features/mysql/mysql_sql_tx_guard_test.dart +++ b/test/features/mysql/mysql_sql_tx_guard_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/mysql/mysql_object_kind.dart'; import 'package:querya_desktop/features/mysql/mysql_sql_tx_guard.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { test('mysqlObjectOpensTableBrowser covers table and view only', () { diff --git a/test/features/onboarding/welcome_tour_dialog_test.dart b/test/features/onboarding/welcome_tour_dialog_test.dart index 5384ed67..2d931cfa 100644 --- a/test/features/onboarding/welcome_tour_dialog_test.dart +++ b/test/features/onboarding/welcome_tour_dialog_test.dart @@ -6,7 +6,7 @@ import 'package:path_provider_platform_interface/path_provider_platform_interfac import 'package:querya_desktop/core/motion/querya_motion_scope.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/onboarding/welcome_tour_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/postgresql/postgres_sql_tx_guard_test.dart b/test/features/postgresql/postgres_sql_tx_guard_test.dart index 07ef0b4d..25ea95be 100644 --- a/test/features/postgresql/postgres_sql_tx_guard_test.dart +++ b/test/features/postgresql/postgres_sql_tx_guard_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/postgresql/postgres_object_kind.dart'; import 'package:querya_desktop/features/postgresql/postgres_sql_tx_guard.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { test('postgresObjectOpensTableBrowser covers grid kinds only', () { diff --git a/test/features/postgresql/postgres_table_toolbar_layout_test.dart b/test/features/postgresql/postgres_table_toolbar_layout_test.dart index 6ff8abff..a03bd968 100644 --- a/test/features/postgresql/postgres_table_toolbar_layout_test.dart +++ b/test/features/postgresql/postgres_table_toolbar_layout_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/postgresql/postgres_table_toolbar.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/layout_overflow.dart'; diff --git a/test/features/postgresql/postgresql_connection_form_test.dart b/test/features/postgresql/postgresql_connection_form_test.dart index 48a81b7a..477a2429 100644 --- a/test/features/postgresql/postgresql_connection_form_test.dart +++ b/test/features/postgresql/postgresql_connection_form_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/postgresql/postgresql_connection_form.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('showPostgresConnectionForm', () { diff --git a/test/features/redis/redis_cli_workspace_test.dart b/test/features/redis/redis_cli_workspace_test.dart index c4d1a4e2..e69b0bff 100644 --- a/test/features/redis/redis_cli_workspace_test.dart +++ b/test/features/redis/redis_cli_workspace_test.dart @@ -6,7 +6,7 @@ import 'package:querya_desktop/core/database/destructive_sql_detector.dart'; import 'package:querya_desktop/core/database/redis_connection.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/redis/redis_cli_workspace.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/results/charts/quick_chart_view_test.dart b/test/features/results/charts/quick_chart_view_test.dart index 9a1102c8..f07f89d1 100644 --- a/test/features/results/charts/quick_chart_view_test.dart +++ b/test/features/results/charts/quick_chart_view_test.dart @@ -9,7 +9,7 @@ import 'package:querya_desktop/core/theme/parser/querya_theme_from_vscode.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/results/charts/chart_data.dart'; import 'package:querya_desktop/features/results/charts/quick_chart_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../../support/querya_theme_test_shell.dart'; diff --git a/test/features/settings/interface_scale_slider_test.dart b/test/features/settings/interface_scale_slider_test.dart index 32318211..ee651abe 100644 --- a/test/features/settings/interface_scale_slider_test.dart +++ b/test/features/settings/interface_scale_slider_test.dart @@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/layout/ui_scale_controller.dart'; import 'package:querya_desktop/core/storage/app_settings.dart'; import 'package:querya_desktop/features/settings/preferences_controls.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/settings/preferences_checkbox_row_test.dart b/test/features/settings/preferences_checkbox_row_test.dart index 412f90c3..8427f3c2 100644 --- a/test/features/settings/preferences_checkbox_row_test.dart +++ b/test/features/settings/preferences_checkbox_row_test.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/features/settings/preferences_controls.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/settings/preferences_master_detail_test.dart b/test/features/settings/preferences_master_detail_test.dart index 89269e1f..9390d002 100644 --- a/test/features/settings/preferences_master_detail_test.dart +++ b/test/features/settings/preferences_master_detail_test.dart @@ -8,7 +8,7 @@ import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/settings/preferences_controls.dart'; import 'package:querya_desktop/features/settings/preferences_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; class _FakePathProvider extends PathProviderPlatform { _FakePathProvider(this._root); diff --git a/test/features/sqlite/sqlite_sql_tx_guard_test.dart b/test/features/sqlite/sqlite_sql_tx_guard_test.dart index 7eb47fe3..c624eaab 100644 --- a/test/features/sqlite/sqlite_sql_tx_guard_test.dart +++ b/test/features/sqlite/sqlite_sql_tx_guard_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/connections/connections_panel.dart' show SqliteObjectKind; import 'package:querya_desktop/features/sqlite/sqlite_sql_tx_guard.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { test('sqliteObjectOpensTableBrowser covers table and view', () { diff --git a/test/features/workspace/context_menu_mode_switch_test.dart b/test/features/workspace/context_menu_mode_switch_test.dart index 6fb51ede..efc2805b 100644 --- a/test/features/workspace/context_menu_mode_switch_test.dart +++ b/test/features/workspace/context_menu_mode_switch_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; material.Widget _testShell({required material.Widget child}) { final td = QueryaTheme.darkDefault diff --git a/test/features/workspace/data_grid_context_menu_test.dart b/test/features/workspace/data_grid_context_menu_test.dart index 5d3f8e1b..d48bbe77 100644 --- a/test/features/workspace/data_grid_context_menu_test.dart +++ b/test/features/workspace/data_grid_context_menu_test.dart @@ -7,7 +7,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/workspace/data_grid_staging_buffer.dart'; import 'package:querya_desktop/features/workspace/result_grid_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; material.Widget _testShell({required material.Widget child}) { final td = QueryaTheme.darkDefault diff --git a/test/features/workspace/destructive_query_dialog_test.dart b/test/features/workspace/destructive_query_dialog_test.dart index 334533ef..890fa390 100644 --- a/test/features/workspace/destructive_query_dialog_test.dart +++ b/test/features/workspace/destructive_query_dialog_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/database/destructive_sql_detector.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/workspace/dml_preview_dialog_test.dart b/test/features/workspace/dml_preview_dialog_test.dart index b07006b2..4b70f425 100644 --- a/test/features/workspace/dml_preview_dialog_test.dart +++ b/test/features/workspace/dml_preview_dialog_test.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/database/table_mutation_engine.dart'; import 'package:querya_desktop/features/workspace/dml_preview_dialog.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/workspace/grid_cell_editor_test.dart b/test/features/workspace/grid_cell_editor_test.dart index db576099..2bd5cc2e 100644 --- a/test/features/workspace/grid_cell_editor_test.dart +++ b/test/features/workspace/grid_cell_editor_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/features/workspace/data_grid_staging_buffer.dart' import 'package:querya_desktop/features/workspace/grid_cell_editor.dart'; import 'package:querya_desktop/features/workspace/grid_cell_popover_inspector.dart'; import 'package:querya_desktop/features/workspace/result_grid_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/workspace/query_editor_tab_test.dart b/test/features/workspace/query_editor_tab_test.dart index bb941342..89dae2b0 100644 --- a/test/features/workspace/query_editor_tab_test.dart +++ b/test/features/workspace/query_editor_tab_test.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/features/workspace/query_editor_tab.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/workspace/result_grid_lazy_context_menu_test.dart b/test/features/workspace/result_grid_lazy_context_menu_test.dart index 37c99504..f46508e8 100644 --- a/test/features/workspace/result_grid_lazy_context_menu_test.dart +++ b/test/features/workspace/result_grid_lazy_context_menu_test.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/workspace/result_grid_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; material.Widget _testShell({required material.Widget child}) { final td = QueryaTheme.darkDefault diff --git a/test/features/workspace/result_grid_sorting_model_test.dart b/test/features/workspace/result_grid_sorting_model_test.dart index e57b1c10..e1efd25e 100644 --- a/test/features/workspace/result_grid_sorting_model_test.dart +++ b/test/features/workspace/result_grid_sorting_model_test.dart @@ -5,7 +5,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/workspace/data_grid_staging_buffer.dart'; import 'package:querya_desktop/features/workspace/result_grid_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; material.Widget _testShell({required material.Widget child}) { final td = QueryaTheme.darkDefault diff --git a/test/features/workspace/sql_editor_chrome_test.dart b/test/features/workspace/sql_editor_chrome_test.dart index 53697e4c..316a4b12 100644 --- a/test/features/workspace/sql_editor_chrome_test.dart +++ b/test/features/workspace/sql_editor_chrome_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/theme/querya_editor_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_workbench_theme.dart'; import 'package:querya_desktop/features/workspace/sql_editor_chrome.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/workspace/sql_workspace_execute_dirty_guard_test.dart b/test/features/workspace/sql_workspace_execute_dirty_guard_test.dart index ea911785..8361e4ec 100644 --- a/test/features/workspace/sql_workspace_execute_dirty_guard_test.dart +++ b/test/features/workspace/sql_workspace_execute_dirty_guard_test.dart @@ -7,7 +7,7 @@ import 'package:querya_desktop/core/actions/sql_editor_command_bridge.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/sqlite/sqlite_sql_workspace.dart'; import 'package:querya_desktop/features/workspace/workspace.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; import 'package:querya_desktop/shared/widgets/querya_button.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; diff --git a/test/features/workspace/sql_workspace_toolbar_test.dart b/test/features/workspace/sql_workspace_toolbar_test.dart index 6f5b7f5d..c99fafc2 100644 --- a/test/features/workspace/sql_workspace_toolbar_test.dart +++ b/test/features/workspace/sql_workspace_toolbar_test.dart @@ -5,7 +5,7 @@ import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/features/workspace/sql_execution_delegate.dart'; import 'package:querya_desktop/features/workspace/sql_query_tab_session.dart'; import 'package:querya_desktop/features/workspace/sql_workspace_toolbar.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; class _FakeSqlExecutionDelegate extends BaseSqlExecutionDelegate { @override diff --git a/test/features/workspace/table_view_sorting_test.dart b/test/features/workspace/table_view_sorting_test.dart index 3f01cba0..eb2ac56b 100644 --- a/test/features/workspace/table_view_sorting_test.dart +++ b/test/features/workspace/table_view_sorting_test.dart @@ -4,7 +4,7 @@ import 'package:querya_desktop/core/database/mysql_connection.dart'; import 'package:querya_desktop/core/database/sqlite_connection.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/features/postgresql/postgres_table_utils.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('Table Views SQL Sorting Clause Generation', () { diff --git a/test/features/workspace/table_view_staging_test.dart b/test/features/workspace/table_view_staging_test.dart index df6e44f8..75a0324b 100644 --- a/test/features/workspace/table_view_staging_test.dart +++ b/test/features/workspace/table_view_staging_test.dart @@ -7,7 +7,7 @@ import 'package:querya_desktop/core/database/table_schema_meta.dart'; import 'package:querya_desktop/core/theme/app_theme.dart'; import 'package:querya_desktop/features/workspace/data_grid_staging_buffer.dart'; import 'package:querya_desktop/features/workspace/table_view_staging.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; void main() { group('tableViewEditingEnabled', () { diff --git a/test/shared/widgets/querya_text_test.dart b/test/shared/widgets/querya_text_test.dart new file mode 100644 index 00000000..9b4ef0ae --- /dev/null +++ b/test/shared/widgets/querya_text_test.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart' as material; +import 'package:flutter_test/flutter_test.dart'; +import 'package:querya_desktop/shared/widgets/querya_text.dart'; + +import '../../support/querya_theme_test_shell.dart'; + +material.TextStyle _styleOf(WidgetTester tester, String text) { + final context = tester.element(find.text(text)); + return material.DefaultTextStyle.of(context).style; +} + +void main() { + group('QueryaTextStyles', () { + testWidgets('sizes and weights go through the default text style', + (tester) async { + await tester.pumpWidget( + queryaThemeTestShell( + child: material.Column( + children: [ + const material.Text('x').xSmall(), + const material.Text('s').small(), + const material.Text('b').base(), + const material.Text('l').large(), + const material.Text('sb').semiBold(), + const material.Text('bo').bold(), + const material.Text('me').medium(), + ], + ), + ), + ); + + expect(_styleOf(tester, 'x').fontSize, 12); + expect(_styleOf(tester, 's').fontSize, 14); + expect(_styleOf(tester, 'b').fontSize, 16); + expect(_styleOf(tester, 'l').fontSize, 18); + expect(_styleOf(tester, 'sb').fontWeight, material.FontWeight.w600); + expect(_styleOf(tester, 'bo').fontWeight, material.FontWeight.w700); + expect(_styleOf(tester, 'me').fontWeight, material.FontWeight.w500); + }); + + testWidgets('modifiers chain and keep each other', (tester) async { + await tester.pumpWidget( + queryaThemeTestShell( + child: const material.Text('chain').semiBold().small(), + ), + ); + + final style = _styleOf(tester, 'chain'); + expect(style.fontSize, 14); + expect(style.fontWeight, material.FontWeight.w600); + }); + + testWidgets('muted and foreground use the colour scheme', (tester) async { + await tester.pumpWidget( + queryaThemeTestShell( + child: material.Column( + children: [ + const material.Text('quiet').muted(), + const material.Text('loud').foreground(), + ], + ), + ), + ); + + expect( + _styleOf(tester, 'quiet').color, + isNot(_styleOf(tester, 'loud').color), + ); + }); + }); +} diff --git a/test/support/querya_theme_test_shell.dart b/test/support/querya_theme_test_shell.dart index 3bbdf60d..16604034 100644 --- a/test/support/querya_theme_test_shell.dart +++ b/test/support/querya_theme_test_shell.dart @@ -1,7 +1,7 @@ import 'package:querya_desktop/core/layout/ui_scale.dart'; import 'package:querya_desktop/core/theme/querya_theme.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart'; +import 'package:shadcn_flutter/shadcn_flutter.dart' hide TextExtension; /// Wraps [child] with [ShadcnApp] and [QueryaThemeScope] for widget tests. Widget queryaThemeTestShell({ From e0a83ad76f5d2edd6652bc27e027f11b023ad5ae Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sun, 11 Oct 2026 16:21:40 +0300 Subject: [PATCH 2/3] fix(ui): hide TextExtension on prefixed shadcn imports, add ellipsis() An extension from a prefixed import still applies implicitly, so the 27 files importing shadcn as shadcn saw both extensions and every chained modifier was ambiguous. They now hide it too. QueryaTextStyles also gets ellipsis() (one line, cut), which one call site used. --- lib/core/theme/querya_theme_scope.dart | 3 ++- lib/features/erd/erd_export_data.dart | 3 ++- .../extensions/extension_stats_view.dart | 3 ++- .../mongodb/mongo_collections_view.dart | 3 ++- .../mongodb/mongo_databases_view.dart | 3 ++- .../mongodb/mongo_document_editor.dart | 3 ++- .../mongodb/mongo_documents_view.dart | 3 ++- lib/features/mongodb/mongo_explorer_view.dart | 3 ++- lib/features/mongodb/mongo_stats_view.dart | 3 ++- lib/features/mysql/mysql_stats_view.dart | 3 ++- .../postgresql/postgres_stats_view.dart | 3 ++- .../redis/editors/redis_hash_editor.dart | 3 ++- .../redis/editors/redis_list_editor.dart | 3 ++- .../redis/editors/redis_set_editor.dart | 3 ++- .../redis/editors/redis_zset_editor.dart | 3 ++- lib/features/redis/redis_databases_view.dart | 3 ++- lib/features/redis/redis_explorer_view.dart | 3 ++- lib/features/redis/redis_key_editor.dart | 3 ++- lib/features/redis/redis_keys_view.dart | 3 ++- lib/features/redis/redis_view.dart | 3 ++- lib/shared/widgets/app_toast.dart | 3 ++- lib/shared/widgets/querya_text.dart | 22 ++++++++++++++++--- .../shadcn_theme_animation_wiring_test.dart | 3 ++- .../mongodb/mongo_field_list_perf_test.dart | 3 ++- .../nosql/nosql_return_to_object_test.dart | 3 ++- .../features/redis/redis_key_editor_test.dart | 3 ++- .../redis/redis_type_editors_test.dart | 3 ++- test/shared/app_toast_test.dart | 3 ++- 28 files changed, 73 insertions(+), 30 deletions(-) diff --git a/lib/core/theme/querya_theme_scope.dart b/lib/core/theme/querya_theme_scope.dart index 58067fd6..a834d601 100644 --- a/lib/core/theme/querya_theme_scope.dart +++ b/lib/core/theme/querya_theme_scope.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart' as material; import 'package:flutter/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'querya_editor_theme.dart'; import 'querya_semantic_palette.dart'; diff --git a/lib/features/erd/erd_export_data.dart b/lib/features/erd/erd_export_data.dart index dcdfa99f..e2561b99 100644 --- a/lib/features/erd/erd_export_data.dart +++ b/lib/features/erd/erd_export_data.dart @@ -4,7 +4,8 @@ import 'package:querya_desktop/core/erd/erd_model.dart'; import 'package:querya_desktop/core/erd/erd_saved_layout.dart'; import 'package:querya_desktop/core/theme/querya_theme_scope.dart'; import 'package:querya_desktop/features/erd/erd_export.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; /// Turns what the diagram shows on screen (header tints, notes, group frames, /// theme colours) into the plain values the SVG / DBML export takes (#1362). diff --git a/lib/features/extensions/extension_stats_view.dart b/lib/features/extensions/extension_stats_view.dart index d091cb2d..e274e5fd 100644 --- a/lib/features/extensions/extension_stats_view.dart +++ b/lib/features/extensions/extension_stats_view.dart @@ -8,7 +8,8 @@ import 'package:querya_desktop/core/motion/ticker_gated_polling.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/util/deep_collection_equals.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _pollInterval = Duration(seconds: 5); diff --git a/lib/features/mongodb/mongo_collections_view.dart b/lib/features/mongodb/mongo_collections_view.dart index 9dec7902..289a9f4c 100644 --- a/lib/features/mongodb/mongo_collections_view.dart +++ b/lib/features/mongodb/mongo_collections_view.dart @@ -8,7 +8,8 @@ import 'package:querya_desktop/core/database/mongodb_connection.dart'; import 'package:querya_desktop/core/database/mongodb_service.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Displays the list of collections in a MongoDB database. diff --git a/lib/features/mongodb/mongo_databases_view.dart b/lib/features/mongodb/mongo_databases_view.dart index 48e51ffe..a20e09a9 100644 --- a/lib/features/mongodb/mongo_databases_view.dart +++ b/lib/features/mongodb/mongo_databases_view.dart @@ -5,7 +5,8 @@ import 'package:querya_desktop/core/database/mongodb_service.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// View that displays MongoDB databases list and server status. diff --git a/lib/features/mongodb/mongo_document_editor.dart b/lib/features/mongodb/mongo_document_editor.dart index 5a9310c8..593c80e7 100644 --- a/lib/features/mongodb/mongo_document_editor.dart +++ b/lib/features/mongodb/mongo_document_editor.dart @@ -11,7 +11,8 @@ import 'package:querya_desktop/core/unsaved_work_registry.dart'; import 'package:querya_desktop/features/mongodb/mongo_ejson.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Full-screen JSON editor for a single MongoDB document. diff --git a/lib/features/mongodb/mongo_documents_view.dart b/lib/features/mongodb/mongo_documents_view.dart index 8b232126..81153fea 100644 --- a/lib/features/mongodb/mongo_documents_view.dart +++ b/lib/features/mongodb/mongo_documents_view.dart @@ -14,7 +14,8 @@ import 'package:querya_desktop/features/mongodb/mongo_field_codec.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/features/workspace/grid_cell_popover_inspector.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _defaultLimit = 25; diff --git a/lib/features/mongodb/mongo_explorer_view.dart b/lib/features/mongodb/mongo_explorer_view.dart index ab2d3c44..8fe0e31b 100644 --- a/lib/features/mongodb/mongo_explorer_view.dart +++ b/lib/features/mongodb/mongo_explorer_view.dart @@ -7,7 +7,8 @@ import 'package:querya_desktop/core/motion/querya_switching_body.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/core/unsaved_work_guard.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'mongo_aggregation_workspace.dart'; import 'mongo_collections_view.dart'; diff --git a/lib/features/mongodb/mongo_stats_view.dart b/lib/features/mongodb/mongo_stats_view.dart index a5b698ca..8da265e3 100644 --- a/lib/features/mongodb/mongo_stats_view.dart +++ b/lib/features/mongodb/mongo_stats_view.dart @@ -8,7 +8,8 @@ import 'package:querya_desktop/core/database/mongodb_connection.dart'; import 'package:querya_desktop/core/database/mongodb_service.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _defaultAutoRefresh = Duration(seconds: 3); diff --git a/lib/features/mysql/mysql_stats_view.dart b/lib/features/mysql/mysql_stats_view.dart index f2132ac0..dcb4bfd8 100644 --- a/lib/features/mysql/mysql_stats_view.dart +++ b/lib/features/mysql/mysql_stats_view.dart @@ -9,7 +9,8 @@ import 'package:querya_desktop/core/database/mysql_service.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/querya_sparkline.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _pollInterval = Duration(seconds: 5); diff --git a/lib/features/postgresql/postgres_stats_view.dart b/lib/features/postgresql/postgres_stats_view.dart index 20fac0ac..1a5a8e01 100644 --- a/lib/features/postgresql/postgres_stats_view.dart +++ b/lib/features/postgresql/postgres_stats_view.dart @@ -10,7 +10,8 @@ import 'package:querya_desktop/core/database/postgres_service.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/querya_sparkline.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _pollInterval = Duration(seconds: 5); diff --git a/lib/features/redis/editors/redis_hash_editor.dart b/lib/features/redis/editors/redis_hash_editor.dart index 6233ce2f..4d144f17 100644 --- a/lib/features/redis/editors/redis_hash_editor.dart +++ b/lib/features/redis/editors/redis_hash_editor.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/database/redis_bulk.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Editor for a Redis hash: HSET add bar plus a field/value list. diff --git a/lib/features/redis/editors/redis_list_editor.dart b/lib/features/redis/editors/redis_list_editor.dart index c14b3459..e491fae7 100644 --- a/lib/features/redis/editors/redis_list_editor.dart +++ b/lib/features/redis/editors/redis_list_editor.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/database/redis_bulk.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Editor for a Redis list: RPUSH add bar plus an indexed item list with diff --git a/lib/features/redis/editors/redis_set_editor.dart b/lib/features/redis/editors/redis_set_editor.dart index ca7b23cc..82af10f8 100644 --- a/lib/features/redis/editors/redis_set_editor.dart +++ b/lib/features/redis/editors/redis_set_editor.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/database/redis_bulk.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Editor for a Redis set: SADD add bar plus a member list. diff --git a/lib/features/redis/editors/redis_zset_editor.dart b/lib/features/redis/editors/redis_zset_editor.dart index 6a493319..f8a8e575 100644 --- a/lib/features/redis/editors/redis_zset_editor.dart +++ b/lib/features/redis/editors/redis_zset_editor.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/database/redis_bulk.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Editor for a Redis sorted set: ZADD add bar plus a scored member list. diff --git a/lib/features/redis/redis_databases_view.dart b/lib/features/redis/redis_databases_view.dart index 2b06d166..e9a7968c 100644 --- a/lib/features/redis/redis_databases_view.dart +++ b/lib/features/redis/redis_databases_view.dart @@ -3,7 +3,8 @@ import 'package:querya_desktop/core/database/redis_connection.dart'; import 'package:querya_desktop/core/database/redis_info.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Shows all Redis databases (db0–dbN) with key counts. diff --git a/lib/features/redis/redis_explorer_view.dart b/lib/features/redis/redis_explorer_view.dart index 7b8217ae..12752acf 100644 --- a/lib/features/redis/redis_explorer_view.dart +++ b/lib/features/redis/redis_explorer_view.dart @@ -7,7 +7,8 @@ import 'package:querya_desktop/core/database/redis_service.dart'; import 'package:querya_desktop/core/motion/querya_switching_body.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'redis_keys_view.dart'; import 'redis_key_editor.dart'; diff --git a/lib/features/redis/redis_key_editor.dart b/lib/features/redis/redis_key_editor.dart index a8a72613..3725bfce 100644 --- a/lib/features/redis/redis_key_editor.dart +++ b/lib/features/redis/redis_key_editor.dart @@ -9,7 +9,8 @@ import 'package:querya_desktop/features/redis/editors/redis_string_editor.dart'; import 'package:querya_desktop/features/redis/editors/redis_zset_editor.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; /// Viewer / editor for a single Redis key. Type-aware: string, hash, diff --git a/lib/features/redis/redis_keys_view.dart b/lib/features/redis/redis_keys_view.dart index 5363c5f1..d83d8058 100644 --- a/lib/features/redis/redis_keys_view.dart +++ b/lib/features/redis/redis_keys_view.dart @@ -5,7 +5,8 @@ import 'package:querya_desktop/core/database/redis_connection.dart'; import 'package:querya_desktop/core/theme/querya_semantic_palette.dart'; import 'package:querya_desktop/features/workspace/destructive_query_dialog.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'redis_key_tree_engine.dart'; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; diff --git a/lib/features/redis/redis_view.dart b/lib/features/redis/redis_view.dart index dcda93eb..40f46a16 100644 --- a/lib/features/redis/redis_view.dart +++ b/lib/features/redis/redis_view.dart @@ -9,7 +9,8 @@ import 'package:querya_desktop/core/database/redis_info.dart'; import 'package:querya_desktop/core/database/redis_service.dart'; import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/core/ui/querya_control_tokens.dart'; const _pollInterval = Duration(seconds: 3); diff --git a/lib/shared/widgets/app_toast.dart b/lib/shared/widgets/app_toast.dart index 87638a9b..51900dfc 100644 --- a/lib/shared/widgets/app_toast.dart +++ b/lib/shared/widgets/app_toast.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_context.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; enum AppToastVariant { info, diff --git a/lib/shared/widgets/querya_text.dart b/lib/shared/widgets/querya_text.dart index 46950160..6ade3210 100644 --- a/lib/shared/widgets/querya_text.dart +++ b/lib/shared/widgets/querya_text.dart @@ -35,6 +35,13 @@ extension QueryaTextStyles on material.Widget { /// Weight 700. material.Widget bold() => _weight(material.FontWeight.w700); + /// One line, cut with an ellipsis. + material.Widget ellipsis() => _QueryaStyledText( + child: this, + overflow: material.TextOverflow.ellipsis, + maxLines: 1, + ); + /// The muted foreground colour. material.Widget muted() => _QueryaStyledText( child: this, @@ -61,15 +68,24 @@ extension QueryaTextStyles on material.Widget { } class _QueryaStyledText extends material.StatelessWidget { - const _QueryaStyledText({required this.child, required this.style}); + const _QueryaStyledText({ + required this.child, + this.style, + this.overflow, + this.maxLines, + }); final material.Widget child; - final material.TextStyle Function(material.BuildContext context) style; + final material.TextStyle Function(material.BuildContext context)? style; + final material.TextOverflow? overflow; + final int? maxLines; @override material.Widget build(material.BuildContext context) { return material.DefaultTextStyle.merge( - style: style(context), + style: style?.call(context), + overflow: overflow, + maxLines: maxLines, child: child, ); } diff --git a/test/core/theme/shadcn_theme_animation_wiring_test.dart b/test/core/theme/shadcn_theme_animation_wiring_test.dart index 02565b6e..5f4a37ec 100644 --- a/test/core/theme/shadcn_theme_animation_wiring_test.dart +++ b/test/core/theme/shadcn_theme_animation_wiring_test.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; void main() { Widget wrap(Widget child) { diff --git a/test/features/mongodb/mongo_field_list_perf_test.dart b/test/features/mongodb/mongo_field_list_perf_test.dart index 498c16f2..7dff62c8 100644 --- a/test/features/mongodb/mongo_field_list_perf_test.dart +++ b/test/features/mongodb/mongo_field_list_perf_test.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/features/mongodb/mongo_documents_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/nosql/nosql_return_to_object_test.dart b/test/features/nosql/nosql_return_to_object_test.dart index 53c09f70..f1db9a08 100644 --- a/test/features/nosql/nosql_return_to_object_test.dart +++ b/test/features/nosql/nosql_return_to_object_test.dart @@ -4,7 +4,8 @@ import 'package:querya_desktop/core/storage/local_db.dart'; import 'package:querya_desktop/features/main_screen/main_screen_workspace_state.dart'; import 'package:querya_desktop/features/mongodb/mongo_stats_view.dart'; import 'package:querya_desktop/features/redis/redis_view.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import 'package:querya_desktop/shared/widgets/querya_button.dart'; void main() { diff --git a/test/features/redis/redis_key_editor_test.dart b/test/features/redis/redis_key_editor_test.dart index 9f6f0e17..9086cdec 100644 --- a/test/features/redis/redis_key_editor_test.dart +++ b/test/features/redis/redis_key_editor_test.dart @@ -6,7 +6,8 @@ import 'package:querya_desktop/core/database/redis_bulk.dart'; import 'package:querya_desktop/core/database/redis_connection.dart'; import 'package:querya_desktop/features/redis/redis_key_editor.dart'; import 'package:querya_desktop/shared/widgets/widgets.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/features/redis/redis_type_editors_test.dart b/test/features/redis/redis_type_editors_test.dart index ca175dde..9a115067 100644 --- a/test/features/redis/redis_type_editors_test.dart +++ b/test/features/redis/redis_type_editors_test.dart @@ -8,7 +8,8 @@ import 'package:querya_desktop/features/redis/editors/redis_list_editor.dart'; import 'package:querya_desktop/features/redis/editors/redis_set_editor.dart'; import 'package:querya_desktop/features/redis/editors/redis_string_editor.dart'; import 'package:querya_desktop/features/redis/editors/redis_zset_editor.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import '../../support/querya_theme_test_shell.dart'; diff --git a/test/shared/app_toast_test.dart b/test/shared/app_toast_test.dart index 9a5c3df7..ee4f1a4b 100644 --- a/test/shared/app_toast_test.dart +++ b/test/shared/app_toast_test.dart @@ -2,7 +2,8 @@ import 'package:flutter/material.dart' as material; import 'package:flutter_test/flutter_test.dart'; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/shared/widgets/app_toast.dart'; -import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn; +import 'package:shadcn_flutter/shadcn_flutter.dart' as shadcn + hide TextExtension; import '../support/querya_theme_test_shell.dart'; From 69a5ce566525ff8073f6a6baa9573c5b0462c362 Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sun, 11 Oct 2026 16:23:41 +0300 Subject: [PATCH 3/3] style: child last in QueryaTextStyles calls (sort_child_properties_last) --- lib/shared/widgets/querya_text.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/shared/widgets/querya_text.dart b/lib/shared/widgets/querya_text.dart index 6ade3210..142e8598 100644 --- a/lib/shared/widgets/querya_text.dart +++ b/lib/shared/widgets/querya_text.dart @@ -37,33 +37,33 @@ extension QueryaTextStyles on material.Widget { /// One line, cut with an ellipsis. material.Widget ellipsis() => _QueryaStyledText( - child: this, overflow: material.TextOverflow.ellipsis, maxLines: 1, + child: this, ); /// The muted foreground colour. material.Widget muted() => _QueryaStyledText( - child: this, style: (context) => material.TextStyle(color: context.colors.mutedForeground), + child: this, ); /// The standard foreground colour. material.Widget foreground() => _QueryaStyledText( - child: this, style: (context) => material.TextStyle(color: context.colors.foreground), + child: this, ); material.Widget _fontSize(double size) => _QueryaStyledText( - child: this, style: (_) => material.TextStyle(fontSize: size), + child: this, ); material.Widget _weight(material.FontWeight weight) => _QueryaStyledText( - child: this, style: (_) => material.TextStyle(fontWeight: weight), + child: this, ); }