+
@@ -70,11 +324,6 @@
-
-
-
-
-
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.cs b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.cs
new file mode 100644
index 0000000000..c1192e4f9f
--- /dev/null
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.cs
@@ -0,0 +1,235 @@
+using System.Text;
+
+namespace Bit.Websites.Platform.Client.Pages.Templates;
+
+public partial class Templates05CreateProjectPage
+{
+ private string name = "MyFirstProject";
+
+ private Parameter windows = new()
+ {
+ Value = true,
+ Default = true,
+ };
+
+ private Parameter appCenter = new()
+ {
+ Value = false,
+ Default = false,
+ };
+
+ private Parameter offlineDb = new()
+ {
+ Value = false,
+ Default = false,
+ };
+
+ private Parameter appInsight = new()
+ {
+ Value = false,
+ Default = false,
+ };
+
+ private Parameter signalr = new()
+ {
+ Value = false,
+ Default = false,
+ };
+
+ private Parameter captcha = new()
+ {
+ Value = "reCaptcha",
+ Default = "reCaptcha",
+ Items = [
+ new() { Text = "None", Value = "None" },
+ new() { Text = "reCaptcha", Value = "reCaptcha" },
+ ]
+ };
+
+ private Parameter pipeline = new()
+ {
+ Value = "GitHub",
+ Default = "GitHub",
+ Items = [
+ new() { Text = "None", Value = "None" },
+ new() { Text = "GitHub", Value = "GitHub" },
+ new() { Text = "Azure", Value = "Azure" },
+ ]
+ };
+
+ private Parameter sample = new()
+ {
+ Value = "None",
+ Default = "None",
+ Items = [
+ new() { Text = "None", Value = "None" },
+ new() { Text = "Admin", Value = "Admin" },
+ new() { Text = "Todo", Value = "Todo" },
+ ]
+ };
+
+ private Parameter database = new()
+ {
+ Value = "Sqlite",
+ Default = "Sqlite",
+ Items = [
+ new() { Text = "Sqlite", Value = "Sqlite" },
+ new() { Text = "SqlServer", Value = "SqlServer" },
+ new() { Text = "PostgreSQL", Value = "PostgreSQL" },
+ new() { Text = "MySQL", Value = "MySQL" },
+ new() { Text = "Cosmos", Value = "Cosmos" },
+ new() { Text = "Other", Value = "Other" },
+ ]
+ };
+
+ private Parameter fileStorage = new()
+ {
+ Value = "Local",
+ Default = "Local",
+ Items = [
+ new() { Text = "Local", Value = "Local" },
+ new() { Text = "AzureBlobStorage", Value = "AzureBlobStorage" },
+ new() { Text = "Other", Value = "Other" },
+ ]
+ };
+
+ private Parameter api = new()
+ {
+ Value = "Integrated",
+ Default = "Integrated",
+ Items = [
+ new() { Text = "Integrated", Value = "Integrated" },
+ new() { Text = "Standalone", Value = "Standalone" },
+ ]
+ };
+
+ private string GetFinalCommand()
+ {
+ StringBuilder finalCommand = new($"dotnet new bit-bp {GetNameCommand()}");
+
+ if (captcha.IsModified)
+ {
+ finalCommand.Append(GetCaptchaCommand());
+ }
+
+ if (pipeline.IsModified)
+ {
+ finalCommand.Append(GetPipelineCommand());
+ }
+
+ if (sample.IsModified)
+ {
+ finalCommand.Append(GetSampleCommand());
+ }
+
+ if (windows.IsModified)
+ {
+ finalCommand.Append(GetWindowsCommand());
+ }
+
+ if (appCenter.IsModified)
+ {
+ finalCommand.Append(GetAppCenterCommand());
+ }
+
+ if (database.IsModified)
+ {
+ finalCommand.Append(GetDatabaseCommand());
+ }
+
+ if (fileStorage.IsModified)
+ {
+ finalCommand.Append(GetFileStorageCommand());
+ }
+
+ if (api.IsModified)
+ {
+ finalCommand.Append(GetApiCommand());
+ }
+
+ if (offlineDb.IsModified)
+ {
+ finalCommand.Append(GetOfflineDbCommand());
+ }
+
+ if (appInsight.IsModified)
+ {
+ finalCommand.Append(GetAppInsightsCommand());
+ }
+
+ if (signalr.IsModified)
+ {
+ finalCommand.Append(GetSignalRCommand());
+ }
+
+ return finalCommand.ToString();
+ }
+
+ private string GetNameCommand()
+ {
+ return $"--name {name} ";
+ }
+
+ private string GetCaptchaCommand()
+ {
+ return $"--captcha {captcha.Value} ";
+ }
+
+ private string GetPipelineCommand()
+ {
+ return $"--pipeline {pipeline.Value} ";
+ }
+
+ private string GetSampleCommand()
+ {
+ return $"--sample {sample.Value} ";
+ }
+
+ private string GetWindowsCommand()
+ {
+ return $"--windows {windows.Value.ToString().ToLowerInvariant()} ";
+ }
+
+ private string GetAppCenterCommand()
+ {
+ return $"--appCenter {appCenter.Value.ToString().ToLowerInvariant()} ";
+ }
+
+ private string GetDatabaseCommand()
+ {
+ return $"--database {database.Value} ";
+ }
+
+ private string GetFileStorageCommand()
+ {
+ return $"--filesStorage {fileStorage.Value} ";
+ }
+
+ private string GetApiCommand()
+ {
+ return $"--api {api.Value} ";
+ }
+
+ private string GetOfflineDbCommand()
+ {
+ return $"--offlineDb {offlineDb.Value.ToString().ToLowerInvariant()} ";
+ }
+
+ private string GetAppInsightsCommand()
+ {
+ return $"--appinsights {appInsight.Value.ToString().ToLowerInvariant()} ";
+ }
+
+ private string GetSignalRCommand()
+ {
+ return $"--signalr {signalr.Value.ToString().ToLowerInvariant()} ";
+ }
+
+ private class Parameter
+ {
+ public T? Value { get; set; }
+ public T? Default { get; set; }
+ public BitDropdownItem[]? Items { get; set; }
+ public bool IsModified => EqualityComparer.Default.Equals(Default, Value) is false;
+ }
+}
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.scss b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.scss
index b8e83d9149..efc3843eff 100644
--- a/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.scss
+++ b/src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05CreateProjectPage.razor.scss
@@ -29,6 +29,7 @@
.image {
@include Image;
+ width: rem2(600px);
}
::deep a {
@@ -40,3 +41,36 @@
width: 80%;
}
}
+
+.row {
+ display: flex;
+ justify-content: space-between;
+ border-bottom: 1px solid $White;
+ padding-bottom: rem2(10px);
+ margin-bottom: rem2(10px);
+}
+
+.api-image-container {
+ display: flex;
+ justify-content: center;
+ height: 350px;
+}
+
+::deep {
+ .bit-drp {
+ width: rem2(150px);
+ }
+
+ .grid-item {
+ width: rem2(550px);
+ min-height: rem2(400px);
+ overflow: auto;
+ position: relative;
+ padding: rem2(28px);
+ word-wrap: break-word;
+ border-radius: rem2(4px);
+ background-clip: padding-box;
+ box-shadow: $bit-box-shadow-callout;
+ background-color: $bit-color-background-primary;
+ }
+}
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-integrated.webp b/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-integrated.webp
new file mode 100644
index 0000000000..1161d5ada6
Binary files /dev/null and b/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-integrated.webp differ
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-standalone.webp b/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-standalone.webp
new file mode 100644
index 0000000000..f12b92e702
Binary files /dev/null and b/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/api-standalone.webp differ
diff --git a/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/create-new-project-vs-3.webp b/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/create-new-project-vs-3.webp
deleted file mode 100644
index 9581e72cfd..0000000000
Binary files a/src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/create-new-project-vs-3.webp and /dev/null differ