feat(cli): add new schedule member by name feature

This commit is contained in:
2025-09-11 17:02:54 -04:00
parent 0768e4816d
commit 0e536c5b5f
46 changed files with 232 additions and 21093 deletions

View File

@@ -558,16 +558,16 @@ def cmd_schedules_decline(cli: "NimbusFlowCLI", args) -> None:
# Clear screen after service selection
print("\033[2J\033[H")
# Find pending schedules for this service
# Find pending OR accepted schedules for this service
all_schedules = cli.schedule_repo.list_all()
pending_schedules = [
available_schedules = [
s for s in all_schedules
if s.ServiceId == selected_service.ServiceId and s.Status == ScheduleStatus.PENDING.value
if s.ServiceId == selected_service.ServiceId and s.Status in [ScheduleStatus.PENDING.value, ScheduleStatus.ACCEPTED.value]
]
if not pending_schedules:
if not available_schedules:
service_type_name = service_type_map.get(selected_service.ServiceTypeId, "Unknown")
print(f"❌ No pending schedules found for {service_type_name} on {args.date}")
print(f"❌ No pending or accepted schedules found for {service_type_name} on {args.date}")
return
# Get member info for display
@@ -578,28 +578,31 @@ def cmd_schedules_decline(cli: "NimbusFlowCLI", args) -> None:
print(f"{TableColors.HEADER}Members scheduled for {service_name} on {args.date}{TableColors.RESET}")
print(f"{TableColors.BORDER}" * 70 + f"{TableColors.RESET}")
print()
for i, schedule in enumerate(pending_schedules, 1):
for i, schedule in enumerate(available_schedules, 1):
member = member_map.get(schedule.MemberId)
status_color = TableColors.SUCCESS if schedule.Status == ScheduleStatus.ACCEPTED.value else TableColors.WARNING
status_text = f"{status_color}{schedule.Status.upper()}{TableColors.RESET}"
if member:
print(f" {TableColors.CYAN}{i}.{TableColors.RESET} {member.FirstName} {member.LastName}")
print(f" {TableColors.CYAN}{i}.{TableColors.RESET} {member.FirstName} {member.LastName} {TableColors.DIM}({status_text}){TableColors.RESET}")
else:
print(f" {TableColors.CYAN}{i}.{TableColors.RESET} {TableColors.DIM}Unknown Member (ID: {schedule.MemberId}){TableColors.RESET}")
print(f" {TableColors.CYAN}{i}.{TableColors.RESET} {TableColors.DIM}Unknown Member (ID: {schedule.MemberId}) ({status_text}){TableColors.RESET}")
print()
# Let user select member
try:
print(f"\n{TableColors.INPUT_BOX}┌─ Select member to decline (1-{len(pending_schedules)}) ─┐{TableColors.RESET}")
print(f"\n{TableColors.INPUT_BOX}┌─ Select member to decline (1-{len(available_schedules)}) ─┐{TableColors.RESET}")
choice = input(f"{TableColors.INPUT_BOX}└─> {TableColors.RESET}").strip()
if not choice or not choice.isdigit():
print("❌ Invalid selection")
return
member_index = int(choice) - 1
if member_index < 0 or member_index >= len(pending_schedules):
if member_index < 0 or member_index >= len(available_schedules):
print("❌ Invalid selection")
return
selected_schedule = pending_schedules[member_index]
selected_schedule = available_schedules[member_index]
except (KeyboardInterrupt, EOFError):
print("\n🛑 Cancelled")
return
@@ -635,10 +638,6 @@ def cmd_schedules_decline(cli: "NimbusFlowCLI", args) -> None:
print(f"⚠️ Schedule {schedule_to_decline.ScheduleId} is already declined")
return
if schedule_to_decline.Status == ScheduleStatus.ACCEPTED.value:
print(f"⚠️ Schedule {schedule_to_decline.ScheduleId} was previously accepted")
return
# Get member and service info for display
member = cli.member_repo.get_by_id(schedule_to_decline.MemberId)
service = cli.service_repo.get_by_id(schedule_to_decline.ServiceId)
@@ -646,19 +645,37 @@ def cmd_schedules_decline(cli: "NimbusFlowCLI", args) -> None:
if service:
service_type = cli.service_type_repo.get_by_id(service.ServiceTypeId)
# Mark the schedule as declined
cli.schedule_repo.mark_declined(schedule_to_decline.ScheduleId, decline_reason=decline_reason)
# Show what we're about to decline
was_accepted = schedule_to_decline.Status == ScheduleStatus.ACCEPTED.value
status_text = "accepted" if was_accepted else "pending"
# Update member's decline timestamp (using service date)
if service:
cli.member_repo.set_last_declined(schedule_to_decline.MemberId, str(service.ServiceDate))
print(f"❌ Schedule {schedule_to_decline.ScheduleId} declined successfully!")
if member and service and service_type:
print(f" Member: {member.FirstName} {member.LastName}")
print(f"\n{TableColors.WARNING}About to decline {status_text} schedule:{TableColors.RESET}")
print(f" Member: {TableColors.BOLD}{member.FirstName} {member.LastName}{TableColors.RESET}")
print(f" Service: {service_type.TypeName} on {service.ServiceDate}")
if decline_reason:
print(f" Reason: {decline_reason}")
if decline_reason:
print(f" Reason: {decline_reason}")
# Use the scheduling service to handle decline logic properly
try:
action, updated_schedule_id = cli.scheduling_service.decline_service_for_user(
member_id=schedule_to_decline.MemberId,
service_id=schedule_to_decline.ServiceId,
reason=decline_reason
)
# Update member's decline timestamp (using service date)
if service:
cli.member_repo.set_last_declined(schedule_to_decline.MemberId, str(service.ServiceDate))
print(f"\n{TableColors.SUCCESS}✅ Schedule {updated_schedule_id} declined successfully!{TableColors.RESET}")
if was_accepted:
print(f"{TableColors.WARNING} Note: This was previously accepted - member moved back to scheduling pool{TableColors.RESET}")
except Exception as e:
print(f"{TableColors.ERROR}❌ Failed to decline schedule: {e}{TableColors.RESET}")
return
def cmd_schedules_schedule(cli: "NimbusFlowCLI", args) -> None:
@@ -734,6 +751,10 @@ def cmd_schedules_schedule(cli: "NimbusFlowCLI", args) -> None:
print(f"{TableColors.HEADER}Selected Service: {service_type_name} on {service.ServiceDate}{TableColors.RESET}")
# Check if we're doing name-based scheduling
if hasattr(args, 'member_name') and args.member_name:
return _schedule_specific_member(cli, service, service_type_name, args.member_name)
# Get classification constraints if not provided
classification_ids = []
if args.classifications:
@@ -848,6 +869,137 @@ def cmd_schedules_schedule(cli: "NimbusFlowCLI", args) -> None:
return
def _schedule_specific_member(cli: "NimbusFlowCLI", service, service_type_name: str, member_name: str) -> None:
"""Helper function to schedule a specific member by name."""
# Search for matching members
all_members = cli.member_repo.list_all()
search_terms = member_name.lower().split()
matching_members = []
for member in all_members:
member_text = f"{member.FirstName} {member.LastName}".lower()
# Match if all search terms are found in the member's name
if all(term in member_text for term in search_terms):
matching_members.append(member)
if not matching_members:
print(f"{TableColors.ERROR}❌ No members found matching '{member_name}'{TableColors.RESET}")
return
# If multiple matches, let user select
selected_member = None
if len(matching_members) == 1:
selected_member = matching_members[0]
print(f"\n{TableColors.SUCCESS}Found member: {selected_member.FirstName} {selected_member.LastName}{TableColors.RESET}")
else:
print(f"\n{TableColors.HEADER}Multiple members found matching '{member_name}':{TableColors.RESET}")
print(f"{TableColors.BORDER}" * 50 + f"{TableColors.RESET}")
print()
for i, member in enumerate(matching_members, 1):
status = "Active" if member.IsActive else "Inactive"
status_color = TableColors.SUCCESS if member.IsActive else TableColors.DIM
print(f" {TableColors.CYAN}{i}.{TableColors.RESET} {TableColors.BOLD}{member.FirstName} {member.LastName}{TableColors.RESET} {TableColors.DIM}({status_color}{status}{TableColors.RESET}{TableColors.DIM}){TableColors.RESET}")
print()
try:
print(f"\n{TableColors.INPUT_BOX}┌─ Select member (1-{len(matching_members)}) ─┐{TableColors.RESET}")
choice = input(f"{TableColors.INPUT_BOX}└─> {TableColors.RESET}").strip()
if not choice or not choice.isdigit():
print(f"{TableColors.ERROR}❌ Invalid selection{TableColors.RESET}")
return
member_index = int(choice) - 1
if member_index < 0 or member_index >= len(matching_members):
print(f"{TableColors.ERROR}❌ Invalid selection{TableColors.RESET}")
return
selected_member = matching_members[member_index]
except (KeyboardInterrupt, EOFError):
print(f"\n{TableColors.WARNING}🛑 Operation cancelled{TableColors.RESET}")
return
# Check if member is active
if not selected_member.IsActive:
print(f"\n{TableColors.WARNING}⚠️ Warning: {selected_member.FirstName} {selected_member.LastName} is marked as inactive{TableColors.RESET}")
try:
confirm = input(f"{TableColors.INPUT_BOX}Continue anyway? (y/N) {TableColors.RESET}").strip().lower()
if confirm not in ['y', 'yes']:
print(f"{TableColors.WARNING}Scheduling cancelled{TableColors.RESET}")
return
except (KeyboardInterrupt, EOFError):
print(f"\n{TableColors.WARNING}🛑 Operation cancelled{TableColors.RESET}")
return
# Get member's classification
if not selected_member.ClassificationId:
print(f"{TableColors.ERROR}{selected_member.FirstName} {selected_member.LastName} has no classification assigned{TableColors.RESET}")
return
member_classification = cli.classification_repo.get_by_id(selected_member.ClassificationId)
if not member_classification:
print(f"{TableColors.ERROR}❌ Could not find classification for {selected_member.FirstName} {selected_member.LastName}{TableColors.RESET}")
return
classification_names = [member_classification.ClassificationName]
# Check service availability
if not cli.availability_repo.get(selected_member.MemberId, service.ServiceTypeId):
print(f"{TableColors.ERROR}{selected_member.FirstName} {selected_member.LastName} is not available for {service_type_name} services{TableColors.RESET}")
return
# Check for existing schedules on the same date
if cli.schedule_repo.has_schedule_on_date(selected_member.MemberId, str(service.ServiceDate)):
print(f"{TableColors.ERROR}{selected_member.FirstName} {selected_member.LastName} already has a schedule on {service.ServiceDate}{TableColors.RESET}")
return
# Check for existing schedule for this specific service
existing_schedule = cli.schedule_repo.get_one(member_id=selected_member.MemberId, service_id=service.ServiceId)
if existing_schedule:
status_text = existing_schedule.Status.upper()
print(f"{TableColors.ERROR}{selected_member.FirstName} {selected_member.LastName} already has a {status_text} schedule for this service{TableColors.RESET}")
return
# Show confirmation
print(f"\n{TableColors.HEADER}Scheduling Confirmation{TableColors.RESET}")
print(f"{TableColors.BORDER}" * 50 + f"{TableColors.RESET}")
print(f" {TableColors.BOLD}Member:{TableColors.RESET} {selected_member.FirstName} {selected_member.LastName}")
print(f" {TableColors.BOLD}Service:{TableColors.RESET} {service_type_name} on {service.ServiceDate}")
print(f" {TableColors.BOLD}Classifications:{TableColors.RESET} {', '.join(classification_names)}")
print()
try:
print(f"\n{TableColors.INPUT_BOX}┌─ Create this schedule? (Y/n) ─┐{TableColors.RESET}")
confirm = input(f"{TableColors.INPUT_BOX}└─> {TableColors.RESET}").strip().lower()
if confirm in ['n', 'no']:
print(f"{TableColors.WARNING}Scheduling cancelled{TableColors.RESET}")
return
except (KeyboardInterrupt, EOFError):
print(f"\n{TableColors.WARNING}🛑 Operation cancelled{TableColors.RESET}")
return
# Create the schedule
try:
from backend.models.enums import ScheduleStatus
schedule = cli.schedule_repo.create(
service_id=service.ServiceId,
member_id=selected_member.MemberId,
status=ScheduleStatus.PENDING,
)
# Update the member's LastScheduledAt timestamp
cli.member_repo.touch_last_scheduled(selected_member.MemberId)
print(f"\n{TableColors.SUCCESS}✅ Successfully scheduled {selected_member.FirstName} {selected_member.LastName}!{TableColors.RESET}")
print(f"{TableColors.DIM}Schedule ID: {schedule.ScheduleId}{TableColors.RESET}")
print(f"{TableColors.DIM}Status: Pending (awaiting member response){TableColors.RESET}")
except Exception as e:
print(f"{TableColors.ERROR}❌ Failed to create schedule: {e}{TableColors.RESET}")
return
def setup_schedules_parser(subparsers) -> None:
"""Set up schedule-related command parsers."""
# Schedules commands
@@ -880,7 +1032,8 @@ def setup_schedules_parser(subparsers) -> None:
schedules_remove_parser.add_argument("--date", type=str, help="Interactive mode: select service and members by date (YYYY-MM-DD)")
# schedules schedule
schedules_schedule_parser = schedules_subparsers.add_parser("schedule", help="Schedule next member for a service (cycles through eligible members)")
schedules_schedule_parser = schedules_subparsers.add_parser("schedule", help="Schedule next member for a service (cycles through eligible members or by name)")
schedules_schedule_parser.add_argument("service_id", type=int, nargs="?", help="Service ID to schedule for (optional if using --date)")
schedules_schedule_parser.add_argument("--date", type=str, help="Interactive mode: select service by date (YYYY-MM-DD)")
schedules_schedule_parser.add_argument("--classifications", nargs="*", help="Classification names to filter by (e.g., Soprano Alto)")
schedules_schedule_parser.add_argument("--classifications", nargs="*", help="Classification names to filter by (e.g., Soprano Alto)")
schedules_schedule_parser.add_argument("--member-name", type=str, help="Schedule a specific member by name (first, last, or both)")

View File

@@ -177,7 +177,7 @@ def display_schedules_menu():
print(f" {Colors.CYAN}2.{Colors.RESET} {Colors.GREEN}Accept a schedule{Colors.RESET}")
print(f" {Colors.CYAN}3.{Colors.RESET} {Colors.RED}Decline a schedule{Colors.RESET}")
print(f" {Colors.CYAN}4.{Colors.RESET} {Colors.ERROR}Remove scheduled members{Colors.RESET}")
print(f" {Colors.CYAN}5.{Colors.RESET} {Colors.YELLOW}Schedule next member for service{Colors.RESET}")
print(f" {Colors.CYAN}5.{Colors.RESET} {Colors.YELLOW}Schedule member for service{Colors.RESET}")
print(f" {Colors.CYAN}6.{Colors.RESET} {Colors.DIM}Back to main menu{Colors.RESET}")
print()
@@ -417,7 +417,27 @@ def handle_schedules_menu(cli: "NimbusFlowCLI"):
date = get_date_input("Enter date to schedule for")
if date:
clear_screen()
cmd_schedules_schedule(cli, MockArgs(service_id=None, date=date, classifications=None))
# Ask if they want to schedule by name or use round-robin
print(f"\n{Colors.HEADER}Scheduling Options{Colors.RESET}")
print(f"{Colors.GREY}" * 50 + f"{Colors.RESET}")
print()
print(f" {Colors.CYAN}1.{Colors.RESET} {Colors.YELLOW}Round-robin scheduling{Colors.RESET} (choose next available member)")
print(f" {Colors.CYAN}2.{Colors.RESET} {Colors.GREEN}Schedule by name{Colors.RESET} (choose specific member)")
print()
schedule_choice = get_user_choice(2)
clear_screen()
if schedule_choice == 1:
# Round-robin scheduling
cmd_schedules_schedule(cli, MockArgs(service_id=None, date=date, classifications=None, member_name=None))
else:
# Name-based scheduling
member_name = get_text_input("Enter member name to search for (first, last, or both)", True)
if member_name:
clear_screen()
cmd_schedules_schedule(cli, MockArgs(service_id=None, date=date, classifications=None, member_name=member_name))
input(f"\n{Colors.DIM}Press Enter to continue...{Colors.RESET}")
elif choice == 6: # Back to main menu

View File

@@ -213,12 +213,12 @@ class ScheduleRepository(BaseRepository[ScheduleModel]):
# ------------------------------------------------------------------
def has_schedule_on_date(self, member_id: int, service_date: str) -> bool:
"""
Return ``True`` if *any* schedule (regardless of status) exists for
Return ``True`` if any *active* schedule (pending or accepted) exists for
``member_id`` on the calendar day ``service_date`` (format YYYYMMDD).
This abstracts the a member can only be scheduled once per day
This abstracts the "a member can only be actively scheduled once per day"
rule so the service layer does not need to know the underlying
table layout.
table layout. Declined schedules do not count as blocking.
"""
sql = f"""
SELECT 1
@@ -226,9 +226,10 @@ class ScheduleRepository(BaseRepository[ScheduleModel]):
JOIN Services AS sv ON s.ServiceId = sv.ServiceId
WHERE s.MemberId = ?
AND sv.ServiceDate = ?
AND s.Status IN (?, ?)
LIMIT 1
"""
row = self.db.fetchone(sql, (member_id, service_date))
row = self.db.fetchone(sql, (member_id, service_date, ScheduleStatus.PENDING.value, ScheduleStatus.ACCEPTED.value))
return row is not None
# ------------------------------------------------------------------

View File

@@ -7,7 +7,7 @@
from __future__ import annotations
from datetime import datetime, timezone
from typing import Optional, Tuple, List, Iterable
from typing import Optional, Tuple, List, Iterable, Literal
from backend.repositories import (
ClassificationRepository,

View File

@@ -223,28 +223,40 @@ def test_has_schedule_on_date(
service_repo: ServiceRepository,
clean_schedules
):
"""Test checking if member has any schedule on a specific date."""
"""Test checking if member has any active schedule on a specific date."""
# Create services on different dates
service_today = service_repo.create(
service_today_9am = service_repo.create(
service_type_id=1,
service_date=dt.date(2025, 9, 15)
)
service_today_11am = service_repo.create(
service_type_id=2,
service_date=dt.date(2025, 9, 15)
)
service_tomorrow = service_repo.create(
service_type_id=2,
service_date=dt.date(2025, 9, 16)
)
# Create schedule for today
# Create pending schedule for today
schedule_repo.create(
service_id=service_today.ServiceId,
service_id=service_today_9am.ServiceId,
member_id=1,
status=ScheduleStatus.PENDING
)
# Create declined schedule for today (should not block)
schedule_repo.create(
service_id=service_today_11am.ServiceId,
member_id=2,
status=ScheduleStatus.DECLINED
)
# Test has_schedule_on_date
assert schedule_repo.has_schedule_on_date(1, "2025-09-15")
assert not schedule_repo.has_schedule_on_date(1, "2025-09-16")
assert not schedule_repo.has_schedule_on_date(2, "2025-09-15")
assert schedule_repo.has_schedule_on_date(1, "2025-09-15") # pending schedule blocks
assert not schedule_repo.has_schedule_on_date(2, "2025-09-15") # declined schedule doesn't block
assert not schedule_repo.has_schedule_on_date(1, "2025-09-16") # different date
assert not schedule_repo.has_schedule_on_date(3, "2025-09-15") # different member
# ----------------------------------------------------------------------

5
frontend/.gitignore vendored
View File

@@ -3,6 +3,11 @@ bin/
obj/
out/
# Explicit .NET build artifacts
*.dll
*.pdb
*.exe
# User-specific files
*.rsuser
*.suo

View File

@@ -1,23 +0,0 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"NimbusFlow.Frontend/1.0.0": {
"runtime": {
"NimbusFlow.Frontend.dll": {}
}
}
}
},
"libraries": {
"NimbusFlow.Frontend/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@@ -1,19 +0,0 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@@ -1 +0,0 @@
{"ContentRoots":["/home/t2/Development/nimbusflow/frontend/wwwroot/","/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/"],"Root":{"Children":{"app.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"app.css"},"Patterns":null},"bootstrap":{"Children":{"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"bootstrap/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"bootstrap/bootstrap.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"css":{"Children":{"nimbusflow.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/nimbusflow.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.png"},"Patterns":null},"NimbusFlow.Frontend.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"NimbusFlow.Frontend.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}

View File

@@ -1,8 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

View File

@@ -1,9 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}

View File

@@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

View File

@@ -1,22 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("NimbusFlow.Frontend")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+133efdddeaca67de9c657b22a9a336c76ff65dfb")]
[assembly: System.Reflection.AssemblyProductAttribute("NimbusFlow.Frontend")]
[assembly: System.Reflection.AssemblyTitleAttribute("NimbusFlow.Frontend")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@@ -1 +0,0 @@
f301bdfdc7b594589c917e1256f8f410c1893af1ef23d88133340e83a19fc068

View File

@@ -1,59 +0,0 @@
is_global = true
build_property.TargetFramework = net8.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb = true
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = NimbusFlow.Frontend
build_property.RootNamespace = NimbusFlow.Frontend
build_property.ProjectDir = /home/t2/Development/nimbusflow/frontend/
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.RazorLangVersion = 8.0
build_property.SupportLocalizedComponentNames =
build_property.GenerateRazorMetadataSourceChecksumAttributes =
build_property.MSBuildProjectDirectory = /home/t2/Development/nimbusflow/frontend
build_property._RazorSourceGeneratorDebug =
[/home/t2/Development/nimbusflow/frontend/Components/App.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9BcHAucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Pages/Error.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9FcnJvci5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Pages/Home.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9Ib21lLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Pages/Members.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9NZW1iZXJzLnJhem9y
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Pages/Schedules.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9TY2hlZHVsZXMucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Pages/Services.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9QYWdlcy9TZXJ2aWNlcy5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Routes.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9Sb3V0ZXMucmF6b3I=
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/_Imports.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9fSW1wb3J0cy5yYXpvcg==
build_metadata.AdditionalFiles.CssScope =
[/home/t2/Development/nimbusflow/frontend/Components/Layout/MainLayout.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTWFpbkxheW91dC5yYXpvcg==
build_metadata.AdditionalFiles.CssScope = b-9xz5ehm10w
[/home/t2/Development/nimbusflow/frontend/Components/Layout/NavMenu.razor]
build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50cy9MYXlvdXQvTmF2TWVudS5yYXpvcg==
build_metadata.AdditionalFiles.CssScope = b-qjlejshrrx

View File

@@ -1,17 +0,0 @@
// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;

View File

@@ -1 +0,0 @@
72e9b9308a1f905093ef5ce6ebcb221be89fd0ba2dc586d8cf8c992ab0511185

View File

@@ -1,29 +0,0 @@
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/appsettings.Development.json
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/appsettings.json
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend.staticwebassets.runtime.json
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend.deps.json
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend.runtimeconfig.json
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend.dll
/home/t2/Development/nimbusflow/frontend/bin/Debug/net8.0/NimbusFlow.Frontend.pdb
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.GeneratedMSBuildEditorConfig.editorconfig
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.AssemblyInfoInputs.cache
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.AssemblyInfo.cs
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.csproj.CoreCompileInputs.cache
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.MvcApplicationPartsAssemblyInfo.cache
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets.build.json
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets.development.json
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets/msbuild.NimbusFlow.Frontend.Microsoft.AspNetCore.StaticWebAssets.props
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets/msbuild.build.NimbusFlow.Frontend.props
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.NimbusFlow.Frontend.props
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.NimbusFlow.Frontend.props
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/staticwebassets.pack.json
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/Components/Layout/MainLayout.razor.rz.scp.css
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/Components/Layout/NavMenu.razor.rz.scp.css
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/NimbusFlow.Frontend.styles.css
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/projectbundle/NimbusFlow.Frontend.bundle.scp.css
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.dll
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/refint/NimbusFlow.Frontend.dll
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.pdb
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/NimbusFlow.Frontend.genruntimeconfig.cache
/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/ref/NimbusFlow.Frontend.dll

View File

@@ -1 +0,0 @@
3f75a48d851e3753676d6adc9e3697efe55d6269084946619fd7f2b230a66010

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,96 +0,0 @@
.page[b-9xz5ehm10w] {
position: relative;
display: flex;
flex-direction: column;
}
main[b-9xz5ehm10w] {
flex: 1;
}
.sidebar[b-9xz5ehm10w] {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row[b-9xz5ehm10w] {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row[b-9xz5ehm10w] a:hover, .top-row[b-9xz5ehm10w] .btn-link:hover {
text-decoration: underline;
}
.top-row[b-9xz5ehm10w] a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row[b-9xz5ehm10w] {
justify-content: space-between;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page[b-9xz5ehm10w] {
flex-direction: row;
}
.sidebar[b-9xz5ehm10w] {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row[b-9xz5ehm10w] {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth[b-9xz5ehm10w] a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row[b-9xz5ehm10w], article[b-9xz5ehm10w] {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui[b-9xz5ehm10w] {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss[b-9xz5ehm10w] {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}

View File

@@ -1,105 +0,0 @@
.navbar-toggler[b-qjlejshrrx] {
appearance: none;
cursor: pointer;
width: 3.5rem;
height: 2.5rem;
color: white;
position: absolute;
top: 0.5rem;
right: 1rem;
border: 1px solid rgba(255, 255, 255, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}
.navbar-toggler:checked[b-qjlejshrrx] {
background-color: rgba(255, 255, 255, 0.5);
}
.top-row[b-qjlejshrrx] {
height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand[b-qjlejshrrx] {
font-size: 1.1rem;
}
.bi[b-qjlejshrrx] {
display: inline-block;
position: relative;
width: 1.25rem;
height: 1.25rem;
margin-right: 0.75rem;
top: -1px;
background-size: cover;
}
.bi-house-door-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}
.bi-plus-square-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}
.bi-list-nested-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}
.nav-item[b-qjlejshrrx] {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type[b-qjlejshrrx] {
padding-top: 1rem;
}
.nav-item:last-of-type[b-qjlejshrrx] {
padding-bottom: 1rem;
}
.nav-item[b-qjlejshrrx] .nav-link {
color: #d7d7d7;
background: none;
border: none;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
width: 100%;
}
.nav-item[b-qjlejshrrx] a.active {
background-color: rgba(255,255,255,0.37);
color: white;
}
.nav-item[b-qjlejshrrx] .nav-link:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
.nav-scrollable[b-qjlejshrrx] {
display: none;
}
.navbar-toggler:checked ~ .nav-scrollable[b-qjlejshrrx] {
display: block;
}
@media (min-width: 641px) {
.navbar-toggler[b-qjlejshrrx] {
display: none;
}
.nav-scrollable[b-qjlejshrrx] {
/* Never collapse the sidebar for wide screens */
display: block;
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}

View File

@@ -1,203 +0,0 @@
/* _content/NimbusFlow.Frontend/Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-9xz5ehm10w] {
position: relative;
display: flex;
flex-direction: column;
}
main[b-9xz5ehm10w] {
flex: 1;
}
.sidebar[b-9xz5ehm10w] {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row[b-9xz5ehm10w] {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row[b-9xz5ehm10w] a:hover, .top-row[b-9xz5ehm10w] .btn-link:hover {
text-decoration: underline;
}
.top-row[b-9xz5ehm10w] a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row[b-9xz5ehm10w] {
justify-content: space-between;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page[b-9xz5ehm10w] {
flex-direction: row;
}
.sidebar[b-9xz5ehm10w] {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row[b-9xz5ehm10w] {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth[b-9xz5ehm10w] a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row[b-9xz5ehm10w], article[b-9xz5ehm10w] {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui[b-9xz5ehm10w] {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss[b-9xz5ehm10w] {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}
/* _content/NimbusFlow.Frontend/Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-qjlejshrrx] {
appearance: none;
cursor: pointer;
width: 3.5rem;
height: 2.5rem;
color: white;
position: absolute;
top: 0.5rem;
right: 1rem;
border: 1px solid rgba(255, 255, 255, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}
.navbar-toggler:checked[b-qjlejshrrx] {
background-color: rgba(255, 255, 255, 0.5);
}
.top-row[b-qjlejshrrx] {
height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand[b-qjlejshrrx] {
font-size: 1.1rem;
}
.bi[b-qjlejshrrx] {
display: inline-block;
position: relative;
width: 1.25rem;
height: 1.25rem;
margin-right: 0.75rem;
top: -1px;
background-size: cover;
}
.bi-house-door-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}
.bi-plus-square-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}
.bi-list-nested-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}
.nav-item[b-qjlejshrrx] {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type[b-qjlejshrrx] {
padding-top: 1rem;
}
.nav-item:last-of-type[b-qjlejshrrx] {
padding-bottom: 1rem;
}
.nav-item[b-qjlejshrrx] .nav-link {
color: #d7d7d7;
background: none;
border: none;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
width: 100%;
}
.nav-item[b-qjlejshrrx] a.active {
background-color: rgba(255,255,255,0.37);
color: white;
}
.nav-item[b-qjlejshrrx] .nav-link:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
.nav-scrollable[b-qjlejshrrx] {
display: none;
}
.navbar-toggler:checked ~ .nav-scrollable[b-qjlejshrrx] {
display: block;
}
@media (min-width: 641px) {
.navbar-toggler[b-qjlejshrrx] {
display: none;
}
.nav-scrollable[b-qjlejshrrx] {
/* Never collapse the sidebar for wide screens */
display: block;
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}

View File

@@ -1,203 +0,0 @@
/* _content/NimbusFlow.Frontend/Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-9xz5ehm10w] {
position: relative;
display: flex;
flex-direction: column;
}
main[b-9xz5ehm10w] {
flex: 1;
}
.sidebar[b-9xz5ehm10w] {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row[b-9xz5ehm10w] {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row[b-9xz5ehm10w] a:hover, .top-row[b-9xz5ehm10w] .btn-link:hover {
text-decoration: underline;
}
.top-row[b-9xz5ehm10w] a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row[b-9xz5ehm10w] {
justify-content: space-between;
}
.top-row[b-9xz5ehm10w] a, .top-row[b-9xz5ehm10w] .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page[b-9xz5ehm10w] {
flex-direction: row;
}
.sidebar[b-9xz5ehm10w] {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row[b-9xz5ehm10w] {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth[b-9xz5ehm10w] a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row[b-9xz5ehm10w], article[b-9xz5ehm10w] {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui[b-9xz5ehm10w] {
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss[b-9xz5ehm10w] {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}
/* _content/NimbusFlow.Frontend/Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-qjlejshrrx] {
appearance: none;
cursor: pointer;
width: 3.5rem;
height: 2.5rem;
color: white;
position: absolute;
top: 0.5rem;
right: 1rem;
border: 1px solid rgba(255, 255, 255, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}
.navbar-toggler:checked[b-qjlejshrrx] {
background-color: rgba(255, 255, 255, 0.5);
}
.top-row[b-qjlejshrrx] {
height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand[b-qjlejshrrx] {
font-size: 1.1rem;
}
.bi[b-qjlejshrrx] {
display: inline-block;
position: relative;
width: 1.25rem;
height: 1.25rem;
margin-right: 0.75rem;
top: -1px;
background-size: cover;
}
.bi-house-door-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}
.bi-plus-square-fill-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}
.bi-list-nested-nav-menu[b-qjlejshrrx] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}
.nav-item[b-qjlejshrrx] {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type[b-qjlejshrrx] {
padding-top: 1rem;
}
.nav-item:last-of-type[b-qjlejshrrx] {
padding-bottom: 1rem;
}
.nav-item[b-qjlejshrrx] .nav-link {
color: #d7d7d7;
background: none;
border: none;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
width: 100%;
}
.nav-item[b-qjlejshrrx] a.active {
background-color: rgba(255,255,255,0.37);
color: white;
}
.nav-item[b-qjlejshrrx] .nav-link:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
.nav-scrollable[b-qjlejshrrx] {
display: none;
}
.navbar-toggler:checked ~ .nav-scrollable[b-qjlejshrrx] {
display: block;
}
@media (min-width: 641px) {
.navbar-toggler[b-qjlejshrrx] {
display: none;
}
.nav-scrollable[b-qjlejshrrx] {
/* Never collapse the sidebar for wide screens */
display: block;
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}

View File

@@ -1,153 +0,0 @@
{
"Version": 1,
"Hash": "HQj5X023GHr+MwF0GlqlwaxDgNjaO62JkHxsoleuqe0=",
"Source": "NimbusFlow.Frontend",
"BasePath": "_content/NimbusFlow.Frontend",
"Mode": "Default",
"ManifestType": "Build",
"ReferencedProjectsConfiguration": [],
"DiscoveryPatterns": [
{
"Name": "NimbusFlow.Frontend/wwwroot",
"Source": "NimbusFlow.Frontend",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"Pattern": "**"
}
],
"Assets": [
{
"Identity": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/NimbusFlow.Frontend.styles.css",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Computed",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "NimbusFlow.Frontend.styles.css",
"AssetKind": "All",
"AssetMode": "CurrentProject",
"AssetRole": "Primary",
"AssetMergeBehavior": "",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "ScopedCss",
"AssetTraitValue": "ApplicationBundle",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/NimbusFlow.Frontend.styles.css"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/projectbundle/NimbusFlow.Frontend.bundle.scp.css",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Computed",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/projectbundle/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "NimbusFlow.Frontend.bundle.scp.css",
"AssetKind": "All",
"AssetMode": "Reference",
"AssetRole": "Primary",
"AssetMergeBehavior": "",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "ScopedCss",
"AssetTraitValue": "ProjectBundle",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/projectbundle/NimbusFlow.Frontend.bundle.scp.css"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/wwwroot/app.css",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Discovered",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "app.css",
"AssetKind": "All",
"AssetMode": "All",
"AssetRole": "Primary",
"AssetMergeBehavior": "PreferTarget",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "",
"AssetTraitValue": "",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "wwwroot/app.css"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/wwwroot/bootstrap/bootstrap.min.css",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Discovered",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "bootstrap/bootstrap.min.css",
"AssetKind": "All",
"AssetMode": "All",
"AssetRole": "Primary",
"AssetMergeBehavior": "PreferTarget",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "",
"AssetTraitValue": "",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "wwwroot/bootstrap/bootstrap.min.css"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/wwwroot/bootstrap/bootstrap.min.css.map",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Discovered",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "bootstrap/bootstrap.min.css.map",
"AssetKind": "All",
"AssetMode": "All",
"AssetRole": "Primary",
"AssetMergeBehavior": "PreferTarget",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "",
"AssetTraitValue": "",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "wwwroot/bootstrap/bootstrap.min.css.map"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/wwwroot/css/nimbusflow.css",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Discovered",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "css/nimbusflow.css",
"AssetKind": "All",
"AssetMode": "All",
"AssetRole": "Primary",
"AssetMergeBehavior": "PreferTarget",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "",
"AssetTraitValue": "",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "wwwroot/css/nimbusflow.css"
},
{
"Identity": "/home/t2/Development/nimbusflow/frontend/wwwroot/favicon.png",
"SourceId": "NimbusFlow.Frontend",
"SourceType": "Discovered",
"ContentRoot": "/home/t2/Development/nimbusflow/frontend/wwwroot/",
"BasePath": "_content/NimbusFlow.Frontend",
"RelativePath": "favicon.png",
"AssetKind": "All",
"AssetMode": "All",
"AssetRole": "Primary",
"AssetMergeBehavior": "PreferTarget",
"AssetMergeSource": "",
"RelatedAsset": "",
"AssetTraitName": "",
"AssetTraitValue": "",
"CopyToOutputDirectory": "Never",
"CopyToPublishDirectory": "PreserveNewest",
"OriginalItemSpec": "wwwroot/favicon.png"
}
]
}

View File

@@ -1 +0,0 @@
{"ContentRoots":["/home/t2/Development/nimbusflow/frontend/wwwroot/","/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/bundle/"],"Root":{"Children":{"app.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"app.css"},"Patterns":null},"bootstrap":{"Children":{"bootstrap.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"bootstrap/bootstrap.min.css"},"Patterns":null},"bootstrap.min.css.map":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"bootstrap/bootstrap.min.css.map"},"Patterns":null}},"Asset":null,"Patterns":null},"css":{"Children":{"nimbusflow.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/nimbusflow.css"},"Patterns":null}},"Asset":null,"Patterns":null},"favicon.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.png"},"Patterns":null},"NimbusFlow.Frontend.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"NimbusFlow.Frontend.styles.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}

View File

@@ -1,45 +0,0 @@
{
"Files": [
{
"Id": "/home/t2/Development/nimbusflow/frontend/obj/Debug/net8.0/scopedcss/projectbundle/NimbusFlow.Frontend.bundle.scp.css",
"PackagePath": "staticwebassets/NimbusFlow.Frontend.bundle.scp.css"
},
{
"Id": "/home/t2/Development/nimbusflow/frontend/wwwroot/app.css",
"PackagePath": "staticwebassets/app.css"
},
{
"Id": "/home/t2/Development/nimbusflow/frontend/wwwroot/bootstrap/bootstrap.min.css",
"PackagePath": "staticwebassets/bootstrap/bootstrap.min.css"
},
{
"Id": "/home/t2/Development/nimbusflow/frontend/wwwroot/bootstrap/bootstrap.min.css.map",
"PackagePath": "staticwebassets/bootstrap/bootstrap.min.css.map"
},
{
"Id": "/home/t2/Development/nimbusflow/frontend/wwwroot/css/nimbusflow.css",
"PackagePath": "staticwebassets/css/nimbusflow.css"
},
{
"Id": "/home/t2/Development/nimbusflow/frontend/wwwroot/favicon.png",
"PackagePath": "staticwebassets/favicon.png"
},
{
"Id": "obj/Debug/net8.0/staticwebassets/msbuild.NimbusFlow.Frontend.Microsoft.AspNetCore.StaticWebAssets.props",
"PackagePath": "build\\Microsoft.AspNetCore.StaticWebAssets.props"
},
{
"Id": "obj/Debug/net8.0/staticwebassets/msbuild.build.NimbusFlow.Frontend.props",
"PackagePath": "build\\NimbusFlow.Frontend.props"
},
{
"Id": "obj/Debug/net8.0/staticwebassets/msbuild.buildMultiTargeting.NimbusFlow.Frontend.props",
"PackagePath": "buildMultiTargeting\\NimbusFlow.Frontend.props"
},
{
"Id": "obj/Debug/net8.0/staticwebassets/msbuild.buildTransitive.NimbusFlow.Frontend.props",
"PackagePath": "buildTransitive\\NimbusFlow.Frontend.props"
}
],
"ElementsToRemove": []
}

View File

@@ -1,100 +0,0 @@
<Project>
<ItemGroup>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\app.css))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>app.css</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\app.css))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\bootstrap\bootstrap.min.css))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>bootstrap/bootstrap.min.css</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\bootstrap\bootstrap.min.css))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\bootstrap\bootstrap.min.css.map))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>bootstrap/bootstrap.min.css.map</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\bootstrap\bootstrap.min.css.map))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\css\nimbusflow.css))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>css/nimbusflow.css</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\css\nimbusflow.css))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.png))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>favicon.png</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>All</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName></AssetTraitName>
<AssetTraitValue></AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\favicon.png))</OriginalItemSpec>
</StaticWebAsset>
<StaticWebAsset Include="$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\NimbusFlow.Frontend.bundle.scp.css))">
<SourceType>Package</SourceType>
<SourceId>NimbusFlow.Frontend</SourceId>
<ContentRoot>$(MSBuildThisFileDirectory)..\staticwebassets\</ContentRoot>
<BasePath>_content/NimbusFlow.Frontend</BasePath>
<RelativePath>NimbusFlow.Frontend.bundle.scp.css</RelativePath>
<AssetKind>All</AssetKind>
<AssetMode>Reference</AssetMode>
<AssetRole>Primary</AssetRole>
<RelatedAsset></RelatedAsset>
<AssetTraitName>ScopedCss</AssetTraitName>
<AssetTraitValue>ProjectBundle</AssetTraitValue>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<OriginalItemSpec>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\staticwebassets\NimbusFlow.Frontend.bundle.scp.css))</OriginalItemSpec>
</StaticWebAsset>
</ItemGroup>
</Project>

View File

@@ -1,3 +0,0 @@
<Project>
<Import Project="Microsoft.AspNetCore.StaticWebAssets.props" />
</Project>

View File

@@ -1,3 +0,0 @@
<Project>
<Import Project="../build/NimbusFlow.Frontend.props" />
</Project>

View File

@@ -1,3 +0,0 @@
<Project>
<Import Project="../buildMultiTargeting/NimbusFlow.Frontend.props" />
</Project>

View File

@@ -1,64 +0,0 @@
{
"format": 1,
"restore": {
"/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj": {}
},
"projects": {
"/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj",
"projectName": "NimbusFlow.Frontend",
"projectPath": "/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj",
"packagesPath": "/home/t2/.nuget/packages/",
"outputPath": "/home/t2/Development/nimbusflow/frontend/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/t2/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/8.0.119/PortableRuntimeIdentifierGraph.json"
}
}
}
}
}

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/t2/.nuget/packages/</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/t2/.nuget/packages/</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.8.1</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="/home/t2/.nuget/packages/" />
</ItemGroup>
</Project>

View File

@@ -1,2 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

View File

@@ -1,69 +0,0 @@
{
"version": 3,
"targets": {
"net8.0": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"net8.0": []
},
"packageFolders": {
"/home/t2/.nuget/packages/": {}
},
"project": {
"version": "1.0.0",
"restore": {
"projectUniqueName": "/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj",
"projectName": "NimbusFlow.Frontend",
"projectPath": "/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj",
"packagesPath": "/home/t2/.nuget/packages/",
"outputPath": "/home/t2/Development/nimbusflow/frontend/obj/",
"projectStyle": "PackageReference",
"configFilePaths": [
"/home/t2/.nuget/NuGet/NuGet.Config"
],
"originalTargetFrameworks": [
"net8.0"
],
"sources": {
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"projectReferences": {}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48",
"net481"
],
"assetTargetFallback": true,
"warn": true,
"frameworkReferences": {
"Microsoft.AspNetCore.App": {
"privateAssets": "none"
},
"Microsoft.NETCore.App": {
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "/usr/lib64/dotnet/sdk/8.0.119/PortableRuntimeIdentifierGraph.json"
}
}
}
}

View File

@@ -1,8 +0,0 @@
{
"version": 2,
"dgSpecHash": "4VM37g4NzGscGHW+DyrAJgqbILrTqjEDnHP1JXPPpgdgYQb1HOBSeMph5AXEVHY4bn19ocXdXWcAV3zg61qCRQ==",
"success": true,
"projectFilePath": "/home/t2/Development/nimbusflow/frontend/NimbusFlow.Frontend.csproj",
"expectedPackageFiles": [],
"logs": []
}