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/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
- widgets/alertmanager/alert_manager
- widgets/animation_trigger
- widgets/avatar.widget
- widgets/buttons/cl_action_text.widget
- widgets/buttons/cl_confirm_dialog
- 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/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_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_container.widget
- widgets/cl_divider.widget
- widgets/cl_dropdown/cl_dropdown
- widgets/cl_dropdown/dropdown_state
- 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_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_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/stats.widget
- widgets/table_action_item.widget
- widgets/textfield_validator
- widgets/time_input_field.widget
- widgets/video_player.widget