embeddedBrickFiles top-level constant

Map<String, Map<String, String>> const embeddedBrickFiles

Implementation

const Map<String, Map<String, String>> embeddedBrickFiles = {
  "app_scaffold": {
    "__brick__/.gitignore":
        r'''# FlutterStart staging and snapshot directories (FR-135)
.flutterstart/staging/
.flutterstart/snapshots/

# Dart and Flutter defaults
.dart_tool/
.packages
.pub-cache/
.pub/
build/

# Freezed & json_serializable generated files
*.freezed.dart
*.g.dart
''',
    "__brick__/README.md": r'''# {{project_name}}

{{description}}

Generated with FlutterStart (Feature-First architecture).

Org: `{{org_identifier}}`

{{#platform_android}}
- Android target enabled
{{/platform_android}}
{{#platform_ios}}
- iOS target enabled
{{/platform_ios}}
{{#platform_web}}
- Web target enabled
{{/platform_web}}
{{#platform_macos}}
- macOS target enabled
{{/platform_macos}}
{{#platform_windows}}
- Windows target enabled
{{/platform_windows}}
{{#platform_linux}}
- Linux target enabled
{{/platform_linux}}
''',
    "__brick__/analysis_options.yaml":
        r'''include: package:flutter_lints/flutter.yaml

linter:
  rules:
    prefer_const_constructors: true
    prefer_const_declarations: true
''',
    "__brick__/lib/core/network/api_client.dart":
        r'''import 'package:dio/dio.dart';

class ApiClient {
  final Dio dio;

  ApiClient(this.dio);

  Future<Response<T>> get<T>(String path) {
    return dio.get<T>(path);
  }
}
''',
    "__brick__/lib/di/injection.dart": r'''import 'package:get_it/get_it.dart';
import 'package:dio/dio.dart';
import 'package:{{project_name}}/core/network/api_client.dart';
import 'package:{{project_name}}/features/sample/data/repositories/sample_repository.dart';
import 'package:{{project_name}}/features/sample/presentation/sample_cubit.dart';

final getIt = GetIt.instance;

void configureDependencies() {
  // Core
  getIt.registerLazySingleton<Dio>(() => Dio());
  getIt.registerLazySingleton<ApiClient>(() => ApiClient(getIt<Dio>()));

  // Features - Sample
  getIt.registerLazySingleton<SampleRepository>(
    () => SampleRepository(getIt<ApiClient>()),
  );
  getIt.registerFactory<SampleCubit>(
    () => SampleCubit(getIt<SampleRepository>()),
  );
}
''',
    "__brick__/lib/features/sample/data/repositories/sample_repository.dart":
        r'''import 'package:{{project_name}}/core/network/api_client.dart';
import 'package:{{project_name}}/features/sample/domain/models/sample_item.dart';

class SampleRepository {
  final ApiClient apiClient;

  SampleRepository(this.apiClient);

  Future<List<SampleItem>> getSampleItems() async {
    return const [
      SampleItem(id: '1', title: 'Sample Item 1'),
      SampleItem(id: '2', title: 'Sample Item 2'),
    ];
  }
}
''',
    "__brick__/lib/features/sample/domain/models/sample_item.dart":
        r'''import 'package:freezed_annotation/freezed_annotation.dart';

part 'sample_item.freezed.dart';
part 'sample_item.g.dart';

@freezed
class SampleItem with _$SampleItem {
  const factory SampleItem({
    required String id,
    required String title,
  }) = _SampleItem;

  factory SampleItem.fromJson(Map<String, dynamic> json) =>
      _$SampleItemFromJson(json);
}
''',
    "__brick__/lib/features/sample/presentation/sample_cubit.dart":
        r'''import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:{{project_name}}/features/sample/data/repositories/sample_repository.dart';
import 'package:{{project_name}}/features/sample/presentation/sample_state.dart';

class SampleCubit extends Cubit<SampleState> {
  final SampleRepository repository;

  SampleCubit(this.repository) : super(const SampleState.initial());

  Future<void> loadItems() async {
    emit(const SampleState.loading());
    try {
      final items = await repository.getSampleItems();
      emit(SampleState.success(items));
    } catch (e) {
      emit(SampleState.failure(e.toString()));
    }
  }
}
''',
    "__brick__/lib/features/sample/presentation/sample_screen.dart":
        r'''import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:{{project_name}}/di/injection.dart';
import 'package:{{project_name}}/features/sample/presentation/sample_cubit.dart';
import 'package:{{project_name}}/features/sample/presentation/sample_state.dart';

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

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (_) => getIt<SampleCubit>()..loadItems(),
      child: Scaffold(
        appBar: AppBar(
          title: const Text('Sample Feature'),
        ),
        body: BlocBuilder<SampleCubit, SampleState>(
          builder: (context, state) {
            return state.when(
              initial: () => const Center(child: Text('Initial')),
              loading: () => const Center(child: CircularProgressIndicator()),
              success: (items) => ListView.builder(
                itemCount: items.length,
                itemBuilder: (context, index) => ListTile(
                  title: Text(items[index].title),
                  subtitle: Text('ID: ${items[index].id}'),
                ),
              ),
              failure: (msg) => Center(child: Text('Error: $msg')),
            );
          },
        ),
      ),
    );
  }
}
''',
    "__brick__/lib/features/sample/presentation/sample_state.dart":
        r'''import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:{{project_name}}/features/sample/domain/models/sample_item.dart';

part 'sample_state.freezed.dart';

@freezed
class SampleState with _$SampleState {
  const factory SampleState.initial() = _Initial;
  const factory SampleState.loading() = _Loading;
  const factory SampleState.success(List<SampleItem> items) = _Success;
  const factory SampleState.failure(String message) = _Failure;
}
''',
    "__brick__/lib/main.dart": r'''import 'package:flutter/material.dart';
import 'package:{{project_name}}/di/injection.dart';
import 'package:{{project_name}}/router/app_router.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  configureDependencies();
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: '{{project_name}}',
      routerConfig: appRouter,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
    );
  }
}
''',
    "__brick__/lib/router/app_router.dart":
        r'''import 'package:go_router/go_router.dart';
import 'package:{{project_name}}/features/sample/presentation/sample_screen.dart';

final GoRouter appRouter = GoRouter(
  initialLocation: '/',
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => const SampleScreen(),
    ),
  ],
);
''',
    "__brick__/pubspec.yaml": r'''name: {{project_name}}
description: "{{description}}"
publish_to: "none"
version: 0.1.0+1

environment:
  sdk: ^3.11.0

dependencies:
  flutter:
    sdk: flutter
  flutter_bloc: ^9.0.0
  go_router: ^14.0.0
  get_it: ^8.0.0
  dio: ^5.0.0
  freezed_annotation: ^2.4.1
  json_annotation: ^4.9.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^5.0.0
  build_runner: ^2.4.0
  freezed: ^2.5.0
  json_serializable: ^6.8.0

flutter:
  uses-material-design: true
''',
    "__brick__/test/widget_test.dart":
        r'''import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:{{project_name}}/di/injection.dart';
import 'package:{{project_name}}/main.dart';

void main() {
  setUp(configureDependencies);
  tearDown(() => getIt.reset());

  testWidgets('App builds and renders the sample screen', (tester) async {
    await tester.pumpWidget(const MyApp());
    await tester.pump();

    expect(find.byType(MaterialApp), findsOneWidget);
    expect(find.text('Sample Feature'), findsOneWidget);
  });
}
''',
    "brick.yaml": r'''name: app_scaffold
description: Official FlutterStart Feature-First app scaffold brick.
version: 0.1.0
environment:
  mason: "0.1.2"
vars:
  project_name:
    type: string
    description: The Dart package/app name
    default: my_app
  description:
    type: string
    description: The app description
    default: A new Flutter project.
  org_identifier:
    type: string
    description: Reverse-domain org identifier
    default: com.example
  platform_android:
    type: boolean
    description: Target Android platform
    default: true
  platform_ios:
    type: boolean
    description: Target iOS platform
    default: true
  platform_web:
    type: boolean
    description: Target Web platform
    default: false
  platform_macos:
    type: boolean
    description: Target macOS platform
    default: false
  platform_windows:
    type: boolean
    description: Target Windows platform
    default: false
  platform_linux:
    type: boolean
    description: Target Linux platform
    default: false
''',
  },
  "foundation_app_initialization/bootstrap": {
    "__brick__/lib/foundation/app_initialization.dart":
        r'''import 'app_logging.dart';

abstract final class AppInitialization {
  static Future<void> initialize() async {
    AppLogger.info('Application bootstrap complete');
  }
}
''',
    "brick.yaml": r'''name: foundation_app_initialization_bootstrap
description: Ordered bootstrap application initialization.
version: 0.3.0
environment:
  mason: "0.1.2"
''',
  },
  "foundation_app_initialization/production_bootstrap": {
    "__brick__/lib/foundation/app_initialization.dart":
        r'''import 'app_logging.dart';

abstract final class AppInitialization {
  static Future<void> initialize() async {
    AppLogger.info('Production bootstrap complete');
  }
}
''',
    "brick.yaml": r'''name: foundation_app_initialization_production_bootstrap
description: Guarded production bootstrap application initialization.
version: 0.3.0
environment:
  mason: "0.1.2"
''',
  },
  "foundation_app_initialization/simple": {
    "__brick__/lib/foundation/app_initialization.dart":
        r'''abstract final class AppInitialization {
  static Future<void> initialize() async {}
}
''',
    "brick.yaml": r'''name: foundation_app_initialization_simple
description: Simple application initialization.
version: 0.3.0
environment:
  mason: "0.1.2"
''',
  },
  "foundation_base": {
    "__brick__/lib/foundation/app_initialization.dart":
        r'''abstract final class AppInitialization {
  static Future<void> initialize() async {}
}
''',
    "__brick__/lib/foundation/app_localization.dart":
        r'''import 'package:flutter/material.dart';

abstract final class AppLocalization {
  static Future<void> initialize() async {}

  static Widget wrap(Widget child) => child;

  static Iterable<LocalizationsDelegate<dynamic>> delegates(
    BuildContext context,
  ) => const [];

  static const locales = [Locale('en')];
}
''',
    "__brick__/lib/foundation/app_logging.dart":
        r'''abstract final class AppLogger {
  static void info(Object? message) {}

  static void error(Object? error, StackTrace stackTrace) {}
}
''',
    "__brick__/lib/foundation/app_theme.dart":
        r'''import 'package:flutter/material.dart';

abstract final class AppTheme {
  static ThemeData get value => ThemeData(
    colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
    useMaterial3: true,
  );
}
''',
    "__brick__/lib/foundation/environment_config.dart":
        r'''abstract final class EnvironmentConfig {
  static Future<void> initialize() async {}

  static const apiBaseUrl = '';
}
''',
    "__brick__/lib/foundation/error_boundary.dart":
        r'''abstract final class ErrorBoundary {
  static void run(void Function() body) => body();
}
''',
    "__brick__/lib/foundation/flavors.dart": r'''enum AppFlavor { production }

extension AppFlavorDetails on AppFlavor {
  String get suffix => '';
}

abstract final class AppFlavorConfig {
  static const current = AppFlavor.production;
}
''',
    "__brick__/lib/main.dart": r'''import 'package:flutter/material.dart';
import 'package:{{project_name}}/di/injection.dart';
import 'package:{{project_name}}/foundation/app_initialization.dart';
import 'package:{{project_name}}/foundation/app_localization.dart';
import 'package:{{project_name}}/foundation/app_theme.dart';
import 'package:{{project_name}}/foundation/environment_config.dart';
import 'package:{{project_name}}/foundation/error_boundary.dart';
import 'package:{{project_name}}/foundation/flavors.dart';
import 'package:{{project_name}}/router/app_router.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await EnvironmentConfig.initialize();
  await AppLocalization.initialize();
  await AppInitialization.initialize();
  configureDependencies();
  ErrorBoundary.run(() => runApp(AppLocalization.wrap(const MyApp())));
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: '{{project_name}}${AppFlavorConfig.current.suffix}',
      routerConfig: appRouter,
      theme: AppTheme.value,
      localizationsDelegates: AppLocalization.delegates(context),
      supportedLocales: AppLocalization.locales,
    );
  }
}
''',
    "brick.yaml": r'''name: foundation_base
description: Shared integration surface for selected application foundation recipes.
version: 0.3.0
environment:
  mason: "0.1.2"
vars:
  project_name:
    type: string
    description: The Dart package/app name
    default: my_app
''',
  },
  "foundation_environment_config/dart_define": {
    "__brick__/lib/foundation/environment_config.dart":
        r'''abstract final class EnvironmentConfig {
  static Future<void> initialize() async {}

  static const apiBaseUrl = String.fromEnvironment(
    'API_BASE_URL',
    defaultValue: '',
  );
}
''',
    "brick.yaml": r'''name: foundation_environment_config_dart_define
description: Dart-define environment configuration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_environment_config/envied": {
    "__brick__/.env": r'''API_BASE_URL=
''',
    "__brick__/lib/foundation/environment_config.dart":
        r'''import 'package:envied/envied.dart';

part 'environment_config.g.dart';

@Envied(path: '.env')
abstract final class Env {
  @EnviedField(varName: 'API_BASE_URL', defaultValue: '')
  static const String apiBaseUrl = _Env.apiBaseUrl;
}

abstract final class EnvironmentConfig {
  static Future<void> initialize() async {}

  static const apiBaseUrl = Env.apiBaseUrl;
}
''',
    "brick.yaml": r'''name: foundation_environment_config_envied
description: Envied environment configuration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_environment_config/flutter_dotenv": {
    "__brick__/.env": r'''API_BASE_URL=
''',
    "__brick__/lib/foundation/environment_config.dart":
        r'''import 'package:flutter_dotenv/flutter_dotenv.dart';

abstract final class EnvironmentConfig {
  static Future<void> initialize() => dotenv.load();

  static String get apiBaseUrl => dotenv.env['API_BASE_URL'] ?? '';
}
''',
    "brick.yaml": r'''name: foundation_environment_config_flutter_dotenv
description: Flutter dotenv environment configuration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_error_handling/basic": {
    "__brick__/lib/foundation/error_boundary.dart":
        r'''import 'app_logging.dart';

abstract final class ErrorBoundary {
  static void run(void Function() body) {
    try {
      body();
    } on Object catch (error, stackTrace) {
      AppLogger.error(error, stackTrace);
    }
  }
}
''',
    "brick.yaml": r'''name: foundation_error_handling_basic
description: Basic exception handling for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_error_handling/failure_result": {
    "__brick__/lib/foundation/error_boundary.dart":
        r'''abstract final class ErrorBoundary {
  static void run(void Function() body) => body();
}

sealed class Result<T> {
  const Result();
}

final class Success<T> extends Result<T> {
  const Success(this.value);

  final T value;
}

final class Failure<T> extends Result<T> {
  const Failure(this.error, [this.stackTrace]);

  final Object error;
  final StackTrace? stackTrace;
}
''',
    "brick.yaml": r'''name: foundation_error_handling_failure_result
description: Failure and result types for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_error_handling/global_boundary": {
    "__brick__/lib/foundation/error_boundary.dart": r'''import 'dart:async';
import 'package:flutter/foundation.dart';

import 'app_logging.dart';

abstract final class ErrorBoundary {
  static void run(void Function() body) {
    FlutterError.onError = (details) {
      FlutterError.presentError(details);
      AppLogger.error(details.exception, details.stack ?? StackTrace.current);
    };
    PlatformDispatcher.instance.onError = (error, stackTrace) {
      AppLogger.error(error, stackTrace);
      return true;
    };
    runZonedGuarded(body, AppLogger.error);
  }
}
''',
    "brick.yaml": r'''name: foundation_error_handling_global_boundary
description: Global Flutter and Dart error boundary for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_flavors/advanced": {
    "__brick__/android/app/build.gradle.kts": r'''plugins {
    id("com.android.application")
    id("kotlin-android")
    id("dev.flutter.flutter-gradle-plugin")
}

android {
    namespace = "{{org_identifier}}.{{project_name}}"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = flutter.ndkVersion

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString()
    }

    defaultConfig {
        applicationId = "{{org_identifier}}.{{project_name}}"
        minSdk = flutter.minSdkVersion
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }

    flavorDimensions += "environment"
    productFlavors {
        create("development") {
            dimension = "environment"
            applicationIdSuffix = ".dev"
            resValue("string", "app_name", "{{project_name}} Dev")
        }
        create("uat") {
            dimension = "environment"
            applicationIdSuffix = ".uat"
            resValue("string", "app_name", "{{project_name}} UAT")
        }
        create("production") {
            dimension = "environment"
            resValue("string", "app_name", "{{project_name}}")
        }
    }

    buildTypes {
        release {
            signingConfig = signingConfigs.getByName("debug")
        }
    }
}

flutter {
    source = "../.."
}
''',
    "__brick__/android/app/src/main/AndroidManifest.xml":
        r'''<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:label="@string/app_name"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:taskAffinity=""
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <meta-data android:name="flutterEmbedding" android:value="2" />
    </application>
    <queries>
        <intent>
            <action android:name="android.intent.action.PROCESS_TEXT"/>
            <data android:mimeType="text/plain"/>
        </intent>
    </queries>
</manifest>
''',
    "__brick__/android/app/src/development/res/values/strings.xml":
        r'''<resources>
    <string name="app_name">{{project_name}} Dev</string>
</resources>
''',
    "__brick__/android/app/src/uat/res/values/strings.xml": r'''<resources>
    <string name="app_name">{{project_name}} UAT</string>
</resources>
''',
    "__brick__/ios/Flutter/Development.xcconfig":
        r'''#include "Generated.xcconfig"
FLUTTER_TARGET=lib/main.dart
DART_DEFINES=RkxBVk9SPWRldmVsb3BtZW50
''',
    "__brick__/ios/Flutter/Uat.xcconfig": r'''#include "Generated.xcconfig"
FLUTTER_TARGET=lib/main.dart
DART_DEFINES=RkxBVk9SPXVhdA==
''',
    "__brick__/ios/Runner.xcodeproj/xcshareddata/xcschemes/development.xcscheme":
        r'''<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion="1510" version="1.3">
  <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES"><BuildActionEntries><BuildActionEntry buildForTesting="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForAnalyzing="YES"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildActionEntry></BuildActionEntries></BuildAction>
  <TestAction buildConfiguration="Debug-development" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv="YES"/>
  <LaunchAction buildConfiguration="Debug-development" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle="0" useCustomWorkingDirectory="NO" ignoresPersistentStateOnLaunch="NO" debugDocumentVersioning="YES" allowLocationSimulation="YES"><BuildableProductRunnable runnableDebuggingMode="0"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildableProductRunnable></LaunchAction>
  <ProfileAction buildConfiguration="Profile-development" shouldUseLaunchSchemeArgsEnv="YES" savedToolIdentifier="" useCustomWorkingDirectory="NO" debugDocumentVersioning="YES"/>
  <AnalyzeAction buildConfiguration="Debug-development"/>
  <ArchiveAction buildConfiguration="Release-development" revealArchiveInOrganizer="YES"/>
</Scheme>
''',
    "__brick__/ios/Runner.xcodeproj/xcshareddata/xcschemes/production.xcscheme":
        r'''<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion="1510" version="1.3">
  <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES"><BuildActionEntries><BuildActionEntry buildForTesting="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForAnalyzing="YES"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildActionEntry></BuildActionEntries></BuildAction>
  <TestAction buildConfiguration="Debug-production" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv="YES"/>
  <LaunchAction buildConfiguration="Debug-production" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle="0" useCustomWorkingDirectory="NO" ignoresPersistentStateOnLaunch="NO" debugDocumentVersioning="YES" allowLocationSimulation="YES"><BuildableProductRunnable runnableDebuggingMode="0"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildableProductRunnable></LaunchAction>
  <ProfileAction buildConfiguration="Profile-production" shouldUseLaunchSchemeArgsEnv="YES" savedToolIdentifier="" useCustomWorkingDirectory="NO" debugDocumentVersioning="YES"/>
  <AnalyzeAction buildConfiguration="Debug-production"/>
  <ArchiveAction buildConfiguration="Release-production" revealArchiveInOrganizer="YES"/>
</Scheme>
''',
    "__brick__/ios/Runner.xcodeproj/xcshareddata/xcschemes/uat.xcscheme":
        r'''<?xml version="1.0" encoding="UTF-8"?>
<Scheme LastUpgradeVersion="1510" version="1.3">
  <BuildAction parallelizeBuildables="YES" buildImplicitDependencies="YES"><BuildActionEntries><BuildActionEntry buildForTesting="YES" buildForRunning="YES" buildForProfiling="YES" buildForArchiving="YES" buildForAnalyzing="YES"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildActionEntry></BuildActionEntries></BuildAction>
  <TestAction buildConfiguration="Debug-uat" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv="YES"/>
  <LaunchAction buildConfiguration="Debug-uat" selectedDebuggerIdentifier="Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB" launchStyle="0" useCustomWorkingDirectory="NO" ignoresPersistentStateOnLaunch="NO" debugDocumentVersioning="YES" allowLocationSimulation="YES"><BuildableProductRunnable runnableDebuggingMode="0"><BuildableReference BuildableIdentifier="primary" BlueprintIdentifier="97C146ED1CF9000F007C117D" BuildableName="Runner.app" BlueprintName="Runner" ReferencedContainer="container:Runner.xcodeproj"/></BuildableProductRunnable></LaunchAction>
  <ProfileAction buildConfiguration="Profile-uat" shouldUseLaunchSchemeArgsEnv="YES" savedToolIdentifier="" useCustomWorkingDirectory="NO" debugDocumentVersioning="YES"/>
  <AnalyzeAction buildConfiguration="Debug-uat"/>
  <ArchiveAction buildConfiguration="Release-uat" revealArchiveInOrganizer="YES"/>
</Scheme>
''',
    "__brick__/lib/foundation/flavors.dart":
        r'''enum AppFlavor { development, uat, production }

extension AppFlavorDetails on AppFlavor {
  String get suffix => switch (this) {
    AppFlavor.development => ' (Dev)',
    AppFlavor.uat => ' (UAT)',
    AppFlavor.production => '',
  };
}

abstract final class AppFlavorConfig {
  static final current = switch (const String.fromEnvironment(
    'FLAVOR',
    defaultValue: 'production',
  )) {
    'development' => AppFlavor.development,
    'uat' => AppFlavor.uat,
    _ => AppFlavor.production,
  };
}
''',
    "brick.yaml": r'''name: foundation_flavors_advanced
description: Android and iOS flavor configuration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_flavors/basic": {
    "__brick__/lib/foundation/flavors.dart":
        r'''enum AppFlavor { development, uat, production }

extension AppFlavorDetails on AppFlavor {
  String get suffix => switch (this) {
    AppFlavor.development => ' (Dev)',
    AppFlavor.uat => ' (UAT)',
    AppFlavor.production => '',
  };
}

abstract final class AppFlavorConfig {
  static final current = switch (const String.fromEnvironment(
    'FLAVOR',
    defaultValue: 'production',
  )) {
    'development' => AppFlavor.development,
    'uat' => AppFlavor.uat,
    _ => AppFlavor.production,
  };
}
''',
    "brick.yaml": r'''name: foundation_flavors_basic
description: Dart flavor model for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_localization/easy_localization": {
    "__brick__/assets/translations/en.json": r'''{
  "appTitle": "{{project_name}}"
}
''',
    "__brick__/lib/foundation/app_localization.dart":
        r'''import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';

abstract final class AppLocalization {
  static Future<void> initialize() => EasyLocalization.ensureInitialized();

  static Widget wrap(Widget child) => EasyLocalization(
    supportedLocales: const [Locale('en')],
    path: 'assets/translations',
    fallbackLocale: const Locale('en'),
    child: child,
  );

  static Iterable<LocalizationsDelegate<dynamic>> delegates(
    BuildContext context,
  ) => EasyLocalization.of(context)?.delegates ?? const [];

  static const locales = [Locale('en')];
}
''',
    "brick.yaml": r'''name: foundation_localization_easy_localization
description: Easy Localization integration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_localization/gen_l10n": {
    "__brick__/l10n.yaml": r'''arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
output-dir: lib/l10n/generated
synthetic-package: false
''',
    "__brick__/lib/foundation/app_localization.dart":
        r'''import 'package:flutter/material.dart';

import '../l10n/generated/app_localizations.dart';

abstract final class AppLocalization {
  static Future<void> initialize() async {}

  static Widget wrap(Widget child) => child;

  static Iterable<LocalizationsDelegate<dynamic>> delegates(
    BuildContext context,
  ) => AppLocalizations.localizationsDelegates;

  static List<Locale> get locales => AppLocalizations.supportedLocales;
}
''',
    "__brick__/lib/l10n/app_en.arb": r'''{
  "@@locale": "en",
  "appTitle": "{{project_name}}"
}
''',
    "brick.yaml": r'''name: foundation_localization_gen_l10n
description: Flutter gen-l10n localization for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_logging/logger": {
    "__brick__/lib/foundation/app_logging.dart":
        r'''import 'package:logger/logger.dart';

abstract final class AppLogger {
  static final _logger = Logger();

  static void info(Object? message) => _logger.i(message);

  static void error(Object? error, StackTrace stackTrace) =>
      _logger.e(error, error: error, stackTrace: stackTrace);
}
''',
    "brick.yaml": r'''name: foundation_logging_logger
description: Logger integration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_logging/talker": {
    "__brick__/lib/foundation/app_logging.dart":
        r'''import 'package:talker/talker.dart';

abstract final class AppLogger {
  static final _talker = Talker();

  static void info(Object? message) => _talker.info(message);

  static void error(Object? error, StackTrace stackTrace) =>
      _talker.handle(error ?? 'Unknown error', stackTrace);
}
''',
    "brick.yaml": r'''name: foundation_logging_talker
description: Talker integration for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_theme/basic_themedata": {
    "__brick__/lib/foundation/app_theme.dart":
        r'''import 'package:flutter/material.dart';

abstract final class AppTheme {
  static ThemeData get value =>
      ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue));
}
''',
    "brick.yaml": r'''name: foundation_theme_basic_themedata
description: Basic ThemeData for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_theme/design_tokens": {
    "__brick__/lib/foundation/app_theme.dart":
        r'''import 'package:flutter/material.dart';

abstract final class DesignTokens {
  static const primary = Color(0xff6750a4);
  static const spacingSmall = 8.0;
  static const spacingMedium = 16.0;
}

abstract final class AppTheme {
  static ThemeData get value => ThemeData(
    colorScheme: ColorScheme.fromSeed(seedColor: DesignTokens.primary),
    useMaterial3: true,
  );
}
''',
    "brick.yaml": r'''name: foundation_theme_design_tokens
description: Design-token theme for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
  "foundation_theme/material3": {
    "__brick__/lib/foundation/app_theme.dart":
        r'''import 'package:flutter/material.dart';

abstract final class AppTheme {
  static ThemeData get value => ThemeData(
    colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
    useMaterial3: true,
  );
}
''',
    "brick.yaml": r'''name: foundation_theme_material3
description: Material 3 theme for FlutterStart.
version: 0.1.0
environment:
  mason: 0.1.2
vars: {}
''',
  },
};