CL Components

UI component library for Flutter projects. Works out of the box with sensible defaults, fully customizable via CLThemeProvider.

Installation

dependencies:
  genai_components: ^2.0.0

Or from GitHub:

dependencies:
  genai_components:
    git:
      url: git@github.com:generazione-ai/genai_components.git
      ref: stable

Quick Start

Import and use — no setup required, default theme is applied automatically:

import 'package:genai_components/genai_components.dart';

// Usa i componenti direttamente, il tema default viene usato
CLButton(text: 'Click me', onPressed: () {});

Custom Theme

Wrap il tuo widget tree con CLThemeProvider per personalizzare i colori:

import 'package:genai_components/genai_components.dart';
import 'package:provider/provider.dart';

ChangeNotifierProvider(
  create: (_) => CLThemeProvider(
    lightTheme: const LightModeTheme(
      primary: Color(0xFFFF5722),
      secondary: Color(0xFFE64A19),
      success: Color(0xFF4CAF50),
      // ... tutti i colori sono opzionali, hanno default sensati
    ),
    darkTheme: const DarkModeTheme(
      primary: Color(0xFFFF7043),
      secondary: Color(0xFFFF5722),
    ),
  ),
  child: MaterialApp(...),
)

Fully Custom Theme (subclass)

Per controllo totale, estendi CLTheme:

class MyAppLightTheme extends CLTheme {
  const MyAppLightTheme() : super(
    primary: Color(0xFFFF5722),
    secondary: Color(0xFFE64A19),
    alternate: Color(0xFFE8EBF0),
    primaryText: Color(0xFF2E2E38),
    secondaryText: Color(0xFF6B7080),
    primaryBackground: Color(0xFFFAF9F7),
    secondaryBackground: Color(0xFFFFFFFF),
    tertiaryBackground: Color(0xFFF0F1F4),
    success: Color(0xFF16A34A),
    warning: Color(0xFFD97706),
    danger: Color(0xFFDC2626),
    info: Color(0xFF0C8EC7),
    borderColor: Color(0xFFE8EBF0),
    background: Color(0xFFFAF9F7),
    fillColor: Color(0xFFF0F1F4),
  );

  // Override typography if needed
  @override
  Typography get typography => MyCustomTypography(this);
}

Access Theme in Widgets

final theme = CLTheme.of(context);

Text('Hello', style: theme.heading1);
Container(color: theme.primary);

Update Theme at Runtime

final provider = Provider.of<CLThemeProvider>(context, listen: false);
provider.updateThemes(
  light: const LightModeTheme(primary: Color(0xFF9C27B0)),
);

Local Development

Use the cl CLI tool in your project:

./cl dev     # Link local package
./cl prod    # Switch back to GitHub
./cl push "msg"  # Push changes
./cl pull    # Pull latest

Libraries

api/api_manager
app/cl_app
app/cl_app_config
auth/cl_auth_state
auth/cl_tenant
auth/cl_user_info
cl_theme
core_models/app_error.model
core_models/city.model
core_models/country.model
core_models/languages.model
core_models/media.model
core_models/notification.model
core_models/province.model
core_models/state.model
core_models/tolerances.model
core_models/upload_file.model
core_utils/base_viewmodel
core_utils/download_extension_stub
core_utils/download_extension_web
core_utils/extension.util
core_utils/pretty_json.util
core_utils/serialization_util
enums/resource_type.enum
genai_components
CL Components — UI component library for Generazione AI projects.
layout/ai_chat_drawer.widget
layout/app.layout
layout/constants/sizes.constant
layout/footer.layout
layout/header.layout
layout/notifications_panel.layout
models/city_graph_data.model
models/pageaction.model
models/user_graph_data.model
pages/error_page
providers/app_state
providers/error_state
providers/notifications_panel_provider
providers/theme_provider
router/go_router_modular/cl_path_utils
router/go_router_modular/go_router_modular_configure
router/go_router_modular/module
router/go_router_modular/page_transition_enum
router/go_router_modular/route_registry
router/go_router_modular/routes/child_route
router/go_router_modular/routes/cl_route
router/go_router_modular/routes/modular_route
router/go_router_modular/routes/module_route
router/go_router_modular/routes/shell_modular_route
router/go_router_modular/transition
router/page_data
router/resume_observer
utils/download_extension_io
utils/models/custom_model.model
utils/models/pagination.model
utils/providers/cl_theme.provider
utils/providers/module_theme.util.provider
utils/shared_manager.util
widgets/alertmanager/alert_manager
widgets/animation_trigger
widgets/avatar.widget
widgets/buttons/cl_action_text.widget
widgets/buttons/cl_button.widget
widgets/buttons/cl_confirm_dialog
widgets/buttons/cl_ghost_button.widget
widgets/buttons/cl_outline_button.widget
widgets/buttons/cl_soft_button.widget
widgets/charts/cl_bar_chart.widget
widgets/cl_ai_assistant/flutter_ai_assistant
Drop-in AI assistant for any Flutter app.
widgets/cl_ai_assistant/src/action/action_executor
widgets/cl_ai_assistant/src/action/scroll_handler
widgets/cl_ai_assistant/src/context/ai_navigator_observer
widgets/cl_ai_assistant/src/context/context_cache
widgets/cl_ai_assistant/src/context/context_invalidator
widgets/cl_ai_assistant/src/context/route_discovery
widgets/cl_ai_assistant/src/context/screen_context
widgets/cl_ai_assistant/src/context/screenshot_capture
widgets/cl_ai_assistant/src/context/semantics_walker
widgets/cl_ai_assistant/src/core/ai_assistant
widgets/cl_ai_assistant/src/core/ai_assistant_config
widgets/cl_ai_assistant/src/core/ai_assistant_controller
widgets/cl_ai_assistant/src/core/ai_event
Comprehensive analytics event system for the AI Assistant.
widgets/cl_ai_assistant/src/core/ai_logger
widgets/cl_ai_assistant/src/llm/conversation_memory
widgets/cl_ai_assistant/src/llm/llm_provider
widgets/cl_ai_assistant/src/llm/providers/claude_provider
widgets/cl_ai_assistant/src/llm/providers/gemini_provider
widgets/cl_ai_assistant/src/llm/providers/openai_provider
widgets/cl_ai_assistant/src/llm/react_agent
widgets/cl_ai_assistant/src/manifest/ai_action_manifest
widgets/cl_ai_assistant/src/manifest/ai_app_manifest
widgets/cl_ai_assistant/src/manifest/ai_element_manifest
widgets/cl_ai_assistant/src/manifest/ai_flow_manifest
widgets/cl_ai_assistant/src/manifest/ai_nav_entry
widgets/cl_ai_assistant/src/manifest/ai_screen_manifest
widgets/cl_ai_assistant/src/manifest/ai_section_manifest
widgets/cl_ai_assistant/src/manifest/manifest
widgets/cl_ai_assistant/src/models/action_step
widgets/cl_ai_assistant/src/models/agent_action
widgets/cl_ai_assistant/src/models/app_context_snapshot
widgets/cl_ai_assistant/src/models/chat_content
widgets/cl_ai_assistant/src/models/chat_message
widgets/cl_ai_assistant/src/models/ui_element
widgets/cl_ai_assistant/src/tools/built_in_tools
widgets/cl_ai_assistant/src/tools/tool_definition
widgets/cl_ai_assistant/src/tools/tool_registry
widgets/cl_ai_assistant/src/tools/tool_result
widgets/cl_ai_assistant/src/ui/action_feed_overlay
widgets/cl_ai_assistant/src/ui/chat_bubble
widgets/cl_ai_assistant/src/ui/chat_overlay
widgets/cl_ai_assistant/src/ui/handoff_indicator
widgets/cl_ai_assistant/src/ui/response_popup
widgets/cl_ai_assistant/src/voice/voice_input_service
widgets/cl_ai_assistant/src/voice/voice_output_service
widgets/cl_ai_assistant_dialog.widget
widgets/cl_alert.widget
widgets/cl_announcement/cl_announcement_widget
widgets/cl_announcement/cl_announcemet.model
widgets/cl_card.widget
widgets/cl_checkbox.widget
widgets/cl_clipboard.widget
widgets/cl_code_text.widget
widgets/cl_confirm_refuse_buttons.widget
widgets/cl_container.widget
widgets/cl_divider.widget
widgets/cl_dropdown/cl_dropdown
widgets/cl_faq/cl_faq
widgets/cl_faq/models/cl_faq.model
widgets/cl_faq/models/cl_faq_category.model
widgets/cl_file_picker.widget
widgets/cl_info_banner.widget
widgets/cl_lifecycle_progress.widget
widgets/cl_media_viewer.widget
widgets/cl_month_calendar.widget
widgets/cl_org_chart/org_chart
widgets/cl_org_chart/src/base/base_controller
widgets/cl_org_chart/src/base/base_graph
widgets/cl_org_chart/src/base/base_graph_constants
widgets/cl_org_chart/src/base/edge_painter_utils
widgets/cl_org_chart/src/common/custom_animated_positioned
widgets/cl_org_chart/src/common/exporting
widgets/cl_org_chart/src/common/node
widgets/cl_org_chart/src/common/node_builder_details
widgets/cl_org_chart/src/common/quadtree
widgets/cl_org_chart/src/common/quadtree_constants
widgets/cl_org_chart/src/genogram/edge_painter
widgets/cl_org_chart/src/genogram/genogram
widgets/cl_org_chart/src/genogram/genogram_constants
widgets/cl_org_chart/src/genogram/genogram_controller
widgets/cl_org_chart/src/genogram/genogram_edge_config
widgets/cl_org_chart/src/genogram/genogram_enums
widgets/cl_org_chart/src/genogram/marriage_style
widgets/cl_org_chart/src/orgchart/edge_painter
widgets/cl_org_chart/src/orgchart/mixins/node_modification_mixin
widgets/cl_org_chart/src/orgchart/mixins/node_positioning_mixin
widgets/cl_org_chart/src/orgchart/mixins/node_query_mixin
widgets/cl_org_chart/src/orgchart/org_chart
widgets/cl_org_chart/src/orgchart/org_chart_constants
widgets/cl_org_chart/src/orgchart/org_chart_controller
widgets/cl_page_header.widget
widgets/cl_pagination.widget
widgets/cl_pdf_viewer.widget
widgets/cl_pill.widget
widgets/cl_popup_menu.widget
widgets/cl_responsive_grid/flutter_responsive_flex_grid
widgets/cl_role_badge.widget
widgets/cl_section_card.widget
widgets/cl_shimmer.widget
widgets/cl_status_badge.widget
widgets/cl_survey/answer_choice_widget
widgets/cl_survey/cl_survey_builder.widget
widgets/cl_survey/cl_survey_result_viewer.widget
widgets/cl_survey/cl_survey_viewer.widget
widgets/cl_survey/models/option
widgets/cl_survey/models/question
widgets/cl_survey/models/question_result
widgets/cl_survey/question_card
widgets/cl_survey/survey
widgets/cl_survey/survey.state
widgets/cl_survey/survey_form_field
widgets/cl_tabs/cl_tab_item.model
widgets/cl_tabs/cl_tab_view.widget
widgets/cl_text_field.widget
widgets/cl_view_toggle.widget
widgets/clock/analogclock
widgets/clock/ClockPainter
widgets/clock/clockpainter
widgets/clock/digitalclock
widgets/customexpansiontile.widget
widgets/date_input_field.widget
widgets/detail_element.widget
widgets/excerpt_text.widget
widgets/fiscal_code_calculator
widgets/formatters/date_mask_formatter
widgets/gradient_background.widget
widgets/loading.widget
widgets/logo.widget
widgets/page_with_header_spacing.widget
widgets/paged_datatable/paged_datatable
widgets/social_button.widget
widgets/stats.widget
widgets/table_action_item.widget
widgets/textfield_validator
widgets/time_input_field.widget
widgets/video_player.widget