bloom_ui 0.3.0 copy "bloom_ui: ^0.3.0" to clipboard
bloom_ui: ^0.3.0 copied to clipboard

Reusable, accessible, token-driven Flutter UI primitives inspired by shadcn/ui with zero runtime dependencies.

🌸 Bloom UI #

Reusable, accessible, token-driven Flutter UI primitives inspired by shadcn/ui.

Built with zero runtime dependencies beyond Flutter itself. Use as a package or copy-paste directly into your apps with the bloom ui CLI.


✨ Features #

  • 🎯 1-to-1 shadcn/ui Parity: Every component, variant, slot, and sizing scale calibrated to exact specifications.
  • πŸͺΆ Zero Dependencies: Pure Flutter canvas, render objects, and widgets β€” no third-party runtime bloat.
  • 🎨 Multi-Theme Engine: 8 out-of-the-box style themes (Nova, Vega, Maia, Lyra, Mira, Luma, Sera, Rhea) and full dark mode support.
  • πŸ“ Design Token System: Modular 4px spacing grid, typography scale, elevation shadows, and spring motion curves.
  • πŸ“Š Pure Dart Chart Suite: Area, Bar, Line, Pie, Radar, and Radial charts with responsive drag tooltips.
  • πŸ“‹ Copy-Paste or Package: Use bloom_ui from pub.flutter-io.cn or copy individual components with bloom ui add <name>.

πŸ“¦ Installation #

Add to your pubspec.yaml:

dependencies:
  bloom_ui: ^0.1.0

Or install via Flutter CLI:

flutter pub add bloom_ui

πŸš€ Quick Start #

1. Setup Theme #

Wrap your MaterialApp with the BloomTheme:

import 'package:flutter/material.dart';
import 'package:bloom_ui/bloom_ui.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Bloom App',
      theme: ThemeData(
        brightness: Brightness.light,
        extensions: const [BloomTheme.light], // or BloomTheme.novaLight, etc.
      ),
      darkTheme: ThemeData(
        brightness: Brightness.dark,
        extensions: const [BloomTheme.dark],
      ),
      home: const MyHomePage(),
    );
  }
}

2. Use Primitives #

import 'package:flutter/material.dart';
import 'package:bloom_ui/bloom_ui.dart';

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: BloomCard(
          header: const BloomCardHeader(
            title: BloomCardTitle('Create Project'),
            description: BloomCardDescription('Deploy your new Flutter app in one click.'),
          ),
          content: Column(
            children: [
              BloomField(
                label: const BloomFieldLabel('Project Name', required: true),
                child: BloomInput(
                  placeholder: 'my-awesome-app',
                  leading: const Icon(Icons.folder_outlined, size: 16),
                ),
              ),
              const SizedBox(height: 12),
              BloomField(
                label: const BloomFieldLabel('Framework Style'),
                child: BloomSelect<String>(
                  value: 'nova',
                  items: const [
                    BloomSelectItem(value: 'nova', label: 'Nova (Neutral & Crisp)'),
                    BloomSelectItem(value: 'vega', label: 'Vega (Warm Amber)'),
                    BloomSelectItem(value: 'lyra', label: 'Lyra (Tech Violet)'),
                  ],
                  onChanged: (val) {},
                ),
              ),
            ],
          ),
          footer: BloomCardFooter(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.end,
              children: [
                BloomButton(
                  variant: BloomButtonVariant.outline,
                  size: BloomButtonSize.sm,
                  onPressed: () {},
                  child: const Text('Cancel'),
                ),
                const SizedBox(width: 8),
                BloomButton(
                  variant: BloomButtonVariant.defaultVariant,
                  size: BloomButtonSize.sm,
                  onPressed: () {
                    BloomSonner.success(context, 'Project created successfully!');
                  },
                  child: const Text('Deploy'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

πŸ› οΈ CLI Copy-Paste Workflow #

If you prefer copying components directly into your codebase (shadcn-style):

# List all available primitives
bloom ui list

# Copy a single primitive + tokens to lib/bloom_ui/
bloom ui add button
bloom ui add chart
bloom ui add dialog

# Copy the entire component library
bloom ui add all

# Initialize theme tokens only
bloom ui init

🧩 Component Suite #

Category Primitives
Form Controls BloomButton, BloomButtonGroup, BloomInput, BloomInputGroup, BloomInputOtp, BloomTextarea, BloomLabel, BloomCheckbox, BloomRadio, BloomSwitch, BloomSlider, BloomSelect, BloomNativeSelect, BloomCombobox, BloomToggle, BloomToggleGroup, BloomCalendar, BloomField, BloomForm
Layout & Structure BloomAccordion, BloomCollapsible, BloomTabs, BloomSeparator, BloomScrollArea, BloomResizable, BloomAspectRatio, BloomSkeleton, BloomProgress, BloomSpinner
Feedback & Overlays BloomAlert, BloomAlertDialog, BloomDialog, BloomSheet, BloomDrawer, BloomPopover, BloomTooltip, BloomHoverCard, BloomDropdownMenu, BloomContextMenu, BloomMenubar, BloomToast, BloomSonner, BloomDirection
Data Display & AI BloomAvatar, BloomBadge, BloomCard, BloomEmpty, BloomItem, BloomKbd, BloomMarker, BloomTable, BloomDataTable, BloomPagination, BloomBreadcrumb, BloomNavigationMenu, BloomSidebar, BloomCarousel, BloomMessage, BloomBubble, BloomAttachment, BloomMessageScroller, BloomQuestionnaire
Pure Dart Charts BloomChart (Area, Bar, Line, Pie, Radar, Radial) with interactive tooltip tracking
Composites & Shells BloomCommandPalette, BloomMultiSelect, BloomTagsInput, BloomPhoneInput, BloomSearchBar, BloomFilterBar, BloomSettingsList, BloomPricingCard, BloomAuthForm, BloomAppShell, BloomDashboardShell

πŸ“„ License #

MIT Β© Bloom Framework Authors

0
likes
150
points
259
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Reusable, accessible, token-driven Flutter UI primitives inspired by shadcn/ui with zero runtime dependencies.

Repository (GitHub)
View/report issues

Topics

#ui #flutter #components #widget #shadcn

License

MIT (license)

Dependencies

flutter

More

Packages that depend on bloom_ui