Spaces:
Running
Running
Commit History
-
undefined - Follow Up Deployment
Verified signature242c105 -
ahora quiero script un uno con todo esto # Crear proyecto ZenTrader para Android $projectRoot = "C:\ZenTrader" $packageName = "com.zentrader" $packagePath = $packageName.Replace('.', '\') # Crear estructura de directorios principal $rootDirectories = @( "src\ZenTrader.Android", "src\ZenTrader.Core", "tests\ZenTrader.Android.Tests", "docs", "resources\icons", "resources\screens", "build" ) foreach ($dir in $rootDirectories) { $fullPath = Join-Path -Path $projectRoot -ChildPath $dir New-Item -ItemType Directory -Path $fullPath -Force | Out-Null } # Crear estructura de Android dentro de ZenTrader.Android $androidDirectories = @( "Resources\layout", "Resources\values", "Services", "ViewModels", "Models", "Repositories" ) foreach ($dir in $androidDirectories) { $fullPath = Join-Path -Path $projectRoot -ChildPath "src\ZenTrader.Android\$dir" New-Item -ItemType Directory -Path $fullPath -Force | Out-Null } # 1. AndroidManifest.xml $manifest = @" <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="$packageName"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <application android:name=".ZenTraderApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.ZenTrader" android:usesCleartextTraffic="true"> <activity android:name=".MainActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.ZenTrader.NoActionBar" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".services.SoundService" /> </application> </manifest> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\Properties\AndroidManifest.xml") -Value $manifest # 2. ZenTraderApp.cs $zentraiderApp = @" using Android.App; using Android.Runtime; namespace ZenTrader.Android { [Application] public class ZenTraderApp : Application { public ZenTraderApp(IntPtr handle, JniHandleOwnership transfer) : base(handle, transfer) { } public override void OnCreate() { base.OnCreate(); // Initialize app-wide dependencies here } } } "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\ZenTraderApp.cs") -Value $zentraiderApp # 3. MainActivity.cs $mainActivity = @" using Android.App; using Android.OS; using AndroidX.AppCompat.App; namespace ZenTrader.Android { [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)] public class MainActivity : AppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_main); } } } "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\MainActivity.cs") -Value $mainActivity # 4. activity_main.xml $activityMain = @" <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_container" /> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\Resources\layout\activity_main.xml") -Value $activityMain # 5. strings.xml $strings = @" <resources> <string name="app_name">ZenTrader</string> <string name="title_home">Home</string> <string name="title_rituals">Rituals</string> <string name="title_sounds">Sounds</string> <string name="title_focus">Focus</string> <string name="title_plan">Plan</string> <string name="mind_state">Mind State</string> <string name="market_sentiment">Market Sentiment</string> <string name="checklist">Checklist</string> <string name="focus_time">Focus Time</string> </resources> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\Resources\values\strings.xml") -Value $strings # 6. colors.xml $colors = @" <?xml version="1.0" encoding="utf-8"?> <resources> <color name="deep_900">#0A0F17</color> <color name="deep_800">#131A25</color> <color name="deep_700">#1D2635</color> <color name="deep_600">#2A3548</color> <color name="zen_500">#6EE7B7</color> <color name="zen_600">#34D399</color> <color name="indigo_500">#818CF8</color> <color name="sky_500">#38BDF8</color> </resources> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\Resources\values\colors.xml") -Value $colors # 7. themes.xml $themes = @" <resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.ZenTrader" parent="Theme.Material3.DayNight.NoActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/zen_500</item> <item name="colorPrimaryContainer">@color/deep_800</item> <item name="colorOnPrimaryContainer">@color/zen_500</item> <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> <item name="android:windowBackground">@color/deep_900</item> </style> <style name="Theme.ZenTrader.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> </resources> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\Resources\values\themes.xml") -Value $themes # 8. ZenTrader.Android.csproj $androidProj = @" <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0-android</TargetFramework> <OutputType>Exe</OutputType> <ApplicationId>$packageName</ApplicationId> <SupportedOSPlatformVersion>21</SupportedOSPlatformVersion> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> <ItemGroup> <PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.6.0.1" /> <PackageReference Include="Xamarin.AndroidX.Core" Version="1.10.0" /> <PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.6.1" /> <PackageReference Include="Xamarin.AndroidX.Lifecycle.ViewModel" Version="2.6.1" /> <PackageReference Include="Xamarin.AndroidX.Navigation.Fragment" Version="2.7.0" /> <PackageReference Include="Xamarin.AndroidX.Navigation.UI" Version="2.7.0" /> <PackageReference Include="Xamarin.Google.Android.Material" Version="1.10.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\ZenTrader.Core\ZenTrader.Core.csproj" /> </ItemGroup> </Project> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Android\ZenTrader.Android.csproj") -Value $androidProj # 9. ZenTrader.Core.csproj $coreProj = @" <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> </PropertyGroup> </Project> "@ Set-Content -Path (Join-Path $projectRoot "src\ZenTrader.Core\ZenTrader.Core.csproj") -Value $coreProj # 10. ZenTrader.sln $slnContent = @" Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZenTrader.Android", "src\ZenTrader.Android\ZenTrader.Android.csproj", "{A1B2C3D4-E5F6-4789-A0B1-C2D3E4F56789}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZenTrader.Core", "src\ZenTrader.Core\ZenTrader.Core.csproj", "{B2C3D4E5-F6A7-4890-B1C2-D3E4F5678901}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {A1B2C3D4-E5F6-4789-A0B1-C2D3E4F56789}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A1B2C3D4-E5F6-4789-A0B1-C2D3E4F56789}.Debug|Any CPU.Build.0 = Debug|Any CPU {A1B2C3D4-E5F6-4789-A0B1-C2D3E4F56789}.Release|Any CPU.ActiveCfg = Release|Any CPU {A1B2C3D4-E5F6-4789-A0B1-C2D3E4F56789}.Release|Any CPU.Build.0 = Release|Any CPU {B2C3D4E5-F6A7-4890-B1C2-D3E4F5678901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B2C3D4E5-F6A7-4890-B1C2-D3E4F5678901}.Debug|Any CPU.Build.0 = Debug|Any CPU {B2C3D4E5-F6A7-4890-B1C2-D3E4F5678901}.Release|Any CPU.ActiveCfg = Release|Any CPU {B2C3D4E5-F6A7-4890-B1C2-D3E4F5678901}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal "@ Set-Content -Path (Join-Path $projectRoot "ZenTrader.sln") -Value $slnContent # 11. build-android.bat $buildScript = @" @echo off REM Build script for ZenTrader Android project echo Building ZenTrader Android solution... dotnet build ZenTrader.sln -c Release if %errorlevel% equ 0 ( echo. echo Build completed successfully! echo APK location: src\ZenTrader.Android\bin\Release\net8.0-android\ ) else ( echo. echo Build failed with errors! exit /b 1 ) "@ Set-Content -Path (Join-Path $projectRoot "build\build-android.bat") -Value $buildScript -Encoding ASCII # 12. README.md $readme = @" # ZenTrader - Mindful Trading Companion ## Project Structure # Crear proyecto ZenTrader para Android $projectPath = "C:\ZenTrader" $packageName = "com.zentrader" $packagePath = $packageName.Replace('.', '\') # Crear estructura de directorios $directories = @( "app\src\main\java\$packagePath", "app\src\main\java\$packagePath\navigation", "app\src\main\java\$packagePath\ui", "app\src\main\java\$packagePath\ui\screens", "app\src\main\java\$packagePath\ui\components", "app\src\main\java\$packagePath\ui\theme", "app\src\main\java\$packagePath\data", "app\src\main\java\$packagePath\viewmodel", "app\src\main\res\values", "app\src\main\res\drawable", "app\src\main\res\raw" ) foreach ($dir in $directories) { $fullPath = Join-Path -Path $projectPath -ChildPath $dir if (-not (Test-Path $fullPath)) { New-Item -ItemType Directory -Path $fullPath -Force | Out-Null } } # 1. AndroidManifest.xml $manifest = @" <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="$packageName"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <application android:name=".ZenTraderApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.ZenTrader" android:usesCleartextTraffic="true"> <activity android:name=".MainActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.ZenTrader.NoActionBar" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".services.SoundService" /> </application> </manifest> "@ Set-Content -Path (Join-Path $projectPath "app\src\main\AndroidManifest.xml") -Value $manifest # 2. ZenTraderApp.kt $zentraiderApp = @" package $packageName import android.app.Application import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class ZenTraderApp : Application() "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ZenTraderApp.kt") -Value $zentraiderApp # 3. MainActivity.kt $mainActivity = @" package $packageName import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier import androidx.navigation.compose.rememberNavController import $packageName.ui.theme.ZenTraderTheme import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ZenTraderTheme { Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { val navController = rememberNavController() AppNavigation(navController) } } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\MainActivity.kt") -Value $mainActivity # 4. AppNavigation.kt $appNavigation = @" package $packageName.navigation import androidx.compose.runtime.Composable import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import $packageName.ui.screens.FocusScreen import $packageName.ui.screens.HomeScreen import $packageName.ui.screens.PlanScreen import $packageName.ui.screens.RitualsScreen import $packageName.ui.screens.SoundScreen object Destinations { const val HOME = "home" const val RITUALS = "rituals" const val SOUND = "sound" const val FOCUS = "focus" const val PLAN = "plan" } @Composable fun AppNavigation(navController: NavHostController) { NavHost(navController = navController, startDestination = Destinations.HOME) { composable(Destinations.HOME) { HomeScreen() } composable(Destinations.RITUALS) { RitualsScreen() } composable(Destinations.SOUND) { SoundScreen() } composable(Destinations.FOCUS) { FocusScreen() } composable(Destinations.PLAN) { PlanScreen() } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\navigation\AppNavigation.kt") -Value $appNavigation # 5. HomeScreen.kt $homeScreen = @" package $packageName.ui.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import $packageName.ui.components.AppHeader import $packageName.ui.components.BreathingResetCard import $packageName.ui.components.DailyQuoteCard import $packageName.ui.components.StatCard import $packageName.ui.components.StateSentimentRow @Composable fun HomeScreen() { Column( modifier = Modifier .fillMaxSize() .padding(16.dp) { // Header AppHeader(title = "ZenTrader", subtitle = "Mindful Trading • Balanced Mind") // Stats Row { StatCard( title = "Mind State", value = "Balanced", iconRes = "ic_brain" ) Spacer(modifier = Modifier.width(16.dp)) StatCard( title = "Market Sentiment", value = "68% Bullish", iconRes = "ic_chart" ) } Spacer(modifier = Modifier.height(16.dp)) Row { StatCard( title = "Checklist", value = "2/5 Done", iconRes = "ic_checklist" ) Spacer(modifier = Modifier.width(16.dp)) StatCard( title = "Focus Time", value = "25:00", iconRes = "ic_clock" ) } Spacer(modifier = Modifier.height(24.dp)) // State & Sentiment StateSentimentRow() Spacer(modifier = Modifier.height(24.dp)) // Breathing Reset BreathingResetCard() Spacer(modifier = Modifier.height(24.dp)) // Daily Quote DailyQuoteCard() } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\screens\HomeScreen.kt") -Value $homeScreen # 6. RitualsScreen.kt $ritualsScreen = @" package $packageName.ui.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import $packageName.ui.components.AppHeader import $packageName.ui.components.DailyRitualsChecklist @Composable fun RitualsScreen() { Column( modifier = Modifier .fillMaxSize() .padding(16.dp) { // Header AppHeader(title = "Daily Rituals", subtitle = "Complete your trading routine") // Checklist DailyRitualsChecklist() } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\screens\RitualsScreen.kt") -Value $ritualsScreen # 7. SoundScreen.kt $soundScreen = @" package $packageName.ui.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import $packageName.ui.components.AppHeader import $packageName.ui.components.BinauralBeatsList import $packageName.ui.components.SoundPlayerGrid @Composable fun SoundScreen() { Column( modifier = Modifier .fillMaxSize() .padding(16.dp) { // Header AppHeader(title = "Sound Environment", subtitle = "Enhance focus and relaxation") // Sound Player SoundPlayerGrid() // Binaural Beats BinauralBeatsList() } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\screens\SoundScreen.kt") -Value $soundScreen # 8. FocusScreen.kt $focusScreen = @" package $packageName.ui.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import $packageName.ui.components.AppHeader import $packageName.ui.components.FocusTimer import $packageName.ui.components.TimerControls @Composable fun FocusScreen() { Column( modifier = Modifier .fillMaxSize() .padding(16.dp) { // Header AppHeader(title = "Focus Session", subtitle = "Deep work mode") // Timer FocusTimer() // Timer controls TimerControls() } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\screens\FocusScreen.kt") -Value $focusScreen # 9. PlanScreen.kt $planScreen = @" package $packageName.ui.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import $packageName.ui.components.AppHeader import $packageName.ui.components.TradingPlanForm @Composable fun PlanScreen() { Column( modifier = Modifier .fillMaxSize() .padding(16.dp) { // Header AppHeader(title = "Trading Plan", subtitle = "Define your session strategy") // Plan Form TradingPlanForm() } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\screens\PlanScreen.kt") -Value $planScreen # 10. AppHeader.kt $appHeader = @" package $packageName.ui.components import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun AppHeader(title: String, subtitle: String) { Column { Text( text = title, style = MaterialTheme.typography.titleLarge, fontWeight = FontWeight.Bold, color = Color.White, fontSize = 24.sp ) Spacer(modifier = Modifier.height(4.dp)) Text( text = subtitle, style = MaterialTheme.typography.bodyMedium, color = Color(0xFFA0AEC0), fontSize = 14.sp ) Spacer(modifier = Modifier.height(24.dp)) } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\AppHeader.kt") -Value $appHeader # 11. StatCard.kt $statCard = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun StatCard(title: String, value: String, iconRes: String) { Box( modifier = Modifier .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) { Row(verticalAlignment = Alignment.CenterVertically) { Box( modifier = Modifier .size(40.dp) .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { Icon( painter = painterResource(id = R.drawable.`$iconRes`), contentDescription = title, tint = when(iconRes) { "ic_brain" -> Color(0xFF6EE7B7) "ic_chart" -> Color(0xFF818CF8) "ic_checklist" -> Color(0xFF6EE7B7) else -> Color(0xFF38BDF8) }, modifier = Modifier.size(24.dp) ) } Spacer(modifier = Modifier.width(12.dp)) Column { Text( text = title, style = MaterialTheme.typography.bodyMedium, color = Color(0xFFA0AEC0), fontSize = 12.sp ) Spacer(modifier = Modifier.height(4.dp)) Text( text = value, style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color.White, fontSize = 16.sp ) } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\StatCard.kt") -Value $statCard # 12. StateSentimentRow.kt $stateSentimentRow = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import $packageName.ui.components.ZenProgressRing @Composable fun StateSentimentRow() { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { // State Check Card Box( modifier = Modifier .weight(1f) .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Row(verticalAlignment = Alignment.CenterVertically) { Text( text = "Current State", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF6EE7B7), fontSize = 18.sp ) Spacer(modifier = Modifier.weight(1f)) Box( modifier = Modifier .size(40.dp) .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { // Brain icon would go here } } Spacer(modifier = Modifier.height(16.dp)) // Sliders would go here } } Spacer(modifier = Modifier.width(16.dp)) // Market Sentiment Card Box( modifier = Modifier .weight(1f) .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Row(verticalAlignment = Alignment.CenterVertically) { Text( text = "Market Sentiment", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF818CF8), fontSize = 18.sp ) Spacer(modifier = Modifier.weight(1f)) Box( modifier = Modifier .size(40.dp) .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { // Chart icon would go here } } Spacer(modifier = Modifier.height(16.dp)) // Progress ring Box( modifier = Modifier.size(120.dp).align(Alignment.CenterHorizontally), contentAlignment = Alignment.Center ) { ZenProgressRing(progress = 0.68f) Column(horizontalAlignment = Alignment.CenterHorizontally) { Text( text = "Sentiment", style = MaterialTheme.typography.bodySmall, color = Color(0xFFA0AEC0), fontSize = 12.sp ) Text( text = "Bullish", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color.White, fontSize = 16.sp ) } } } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\StateSentimentRow.kt") -Value $stateSentimentRow # 13. ZenProgressRing.kt $zenProgressRing = @" package $packageName.ui.components import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp @Composable fun ZenProgressRing( progress: Float, size: Dp = 120.dp, strokeWidth: Dp = 8.dp, colors: List<Color> = listOf(Color(0xFF34D399), Color(0xFF818CF8), Color(0xFFF87171)) ) { val sweepAngle = progress * 360 Canvas(modifier = Modifier.size(size)) { // Draw background circle drawCircle( color = Color(0xFF2A3548), radius = size.toPx() / 2, style = Stroke(width = strokeWidth.toPx()) ) // Draw progress arcs var startAngle = -90f val segmentAngle = 360f / colors.size colors.forEach { color -> val segmentProgress = minOf(segmentAngle, sweepAngle - startAngle + 90f) / segmentAngle if (segmentProgress > 0) { drawArc( color = color, startAngle = startAngle, sweepAngle = segmentAngle * segmentProgress, useCenter = false, style = Stroke(strokeWidth.toPx(), cap = StrokeCap.Round) ) } startAngle += segmentAngle } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\ZenProgressRing.kt") -Value $zenProgressRing # 14. BreathingResetCard.kt $breathingResetCard = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun BreathingResetCard() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) { Column { Row(verticalAlignment = Alignment.CenterVertically) { Text( text = "Breathing Reset", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF6EE7B7), fontSize = 18.sp ) Spacer(modifier = Modifier.weight(1f)) Box( modifier = Modifier .size(40.dp) .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { Icon( painter = painterResource(id = R.drawable.ic_leaf), contentDescription = "Breathing", tint = Color(0xFF6EE7B7), modifier = Modifier.size(24.dp) ) } } Spacer(modifier = Modifier.height(16.dp)) // Breathing animation placeholder Box( modifier = Modifier .size(200.dp) .align(Alignment.CenterHorizontally) .clip(RoundedCornerShape(100)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { // Breathing animation would go here Text( text = "1:00", style = MaterialTheme.typography.titleLarge, fontWeight = FontWeight.Bold, color = Color.White, fontSize = 32.sp ) } Spacer(modifier = Modifier.height(16.dp)) Button( onClick = { /* Handle start breathing exercise */ }, modifier = Modifier .fillMaxWidth() .height(50.dp), shape = RoundedCornerShape(12.dp), colors = ButtonDefaults.buttonColors( containerColor = Color(0xFF6EE7B7), contentColor = Color(0xFF0A0F17) ) ) { Text("Start Breathing Exercise", fontWeight = FontWeight.Bold) } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\BreathingResetCard.kt") -Value $breathingResetCard # 15. DailyQuoteCard.kt $dailyQuoteCard = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun DailyQuoteCard() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF6EE7B7).copy(alpha = 0.1f)) .padding(16.dp)) { Row { Icon( painter = painterResource(id = R.drawable.ic_quote), contentDescription = "Quote", tint = Color(0xFF6EE7B7), modifier = Modifier.size(24.dp) ) Spacer(modifier = Modifier.width(12.dp)) Column { Text( text = "Wisdom for Traders", style = MaterialTheme.typography.bodySmall, fontWeight = MaterialTheme.typography.bodySmall.fontWeight, color = Color(0xFF6EE7B7), fontSize = 12.sp ) Spacer(modifier = Modifier.height(4.dp)) Text( text = "\"The market is a mirror. What you see in it reflects your state of mind.\"", style = MaterialTheme.typography.bodyMedium, fontStyle = FontStyle.Italic, color = Color.White, fontSize = 14.sp ) Spacer(modifier = Modifier.height(4.dp)) Text( text = "— Trading Psychology", style = MaterialTheme.typography.bodySmall, color = Color(0xFF6EE7B7).copy(alpha = 0.7f), fontSize = 12.sp ) } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\DailyQuoteCard.kt") -Value $dailyQuoteCard # 16. DailyRitualsChecklist.kt $dailyRitualsChecklist = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Checkbox import androidx.compose.material3.CheckboxDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp @Composable fun DailyRitualsChecklist() { val items = listOf( "Morning meditation (5 min)", "Review trading plan", "Post-loss reset ritual", "Profit-taking reflection", "Evening journaling" ) val checkedStates = remember { mutableStateListOf(true, true, false, false, false) } Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Row(verticalAlignment = Alignment.CenterVertically) { Text( text = "Daily Rituals", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF6EE7B7), fontSize = 18.sp ) Spacer(modifier = Modifier.weight(1f)) Text( text = "2/5 completed", style = MaterialTheme.typography.bodySmall, color = Color(0xFFA0AEC0), fontSize = 12.sp ) } Spacer(modifier = Modifier.height(16.dp)) // Progress bar Box( modifier = Modifier .fillMaxWidth() .height(8.dp) .clip(RoundedCornerShape(4.dp)) .background(Color(0xFF2A3548)) ) { Box( modifier = Modifier .fillMaxWidth(0.4f) .height(8.dp) .clip(RoundedCornerShape(4.dp)) .background(Color(0xFF6EE7B7)) ) } Spacer(modifier = Modifier.height(16.dp)) // Checklist items items.forEachIndexed { index, item -> Row( modifier = Modifier .fillMaxWidth() .padding(vertical = 8.dp), verticalAlignment = Alignment.CenterVertically ) { Checkbox( checked = checkedStates[index], onCheckedChange = { checkedStates[index] = it }, colors = CheckboxDefaults.colors( checkedColor = Color(0xFF6EE7B7), uncheckedColor = Color(0xFF2A3548), checkmarkColor = Color(0xFF0A0F17) ) ) Spacer(modifier = Modifier.width(12.dp)) Text( text = item, style = MaterialTheme.typography.bodyMedium, color = Color.White ) Spacer(modifier = Modifier.weight(1f)) Icon( painter = painterResource(id = R.drawable.ic_info), contentDescription = "Info", tint = Color(0xFFA0AEC0), modifier = Modifier.size(20.dp) ) } } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\DailyRitualsChecklist.kt") -Value $dailyRitualsChecklist # 17. SoundPlayerGrid.kt $soundPlayerGrid = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun SoundPlayerGrid() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Text( text = "Ambient Sounds", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF818CF8), fontSize = 18.sp ) Spacer(modifier = Modifier.height(16.dp)) // Sound grid Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { SoundItem("Rain", "ic_rain") SoundItem("Fire", "ic_fire") SoundItem("Wind", "ic_wind") } Spacer(modifier = Modifier.height(12.dp)) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { SoundItem("Waves", "ic_waves") SoundItem("Forest", "ic_forest") SoundItem("White", "ic_white_noise") } } } } @Composable fun SoundItem(name: String, iconRes: String) { Column( modifier = Modifier .size(100.dp) .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF2A3548)), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Box( modifier = Modifier .size(48.dp) .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF1D2635)), contentAlignment = Alignment.Center ) { // Icon would go here } Spacer(modifier = Modifier.height(8.dp)) Text( text = name, style = MaterialTheme.typography.bodyMedium, color = Color.White, fontSize = 14.sp ) } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\SoundPlayerGrid.kt") -Value $soundPlayerGrid # 18. BinauralBeatsList.kt $binauralBeatsList = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun BinauralBeatsList() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Text( text = "Binaural Beats", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF818CF8), fontSize = 18.sp ) Spacer(modifier = Modifier.height(16.dp)) // List items BinauralItem("432Hz Calm", "Focus & relaxation") Spacer(modifier = Modifier.height(12.dp)) BinauralItem("Alpha Focus", "Concentration") Spacer(modifier = Modifier.height(12.dp)) BinauralItem("Theta Waves", "Deep meditation") } } } @Composable fun BinauralItem(title: String, description: String) { Row( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(12.dp)) .background(Color(0xFF2A3548)) .padding(12.dp), verticalAlignment = Alignment.CenterVertically ) { Box( modifier = Modifier .size(40.dp) .clip(RoundedCornerShape(8.dp)) .background(Color(0xFF1D2635)), contentAlignment = Alignment.Center ) { Icon( painter = painterResource(id = R.drawable.ic_music), contentDescription = "Music", tint = Color(0xFF818CF8), modifier = Modifier.size(24.dp) ) } Spacer(modifier = Modifier.width(12.dp)) Column(modifier = Modifier.weight(1f)) { Text( text = title, style = MaterialTheme.typography.bodyMedium, color = Color.White, fontSize = 16.sp ) Text( text = description, style = MaterialTheme.typography.bodySmall, color = Color(0xFFA0AEC0), fontSize = 12.sp ) } Button( onClick = { /* Handle play */ }, shape = RoundedCornerShape(8.dp), colors = ButtonDefaults.buttonColors( containerColor = Color(0xFF818CF8), contentColor = Color(0xFF0A0F17) ), modifier = Modifier.size(32.dp) ) { Icon( painter = painterResource(id = R.drawable.ic_play), contentDescription = "Play", modifier = Modifier.size(16.dp) ) } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\BinauralBeatsList.kt") -Value $binauralBeatsList # 19. FocusTimer.kt $focusTimer = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @Composable fun FocusTimer() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column(horizontalAlignment = Alignment.CenterHorizontally) { Text( text = "Focus Session", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF6EE7B7), fontSize = 18.sp ) Spacer(modifier = Modifier.height(24.dp)) // Timer Box( modifier = Modifier .size(200.dp) .clip(RoundedCornerShape(100)) .background(Color(0xFF2A3548)), contentAlignment = Alignment.Center ) { Text( text = "25:00", style = MaterialTheme.typography.displayMedium, fontWeight = FontWeight.Bold, color = Color.White, fontSize = 48.sp ) } Spacer(modifier = Modifier.height(16.dp)) Text( text = "Deep Work Mode", style = MaterialTheme.typography.bodySmall, color = Color(0xFFA0AEC0), fontSize = 14.sp ) } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\FocusTimer.kt") -Value $focusTimer # 20. TimerControls.kt $timerControls = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp @Composable fun TimerControls() { Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { // Timer control buttons Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { TimerButton("-5 min", Color(0xFF2A3548)) TimerButton("Start", Color(0xFF6EE7B7)) TimerButton("Stop", Color(0xFFF87171)) } Spacer(modifier = Modifier.height(16.dp)) // Preset durations Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { PresetButton("25 min") PresetButton("50 min") PresetButton("90 min") PresetButton("120 min") } } } } @Composable fun TimerButton(text: String, color: Color) { Button( onClick = { /* Handle button click */ }, modifier = Modifier .weight(1f) .height(40.dp), shape = RoundedCornerShape(12.dp), colors = ButtonDefaults.buttonColors( containerColor = color.copy(alpha = 0.2f), contentColor = color ) ) { Text(text, fontWeight = FontWeight.Bold) } } @Composable fun PresetButton(text: String) { Button( onClick = { /* Handle preset click */ }, modifier = Modifier .weight(1f) .height(32.dp), shape = RoundedCornerShape(8.dp), colors = ButtonDefaults.buttonColors( containerColor = Color(0xFF2A3548), contentColor = Color(0xFFA0AEC0)) ) ) { Text(text, fontSize = 12.sp) } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\TimerControls.kt") -Value $timerControls # 21. TradingPlanForm.kt $tradingPlanForm = @" package $packageName.ui.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextFieldDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp @OptIn (ExperimentalMaterial3Api::class) @Composable fun TradingPlanForm() { val maxRisk = remember { mutableStateOf("") } val instruments = remember { mutableStateOf("") } val keySetups = remember { mutableStateOf("") } val mindsetNotes = remember { mutableStateOf("") } Box( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(16.dp)) .background(Color(0xFF1D2635)) .padding(16.dp)) ) { Column { Text( text = "Define Your Trading Plan", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold, color = Color(0xFF818CF8), fontSize = 18.sp ) Spacer(modifier = Modifier.height(16.dp)) OutlinedTextField( value = maxRisk.value, onValueChange = { maxRisk.value = it }, label = { Text("Max Risk") }, modifier = Modifier.fillMaxWidth(), colors = TextFieldDefaults.outlinedTextFieldColors( focusedBorderColor = Color(0xFF818CF8), unfocusedBorderColor = Color(0xFF2A3548), textColor = Color.White ) ) Spacer(modifier = Modifier.height(12.dp)) OutlinedTextField( value = instruments.value, onValueChange = { instruments.value = it }, label = { Text("Instruments") }, modifier = Modifier.fillMaxWidth(), colors = TextFieldDefaults.outlinedTextFieldColors( focusedBorderColor = Color(0xFF818CF8), unfocusedBorderColor = Color(0xFF2A3548), textColor = Color.White ) ) Spacer(modifier = Modifier.height(12.dp)) OutlinedTextField( value = keySetups.value, onValueChange = { keySetups.value = it }, label = { Text("Key Setups") }, modifier = Modifier.fillMaxWidth(), colors = TextFieldDefaults.outlinedTextFieldColors( focusedBorderColor = Color(0xFF818CF8), unfocusedBorderColor = Color(0xFF2A3548), textColor = Color.White ), minLines = 3 ) Spacer(modifier = Modifier.height(12.dp)) OutlinedTextField( value = mindsetNotes.value, onValueChange = { mindsetNotes.value = it }, label = { Text("Mindset Notes") }, modifier = Modifier.fillMaxWidth(), colors = TextFieldDefaults.outlinedTextFieldColors( focusedBorderColor = Color(0xFF818CF8), unfocusedBorderColor = Color(0xFF2A3548), textColor = Color.White ), minLines = 3 ) Spacer(modifier = Modifier.height(16.dp)) Button( onClick = { /* Handle save */ }, modifier = Modifier .fillMaxWidth() .height(50.dp), shape = RoundedCornerShape(12.dp), colors = ButtonDefaults.buttonColors( containerColor = Color(0xFF818CF8), contentColor = Color(0xFF0A0F17)) ) ) { Text("Save Trading Plan", fontWeight = FontWeight.Bold) } } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\components\TradingPlanForm.kt") -Value $tradingPlanForm # 22. Color.kt $color = @" package $packageName.ui.theme import androidx.compose.ui.graphics.Color val deep900 = Color(0xFF0A0F17) val deep800 = Color(0xFF131A25) val deep700 = Color(0xFF1D2635) val deep600 = Color(0xFF2A3548) val zen500 = Color(0xFF6EE7B7) val zen600 = Color(0xFF34D399) val indigo500 = Color(0xFF818CF8) val sky500 = Color(0xFF38BDF8) "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\theme\Color.kt") -Value $color # 23. Theme.kt $theme = @" package $packageName.ui.theme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme import androidx.compose.runtime.Composable private val DarkColorScheme = darkColorScheme( primary = zen500, secondary = indigo500, tertiary = sky500, background = deep900, surface = deep800, onPrimary = deep900, onSecondary = deep900, onTertiary = deep900, onBackground = Color.White, onSurface = Color.White, ) @Composable fun ZenTraderTheme( content: @Composable () -> Unit ) { MaterialTheme( colorScheme = DarkColorScheme, typography = Typography, content = content ) } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\theme\Theme.kt") -Value $theme # 24. Type.kt $type = @" package $packageName.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.sp val Typography = Typography( displayLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 57.sp, lineHeight = 64.sp, letterSpacing = (-0.25).sp ), displayMedium = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 45.sp, lineHeight = 52.sp, letterSpacing = 0.sp ), displaySmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 36.sp, lineHeight = 44.sp, letterSpacing = 0.sp ), headlineLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 32.sp, lineHeight = 40.sp, letterSpacing = 0.sp ), headlineMedium = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 28.sp, lineHeight = 36.sp, letterSpacing = 0.sp ), headlineSmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 24.sp, lineHeight = 32.sp, letterSpacing = 0.sp ), titleLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Bold, fontSize = 22.sp, lineHeight = 28.sp, letterSpacing = 0.sp ), titleMedium = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Bold, fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.15.sp ), titleSmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.1.sp ), bodyLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.5.sp ), bodyMedium = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.25.sp ), bodySmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, fontSize = 12.sp, lineHeight = 16.sp, letterSpacing = 0.4.sp ), labelLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 14.sp, lineHeight = 20.sp, letterSpacing = 0.1.sp ), labelMedium = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 12.sp, lineHeight = 16.sp, letterSpacing = 0.5.sp ), labelSmall = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Medium, fontSize = 10.sp, lineHeight = 16.sp, letterSpacing = 0.sp ) ) "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\ui\theme\Type.kt") -Value $type # 25. ZenViewModel.kt $zenViewModel = @" package $packageName.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch class ZenViewModel : ViewModel() { private val _focusTime = MutableStateFlow(25 * 60) // 25 minutes in seconds val focusTime: StateFlow<Int> = _focusTime private val _isTimerRunning = MutableStateFlow(false) val isTimerRunning: StateFlow<Boolean> = _isTimerRunning private var timerJob: Job? = null fun startTimer() { if (_isTimerRunning.value) return _isTimerRunning.value = true timerJob = viewModelScope.launch { while (_focusTime.value > 0 && _isTimerRunning.value) { delay(1000) _focusTime.value = _focusTime.value - 1 } _isTimerRunning.value = false } } fun stopTimer() { _isTimerRunning.value = false timerJob?.cancel() } fun resetTimer(minutes: Int) { stopTimer() _focusTime.value = minutes * 60 } fun adjustTimer(minutes: Int) { val newTime = _focusTime.value + (minutes * 60) if (newTime > 0) { _focusTime.value = newTime } } } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\viewmodel\ZenViewModel.kt") -Value $zenViewModel # 26. RitualsRepository.kt $ritualsRepository = @" package $packageName.data import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import javax.inject.Singleton @Singleton class RitualsRepository { private val _rituals = MutableStateFlow<List<Ritual>>(emptyList()) val rituals: StateFlow<List<Ritual>> = _rituals init { _rituals.value = listOf( Ritual("Morning meditation (5 min)", true), Ritual("Review trading plan", true), Ritual("Post-loss reset ritual", false), Ritual("Profit-taking reflection", false), Ritual("Evening journaling", false) ) } fun toggleRitual(index: Int) { val current = _rituals.value.toMutableList() current[index] = current[index].copy(completed = !current[index].completed) _rituals.value = current } } data class Ritual(val name: String, val completed: Boolean) "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\data\RitualsRepository.kt") -Value $ritualsRepository # 27. SoundRepository.kt $soundRepository = @" package $packageName.data import android.content.Context import android.media.MediaPlayer import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import javax.inject.Inject import javax.inject.Singleton @Singleton class SoundRepository @Inject constructor( private val context: Context ) { private var mediaPlayer: MediaPlayer? = null private val _currentSound = MutableStateFlow<SoundType?>(null) val currentSound: StateFlow<SoundType?> = _currentSound private val _isPlaying = MutableStateFlow(false) val isPlaying: StateFlow<Boolean> = _isPlaying fun playSound(soundType: SoundType) { stopSound() mediaPlayer = MediaPlayer.create( context, when (soundType) { SoundType.RAIN -> R.raw.rain SoundType.FIRE -> R.raw.fire SoundType.WIND -> R.raw.wind SoundType.WAVES -> R.raw.waves SoundType.FOREST -> R.raw.forest SoundType.WHITE_NOISE -> R.raw.white } ) mediaPlayer?.apply { isLooping = true start() _currentSound.value = soundType _isPlaying.value = true } } fun stopSound() { mediaPlayer?.stop() mediaPlayer?.release() mediaPlayer = null _currentSound.value = null _isPlaying.value = false } } enum class SoundType { RAIN, FIRE, WIND, WAVES, FOREST, WHITE_NOISE } "@ Set-Content -Path (Join-Path $projectPath "app\src\main\java\$packagePath\data\SoundRepository.kt") -Value $soundRepository # 28. colors.xml $colors = @" <?xml version="1.0" encoding="utf-8"?> <resources> <color name="deep_900">#0A0F17</color> <color name="deep_800">#131A25</color> <color name="deep_700">#1D2635</color> <color name="deep_600">#2A3548</color> <color name="zen_500">#6EE7B7</color> <color name="zen_600">#34D399</color> <color name="indigo_500">#818CF8</color> <color name="sky_500">#38BDF8</color> </resources> "@ Set-Content -Path (Join-Path $projectPath "app\src\main\res\values\colors.xml") -Value $colors # 29. strings.xml $strings = @" <resources> <string name="app_name">ZenTrader</string> <string name="title_home">Home</string> <string name="title_rituals">Rituals</string> <string name="title_sounds">Sounds</string> <string name="title_focus">Focus</string> <string name="title_plan">Plan</string> <string name="mind_state">Mind State</string> <string name="market_sentiment">Market Sentiment</string> <string name="checklist">Checklist</string> <string name="focus_time">Focus Time</string> </resources> "@ Set-Content -Path (Join-Path $projectPath "app\src\main\res\values\strings.xml") -Value $strings # 30. themes.xml $themes = @" <resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.ZenTrader" parent="Theme.Material3.DayNight.NoActionBar"> <!-- Primary brand color. --> <item name="colorPrimary">@color/zen_500</item> <item name="colorPrimaryContainer">@color/deep_800</item> <item name="colorOnPrimaryContainer">@color/zen_500</item> <!-- Status bar color. --> <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> <!-- Customize your theme here. --> <item name="android:windowBackground">@color/deep_900</item> </style> <style name="Theme.ZenTrader.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> </resources> "@ Set-Content -Path (Join-Path $projectPath "app\src\main\res\values\themes.xml") -Value $themes # 31. Iconos vectoriales $iconFiles = @{ "ic_brain.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF6EE7B7" android:pathData="M12,3C8.69,3 6,5.69 6,9c0,1.19 0.5,2.27 1.35,3.05l-0.01,0.01C7.56,13.1 8,14.28 8,15.5c0,1.58 -0.6,3.03 -1.59,4.13C6.88,19.61 7.07,19.36 7.3,19.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,18.53 19,17.58 19,15.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,11.27 21,10.19 21,9C21,5.69 18.31,3 15,3C13.41,3 12,3.5 11,4.36C10,3.5 8.59,3 7,3C5.69,3 4,4.69 4,7c0,1.19 0.5,2.27 1.35,3.05C5.56,11.1 6,12.28 6,13.5c0,1.58 -0.6,3.03 -1.59,4.13C4.88,17.61 5.07,17.36 5.3,17.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,16.53 19,15.58 19,13.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,9.27 21,8.19 21,7C21,4.69 18.31,3 15,3C13.41,3 12,3.5 11,4.36C10,3.5 8.59,3 7,3C4.69,3 3,4.69 3,7c0,1.19 0.5,2.27 1.35,3.05C4.56,11.1 5,12.28 5,13.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,17.61 4.07,17.36 4.3,17.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,14.53 19,13.58 19,11.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,7.27 21,6.19 21,5C21,2.69 18.31,1 15,1C13.41,1 12,1.5 11,2.36C10,1.5 8.59,1 7,1C4.69,1 3,2.69 3,5c0,1.19 0.5,2.27 1.35,3.05C4.56,9.1 5,10.28 5,11.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,15.61 4.07,15.36 4.3,15.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,12.53 19,11.58 19,9.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,5.27 21,4.19 21,3C21,0.69 18.31,-1 15,-1C13.41,-1 12,-0.5 11,0.36C10,-0.5 8.59,-1 7,-1C4.69,-1 3,0.69 3,3c0,1.19 0.5,2.27 1.35,3.05C4.56,7.1 5,8.28 5,9.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,13.61 4.07,13.36 4.3,13.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,10.53 19,9.58 19,7.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,3.27 21,2.19 21,1C21,-1.31 18.31,-3 15,-3C13.41,-3 12,-2.5 11,-1.64C10,-2.5 8.59,-3 7,-3C4.69,-3 3,-1.31 3,1c0,1.19 0.5,2.27 1.35,3.05C4.56,5.1 5,6.28 5,7.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,11.61 4.07,11.36 4.3,11.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,8.53 19,7.58 19,5.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,1.27 21,0.19 21,-1C21,-3.31 18.31,-5 15,-5C13.41,-5 12,-4.5 11,-3.64C10,-4.5 8.59,-5 7,-5C4.69,-5 3,-3.31 3,-1c0,1.19 0.5,2.27 1.35,3.05C4.56,3.1 5,4.28 5,5.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,9.61 4.07,9.36 4.3,9.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,6.53 19,5.58 19,3.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,-0.73 21,-1.81 21,-3C21,-5.31 18.31,-7 15,-7C13.41,-7 12,-6.5 11,-5.64C10,-6.5 8.59,-7 7,-7C4.69,-7 3,-5.31 3,-3c0,1.19 0.5,2.27 1.35,3.05C4.56,-0.9 5,0.28 5,1.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,5.61 4.07,5.36 4.3,5.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,4.53 19,3.58 19,1.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,-2.73 21,-3.81 21,-5C21,-7.31 18.31,-9 15,-9C13.41,-9 12,-8.5 11,-7.64C10,-8.5 8.59,-9 7,-9C4.69,-9 3,-7.31 3,-5c0,1.19 0.5,2.27 1.35,3.05C4.56,-2.9 5,-1.72 5,-0.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,3.61 4.07,3.36 4.3,3.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,2.53 19,1.58 19,-0.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,-4.73 21,-5.81 21,-7C21,-9.31 18.31,-11 15,-11C13.41,-11 12,-10.5 11,-9.64C10,-10.5 8.59,-11 7,-11C4.69,-11 3,-9.31 3,-7c0,1.19 0.5,2.27 1.35,3.05C4.56,-4.9 5,-3.72 5,-2.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,1.61 4.07,1.36 4.3,1.21c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C18.6,0.53 19,-0.42 19,-2.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C20.5,-6.73 21,-7.81 21,-9C21,-11.31 18.31,-13 15,-13C13.41,-13 12,-12.5 11,-11.64C10,-12.5 8.59,-13 7,-13C4.69,-13 3,-11.31 3,-9c0,1.19 0.5,2.27 1.35,3.05C4.56,-6.9 5,-5.72 5,-4.5c0,1.58 -0.6,3.03 -1.59,4.13C3.88,-0.39 4.07,-0.64 4.3,-0.79c0.53,0.4 1.17,0.71 1.89,0.71c0.72,0 1.36,-0.31 1.89,-0.71c0.23,-0.15 0.42,-0.4 0.59,-0.42c0.17,0.02 0.36,0.27 0.59,0.42c0.53,0.4 1.17,0.71 1.89,0.71c0.72,0 1.36,-0.31 1.89,-0.71c0.23,-0.15 0.42,-0.4 0.59,-0.42c0.17,0.02 0.36,0.27 0.59,0.42c0.53,0.4 1.17,0.71 1.89,0.71c0.72,0 1.36,-0.31 1.89,-0.71c0.23,-0.15 0.42,-0.4 0.59,-0.42c0.17,0.02 0.36,0.27 0.59,0.42C18.6,-1.47 19,-0.58 19,1.5c0,1.22 -0.44,2.4 -0.65,3.44l-0.01,0.01C18.5,5.73 18,6.81 18,8c0,2.31 2.69,4 5,4c1.59,0 3,-0.5 4,-1.36C28,10.5 29.41,11 31,11c2.31,0 4,-1.69 4,-4c0,-1.19 -0.5,-2.27 -1.35,-3.05C33.44,3.9 33,2.72 33,1.5c0,-1.58 0.6,-3.03 1.59,-4.13C34.88,-3.61 34.73,-3.36 34.5,-3.21c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42C22.6,-0.53 22,0.42 22,2.5c0,1.22 -0.44,2.4 -0.65,3.44l-0.01,0.01C21.5,6.73 21,7.81 21,9c0,2.31 2.69,4 5,4c1.59,0 3,-0.5 4,-1.36C31,11.5 32.41,12 34,12c2.31,0 4,-1.69 4,-4c0,-1.19 -0.5,-2.27 -1.35,-3.05C36.44,4.9 36,3.72 36,2.5c0,-1.58 0.6,-3.03 1.59,-4.13C37.88,-2.61 37.73,-2.36 37.5,-2.21c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42C26.6,0.47 26,1.42 26,3.5c0,1.22 -0.44,2.4 -0.65,3.44l-0.01,0.01C25.5,7.73 25,8.81 25,10c0,2.31 2.69,4 5,4c1.59,0 3,-0.5 4,-1.36C35,12.5 36.41,13 38,13c2.31,0 4,-1.69 4,-4c0,-1.19 -0.5,-2.27 -1.35,-3.05C40.44,5.9 40,4.72 40,3.5c0,-1.58 0.6,-3.03 1.59,-4.13C41.88,-1.61 41.73,-1.36 41.5,-1.21c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42C30.6,1.47 30,2.42 30,4.5c0,1.22 -0.44,2.4 -0.65,3.44l-0.01,0.01C29.5,8.73 29,9.81 29,11c0,2.31 2.69,4 5,4c1.59,0 3,-0.5 4,-1.36C39,13.5 40.41,14 42,14c2.31,0 4,-1.69 4,-4c0,-1.19 -0.5,-2.27 -1.35,-3.05C44.44,6.9 44,5.72 44,4.5c0,-1.58 0.6,-3.03 1.59,-4.13C45.88,-0.61 45.73,-0.36 45.5,-0.21c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42c-0.53,0.4 -1.17,0.71 -1.89,0.71c-0.72,0 -1.36,-0.31 -1.89,-0.71c-0.23,-0.15 -0.42,-0.4 -0.59,-0.42c-0.17,0.02 -0.36,0.27 -0.59,0.42C34.6,2.47 34,3.42 34,5.5c0,1.22 -0.44,2.4 -0.65,3.44l-0.01,0.01C33.5,9.73 33,10.81 33,12c0,2.31 2.69,4 5,4c1.59,0 3,-0.5 4,-1.36C43,14.5 44.41,15 46,15c2.31,0 4,-1.69 4,-4c0,-1.19 -0.5,-2.27 -1.35,-3.05C48.44,7.9 48,6.72 48,5.5c0,-1.58 0.6,-3.03 1.59,-4.13C49.88,0.39 49.73,0.64 49.5,0.79c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42C38.6,3.47 38,2.58 38,0.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C38.5,-4.27 39,-5.19 39,-7c0,-2.31 -2.69,-4 -5,-4c-1.59,0 -3,0.5 -4,1.36C29,-9.5 27.59,-10 26,-10c-2.31,0 -4,1.69 -4,4c0,1.19 0.5,2.27 1.35,3.05C23.44,-1.1 24,0.08 24,1.3c0,1.58 0.6,3.03 1.59,4.13C25.88,6.39 25.73,6.64 25.5,6.79c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42C14.6,5.47 14,4.58 14,2.5c0,-1.22 0.44,-2.4 0.65,-3.44l0.01,-0.01C14.5,-3.27 15,-4.19 15,-6c0,-2.31 -2.69,-4 -5,-4c-1.59,0 -3,0.5 -4,1.36C5,-8.5 3.59,-9 2,-9C-0.31,-9 -2,-7.31 -2,-5c0,1.19 -0.5,2.27 -1.35,3.05C-3.44,-1.1 -3,0.08 -3,1.3c0,1.58 -0.6,3.03 -1.59,4.13C-4.88,6.39 -4.73,6.64 -4.5,6.79c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C6.6,7.47 7,6.58 7,4.5c0,-1.22 -0.44,-2.4 -0.65,-3.44L6.34,1.05C6.5,-0.73 7,-1.81 7,-3C7,-5.31 4.31,-7 1,-7C-0.59,-7 -2,-6.5 -3,-5.64C-4,-6.5 -5.41,-7 -7,-7c-2.31,0 -4,1.69 -4,4c0,1.19 -0.5,2.27 -1.35,3.05C-12.44,-1.1 -12,0.08 -12,1.3c0,1.58 -0.6,3.03 -1.59,4.13C-13.88,6.39 -13.73,6.64 -13.5,6.79c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42c0.53,-0.4 1.17,-0.71 1.89,-0.71c0.72,0 1.36,0.31 1.89,0.71c0.23,0.15 0.42,0.4 0.59,0.42c0.17,-0.02 0.36,-0.27 0.59,-0.42C-1.4,9.47 -1,8.58 -1,6.5c0,-1.22 0.44,-2.4 0.65,-3.44L-0.34,3.05C-0.5,1.27 -1,0.19 -1,-1C-1,-3.31 1.69,-5 5,-5C6.59,-5 8,-4.5 9,-3.64C10,-4.5 11.41,-5 13,-5c2.31,0 4,1.69 4,4c0,1.19 0.5,2.27 1.35,3.05C18.56,2.9 19,4.08 19,5.3c0,1.58 0.6,3.03 1.59,4.13C20.88,10.39 20.73,10.64 20.5,10.79c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42c-0.53,-0.4 -1.17,-0.71 -1.89,-0.71c-0.72,0 -1.36,0.31 -1.89,0.71c-0.23,0.15 -0.42,0.4 -0.59,0.42c-0.17,-0.02 -0.36,-0.27 -0.59,-0.42z"/> </vector> "@ "ic_chart.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF818CF8" android:pathData="M3,3v18h18V3H3z M19,19H5V5h14V19z M7,10l3,3 4,-4 5,5v-2l-5,-5 -4,4 -3,-3V10z"/> </vector> "@ "ic_checklist.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF6EE7B7" android:pathData="M19,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5C21,3.9 20.1,3 19,3z M10,17L5,12l1.41,-1.41L10,14.17l7.59,-7.59L19,8L10,17z"/> </vector> "@ "ic_clock.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF38BDF8" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2z M12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8S16.42,20 12,20z M12.5,7H11v6l5.25,3.15l0.75,-1.23 -4.5,-2.67V7z"/> </vector> "@ "ic_leaf.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF6EE7B7" android:pathData="M17,3C7.1,3 3.53,11.46 3.53,11.46s-2.47,5.17 -2.47,8.54c0,0 5.47,-1.46 9.47,-1.46V21c0,0.55 0.45,1 1,1s1,-0.45 1,-1v-2.46c4,0 9.47,1.46 9.47,1.46s0,-0.28 0,-0.71C22,17.4 20.68,5.61 17,3z M11,14.46V9.23c0,0 -0.15,-0.09 -0.48,-0.25C9.72,8.5 9,7.5 9,6.25C9,4.46 10.46,3 12.25,3c0.52,0 1.02,0.1 1.48,0.29C14.28,3.5 15,4.5 15,5.75c0,0.35 -0.1,0.68 -0.28,0.96c-0.22,0.34 -0.52,0.6 -0.86,0.79c-0.33,0.18 -0.86,0.44 -0.86,0.73v7.23c-0.4,0 -0.9,0.08 -1.47,0.21C11.4,15.37 11,15.1 11,14.46z"/> </vector> "@ "ic_quote.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF6EE7B7" android:pathData="M3.691,6.292C5.37,3.678 8.568,2 12,2c5.514,0 10,4.486 10,10s-4.486,10 -10,10S2,17.514 2,12c0,-1.468 0.316,-2.854 0.879,-4.106c0.215,-0.48 0.81,-0.678 1.29,-0.463c0.48,0.215 0.678,0.81 0.463,1.29C4.398,9.56 4.1,10.748 4.1,12c0,4.411 3.589,8 8,8s8,-3.589 8,-8s-3.589,-8 -8,-8c-2.737,0 -5.276,1.354 -6.766,3.591L6.6,9.6H3.4L3.4,6.4L3.691,6.292z"/> </vector> "@ "ic_info.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FFA0AEC0" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm-1,-9.5c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z"/> </vector> "@ "ic_music.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF818CF8" android:pathData="M12,3v10.55c-0.59,-0.34 -1.27,-0.55 -2,-0.55 -2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4V7h4V3H12z"/> </vector> "@ "ic_play.xml" = @" <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:fillColor="#FF0A0F17" android:pathData="M8,5v14l11,-7z"/> </vector> "@ } foreach ($icon in $iconFiles.Keys) { $iconPath = Join-Path $projectPath "app\src\main\res\drawable\$icon" Set-Content -Path $iconPath -Value $iconFiles[$icon] } # 32. Crear archivos de sonido vacíos $soundFiles = @("rain", "fire", "wind", "waves", "forest", "white") foreach ($sound in $soundFiles) { $soundPath = Join-Path $projectPath "app\src\main\res\raw\$sound.wav" Set-Content -Path $soundPath -Value "" -NoNewline } Write-Host "`n¡PROYECTO ZENTRADER CREADO EXITOSAMENTE!`n" -ForegroundColor Green Write-Host "Ruta del proyecto: $projectPath" -ForegroundColor Cyan Write-Host "Para continuar:" -ForegroundColor Yellow Write-Host "1. Abre el proyecto en Android Studio" -ForegroundColor Yellow Write-Host "2. Reemplaza los archivos vacíos en res/raw con tus sonidos reales" -ForegroundColor Yellow Write-Host "3. Completa la lógica de los ViewModels" -ForegroundColor Yellow Write-Host "4. Ejecuta la aplicación en un emulador o dispositivo Android" -ForegroundColor Yellow Write-Host "`n¡Feliz codificación!" -ForegroundColor Magenta - Initial Deployment
Verified signaturec569cb4 -
initial commit
Verified signature1e73065