SwitchCardComponent.razor 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. @using RackPeek.Domain.Resources.Hardware.Models
  2. <div class="border border-zinc-800 rounded p-4 bg-zinc-900">
  3. <div class="flex justify-between items-center mb-3">
  4. <div class="text-zinc-100">
  5. @Switch.Name
  6. </div>
  7. @if (!string.IsNullOrWhiteSpace(Switch.Model))
  8. {
  9. <span class="text-xs text-zinc-400">
  10. @Switch.Model
  11. </span>
  12. }
  13. </div>
  14. <div class="grid grid-cols-1 md:grid-cols-2 gap-3 text-sm">
  15. @if (Switch.Managed is not null || Switch.Poe is not null)
  16. {
  17. <div>
  18. <div class="text-zinc-400 mb-1">Features</div>
  19. <div class="flex gap-2 flex-wrap">
  20. @if (Switch.Managed == true)
  21. {
  22. <span class="text-xs px-2 py-0.5 rounded bg-zinc-800 text-zinc-300">
  23. Managed
  24. </span>
  25. }
  26. @if (Switch.Poe == true)
  27. {
  28. <span class="text-xs px-2 py-0.5 rounded bg-zinc-800 text-zinc-300">
  29. PoE
  30. </span>
  31. }
  32. </div>
  33. </div>
  34. }
  35. @if (Switch.Ports?.Any() == true)
  36. {
  37. <div>
  38. <div class="text-zinc-400 mb-1">Ports</div>
  39. @foreach (var port in Switch.Ports)
  40. {
  41. <div class="text-zinc-300">
  42. @port.Count× @port.Type — @port.Speed Gbps
  43. </div>
  44. }
  45. </div>
  46. }
  47. </div>
  48. </div>
  49. @code {
  50. [Parameter][EditorRequired]
  51. public Switch Switch { get; set; } = default!;
  52. }