Atomic Flutter Kit
A modern atomic design system for Flutter applications following umituz.com standards. Built with Flutter 3.16+ and modern Dart patterns.
Features
- π¨ Modern Design Tokens: Colors, typography, spacing, shadows, borders, and animations
- π§± Atomic Components: Reusable UI components following atomic design principles
- π Performance Optimized: Built with Flutter best practices for 60fps performance
- π± Responsive: Mobile-first design with responsive utilities
- π Theme Support: Light/dark mode ready with customizable themes
- βΏ Accessible: WCAG 2.1 AA compliant components
- π TypeScript-like DX: Strongly typed with excellent IDE support
Installation
Add atomic_flutter_kit
to your pubspec.yaml
:
dependencies:
atomic_flutter_kit: ^0.12.2
Then run:
flutter pub get
Usage
Import the package
import 'package:atomic_flutter_kit/atomic_flutter_kit.dart';
Design Tokens
Colors
// Primary colors
AtomicColors.primary
AtomicColors.primaryLight
AtomicColors.primaryDark
// Semantic colors
AtomicColors.success
AtomicColors.warning
AtomicColors.error
AtomicColors.info
// Text colors
AtomicColors.textPrimary
AtomicColors.textSecondary
// Utility methods
AtomicColors.withAlpha(AtomicColors.primary, 0.5)
AtomicColors.primaryGradient
Spacing
// Spacing values
AtomicSpacing.xs // 8
AtomicSpacing.sm // 12
AtomicSpacing.md // 16
AtomicSpacing.lg // 24
// EdgeInsets helpers
AtomicSpacing.allMd
AtomicSpacing.horizontalLg
AtomicSpacing.symmetric(horizontal: AtomicSpacing.md, vertical: AtomicSpacing.sm)
Typography
// Text styles
AtomicTypography.headlineLarge
AtomicTypography.bodyMedium
AtomicTypography.labelSmall
// With colors
AtomicTypography.headlineLargePrimary
AtomicTypography.bodyMediumSecondary
Components
AtomicButton
AtomicButton(
label: 'Click Me',
onPressed: () {
// Handle press
},
variant: AtomicButtonVariant.primary,
size: AtomicButtonSize.medium,
icon: Icons.add,
isLoading: false,
isFullWidth: false,
)
AtomicCard
AtomicCard(
child: Text('Card content'),
padding: AtomicSpacing.allLg,
shadow: AtomicCardShadow.medium,
onTap: () {
// Handle tap
},
borderRadius: AtomicBorders.lg,
)
AtomicTextField
AtomicTextField(
controller: _controller,
label: 'Email',
hint: 'Enter your email',
prefixIcon: Icons.email,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Email is required';
}
return null;
},
borderType: AtomicTextFieldBorderType.outlined,
)
Example
import 'package:flutter/material.dart';
import 'package:atomic_flutter_kit/atomic_flutter_kit.dart';
class LoginScreen extends StatelessWidget {
final _emailController = TextEditingController();
final _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: AtomicSpacing.allXl,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Welcome Back',
style: AtomicTypography.headlineLargePrimary,
),
SizedBox(height: AtomicSpacing.xl),
AtomicCard(
child: Column(
children: [
AtomicTextField(
controller: _emailController,
label: 'Email',
prefixIcon: Icons.email,
keyboardType: TextInputType.emailAddress,
),
SizedBox(height: AtomicSpacing.md),
AtomicTextField(
controller: _passwordController,
label: 'Password',
prefixIcon: Icons.lock,
obscureText: true,
),
SizedBox(height: AtomicSpacing.lg),
AtomicButton(
label: 'Login',
onPressed: () {
// Handle login
},
isFullWidth: true,
),
],
),
),
],
),
),
);
}
}
Components Roadmap
β Available
Atoms (Basic Components)
- AtomicButton
- AtomicIconButton
- AtomicCard
- AtomicGradientContainer
- AtomicCollapseBox
- AtomicSmoothContainer / AtomicAnimatedSmoothContainer
- AtomicTextField
- AtomicSlider / AtomicRangeSlider
- AtomicSwitch
- AtomicCheckbox
- AtomicRadio
- AtomicIcon
- AtomicLoader
- AtomicChip
- AtomicShimmer
- AtomicBadge
- AtomicToast
- AtomicAlert
- AtomicTag
- AtomicProgress / AtomicProgressCard / AtomicStepProgress
- AtomicAvatar
- AtomicText
- AtomicImage / AtomicSvg
- AtomicDivider
- AtomicDialog
- AtomicBottomSheet
- AtomicTooltip / AtomicRichTooltip
Molecules (Combined Components)
- AtomicDropdown
- AtomicFormField
- AtomicNavigationBar / AtomicNavigationRail
- AtomicAppBar / AtomicSimpleAppBar / AtomicSearchAppBar
- AtomicListItem / AtomicUserListItem / AtomicIconListItem
- AtomicDatePicker / AtomicSimpleDatePicker / AtomicDateRangePicker
- AtomicTimePicker / AtomicSimpleTimePicker
π§ Coming Soon
Organisms
- AtomicDataTable
- AtomicForm
- AtomicLayout
- AtomicStepper
Contributing
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Maintainers
- Γmit UZ - umituz.com
Standards
This package follows:
- Flutter Mobile Standards
- Atomic Design Principles
- Material Design 3 Guidelines
- WCAG 2.1 AA Accessibility Standards
Libraries
- atomic_flutter_kit
- A comprehensive atomic design system for Flutter applications.
- atoms/containers/atomic_animated_container
- atoms/containers/atomic_card
- atoms/containers/atomic_collapse_box
- atoms/containers/atomic_gradient_container
- atoms/containers/atomic_icon_box
- atoms/containers/atomic_smooth_container
- atoms/display/atomic_avatar
- atoms/display/atomic_image
- atoms/display/atomic_text
- atoms/feedback/atomic_alert
- atoms/feedback/atomic_badge
- atoms/feedback/atomic_chip
- atoms/feedback/atomic_dot_loading
- atoms/feedback/atomic_loader
- atoms/feedback/atomic_progress
- atoms/feedback/atomic_shimmer
- atoms/feedback/atomic_tag
- atoms/feedback/atomic_toast
- atoms/icons/atomic_icon
- atoms/inputs/atomic_checkbox
- atoms/inputs/atomic_radio
- atoms/inputs/atomic_slider
- atoms/inputs/atomic_switch
- atoms/inputs/atomic_text_field
- atoms/overlays/atomic_bottom_sheet
- atoms/overlays/atomic_dialog
- atoms/overlays/atomic_divider
- atoms/overlays/atomic_tooltip
- models/action_list_item
- models/base_model
- models/bottom_bar_item
- models/icon_list_item
- models/select_list_item
- models/text_list_item
- molecules/forms/atomic_form_field
- molecules/inputs/atomic_dropdown
- molecules/layouts/atomic_stacked_body
- molecules/lists/atomic_list_item
- molecules/navigation/atomic_app_bar
- molecules/pickers/atomic_date_picker
- molecules/pickers/atomic_time_picker
- molecules/sheets/atomic_custom_sheet_body
- molecules/sheets/atomic_sheet_builder
- organisms/ai_assistant/atomic_ai_assistant
- organisms/auth/atomic_login_form
- organisms/auth/atomic_otp_form
- providers/sheet_select_controller
- providers/value_controller
- services/atomic_base_service
- services/atomic_haptic_service
- services/network/atomic_network_client
- services/network/interceptors/atomic_auth_interceptor
- services/network/interceptors/atomic_logging_interceptor
- services/network/network
- services/storage/atomic_memory_storage
- services/storage/atomic_secure_storage_example
- services/storage/atomic_storage_interface
- services/storage/storage
- templates/auth/atomic_auth_template
- templates/auth/atomic_auth_template_helper
- themes/atomic_theme_data
- themes/atomic_theme_provider
- tokens/animations/atomic_animations
- tokens/borders/atomic_borders
- tokens/colors/atomic_colors
- tokens/enums/atomic_gender
- tokens/enums/atomic_loading_state
- tokens/enums/atomic_otp_status
- tokens/enums/atomic_status
- tokens/icons/atomic_custom_icons
- tokens/shadows/atomic_shadows
- tokens/spacing/atomic_spacing
- tokens/typography/atomic_typography
- utilities/atomic_accessibility
- utilities/atomic_debouncer
- utilities/atomic_responsive
- utilities/atomic_responsive_utils
- utils/atomic_date_time_utils
- Comprehensive date and time utilities for Flutter applications.
- utils/extensions/bool_extension
- utils/extensions/clone_extension
- utils/extensions/extensions
- utils/extensions/list_extension
- utils/extensions/map_extension
- utils/svg_provider