|
1 | 1 | @using System.Security.Claims |
2 | 2 | @using FlowSynx.PluginRegistry.Application.Services |
| 3 | +@using FlowSynx.Pluginregistry.Components.Shared |
3 | 4 |
|
4 | 5 | @inherits LayoutComponentBase |
5 | 6 | @inject NavigationManager Navigation |
|
8 | 9 | @inject AuthenticationStateProvider AuthenticationStateProvider |
9 | 10 |
|
10 | 11 | <main class="flex-shrink-0"> |
11 | | - <div class="hero-banner pb-3"> |
12 | | - <div class="container px-5"> |
13 | | - <nav class="navbar navbar-expand-lg"> |
14 | | - <a class="navbar-brand pe-2" href="/"> |
15 | | - <img src="/images/logo.png" alt="Logo" width="24" height="24" class="d-inline-block align-text-top"> |
16 | | - Plugin Registry |
| 12 | + <div class="hero-banner"> |
| 13 | + <div class="container px-3 px-lg-3"> |
| 14 | + <nav class="navbar navbar-expand-lg navbar-light py-3 px-1"> |
| 15 | + <a class="navbar-brand d-flex align-items-center" href="/"> |
| 16 | + <img src="/images/logo.png" alt="Logo" width="48" height="48" class="me-2"> |
| 17 | + <span class="fw-bold fs-2">Plugin Registry</span> |
17 | 18 | </a> |
18 | | - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" |
| 19 | + <button class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" |
19 | 20 | data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" |
20 | 21 | aria-expanded="false" aria-label="Toggle navigation"> |
21 | 22 | <span class="navbar-toggler-icon"></span> |
22 | 23 | </button> |
23 | 24 | <div class="collapse navbar-collapse" id="navbarSupportedContent"> |
24 | | - <ul class="navbar-nav me-auto mb-2 mb-lg-0"> |
25 | | - <li class="nav-item"><a class="nav-link" href="/plugins">Plugins</a></li> |
26 | | - <li class="nav-item"><a class="nav-link" href="/manage/upload">Upload</a></li> |
27 | | - <li class="nav-item"><a class="nav-link" href="/downloads">Downloads</a></li> |
| 25 | + <ul class="navbar-nav ms-auto mb-2 mb-lg-0 gap-1"> |
| 26 | + <li class="nav-item"> |
| 27 | + <a class="nav-link rounded-2 px-3" href="/plugins"> |
| 28 | + <i class="bi bi-plugin me-1"></i>Plugins |
| 29 | + </a> |
| 30 | + </li> |
| 31 | + <li class="nav-item"> |
| 32 | + <a class="nav-link rounded-2 px-3" href="/manage/upload"> |
| 33 | + <i class="bi bi-cloud-upload me-1"></i>Upload |
| 34 | + </a> |
| 35 | + </li> |
| 36 | + <li class="nav-item"> |
| 37 | + <a class="nav-link rounded-2 px-3" href="/downloads"> |
| 38 | + <i class="bi bi-download me-1"></i>Downloads |
| 39 | + </a> |
| 40 | + </li> |
| 41 | + <li class="nav-item"> |
| 42 | + <a class="nav-link rounded-2 px-3" href="/policies/contact"> |
| 43 | + <i class="bi bi-envelope me-1"></i>Contact |
| 44 | + </a> |
| 45 | + </li> |
28 | 46 | </ul> |
29 | | - <ul class="navbar-nav ms-auto mb-2 mb-lg-0"> |
| 47 | + <div class="vr mx-2 d-none d-lg-block"></div> |
| 48 | + <ul class="navbar-nav mb-2 mb-lg-0"> |
30 | 49 | @if (!IsAuthenticated) |
31 | 50 | { |
32 | | - <li class="nav-item"><a class="nav-link" href="@GetLoginUrl()">Login</a></li> |
| 51 | + <li class="nav-item"> |
| 52 | + <a class="nav-link rounded-2 px-3" href="@GetLoginUrl()"> |
| 53 | + <i class="bi bi-box-arrow-in-right me-2"></i>Login |
| 54 | + </a> |
| 55 | + </li> |
33 | 56 | } |
34 | 57 | else |
35 | 58 | { |
36 | 59 | <li class="nav-item dropdown"> |
37 | | - <a href="#" role="button" class="d-flex nav-link align-items-center text-decoration-none dropdown-toggle" id="accountDropdown" data-bs-toggle="dropdown" aria-expanded="false"> |
38 | | - <img src="@gravatar.GetGravatarUrl(@Email!, 24);" width="24" height="24" class="rounded-circle me-2" alt="@Name"> |
39 | | - <span class="d-none d-sm-inline">@Name</span> |
| 60 | + <a href="#" role="button" class="nav-link d-flex align-items-center text-decoration-none dropdown-toggle rounded-2 px-3" |
| 61 | + id="accountDropdown" data-bs-toggle="dropdown" aria-expanded="false"> |
| 62 | + <img src="@gravatar.GetGravatarUrl(@Email!, 24);" width="24" height="24" |
| 63 | + class="rounded-circle border border-2 border-light shadow-sm me-2" alt="@Name"> |
| 64 | + <span class="fw-semibold d-none d-lg-inline">@Name</span> |
40 | 65 | </a> |
41 | | - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="accountDropdown"> |
42 | | - <li><a class="dropdown-item" href="/profiles/@Login">View Profile</a></li> |
43 | | - <li><a class="dropdown-item" href="/account/apikeys">Api Keys</a></li> |
44 | | - <li><hr class="dropdown-divider"></li> |
45 | | - <li><a class="dropdown-item" href="/api/account/logout">Logout</a></li> |
| 66 | + <ul class="dropdown-menu dropdown-menu-end shadow border-0 mt-2" aria-labelledby="accountDropdown"> |
| 67 | + <li class="px-3 py-2 border-bottom"> |
| 68 | + <small class="text-muted">Signed in as</small> |
| 69 | + <div class="fw-semibold">@Name</div> |
| 70 | + </li> |
| 71 | + <li><a class="dropdown-item rounded-2 my-1" href="/profiles/@Login"> |
| 72 | + <i class="bi bi-person me-2"></i>View Profile |
| 73 | + </a></li> |
| 74 | + <li><a class="dropdown-item rounded-2 my-1" href="/account/apikeys"> |
| 75 | + <i class="bi bi-key me-2"></i>API Keys |
| 76 | + </a></li> |
| 77 | + <li><hr class="dropdown-divider my-2"></li> |
| 78 | + <li><a class="dropdown-item rounded-2 text-danger" href="/api/account/logout"> |
| 79 | + <i class="bi bi-box-arrow-right me-2"></i>Logout |
| 80 | + </a></li> |
46 | 81 | </ul> |
47 | 82 | </li> |
48 | 83 | } |
|
51 | 86 | </nav> |
52 | 87 | </div> |
53 | 88 |
|
| 89 | + <div class="container px-3 px-lg-3 py-4"> |
| 90 | + <form class="d-flex justify-content-center" role="search" method="get" action="/plugins"> |
| 91 | + <div class="search-wrapper"> |
| 92 | + <InputText @bind-Value="q" |
| 93 | + type="search" |
| 94 | + class="form-control form-control-lg custom-search-input" |
| 95 | + placeholder="Search for plugins..." |
| 96 | + aria-label="Search plugins..." /> |
54 | 97 |
|
55 | | - <div class="py-3"> |
56 | | - <div class="container px-5"> |
57 | | - <form class="d-flex" role="search" method="get" action="/plugins"> |
58 | | - <div class="input-group"> |
59 | | - <InputText @bind-Value="q" type="search" class="form-control border-dark" placeholder="Search plugins..." aria-label="Search plugins..." aria-describedby="button-addon2"></InputText> |
60 | | - <button class="btn btn-outline-dark" type="submit" id="button-addon2">Search</button> |
61 | | - </div> |
62 | | - </form> |
63 | | - </div> |
| 98 | + <button type="submit" class="search-button"> |
| 99 | + <i class="bi bi-search"></i> |
| 100 | + </button> |
| 101 | + </div> |
| 102 | + </form> |
64 | 103 | </div> |
| 104 | + |
65 | 105 | @if (IsHomePage) |
66 | 106 | { |
67 | | - <section class="py-1"> |
68 | | - <div class="container px-5"> |
69 | | - <div class="row gx-5 align-items-center justify-content-center hero-content"> |
70 | | - <div class="col-lg-12 col-xl-12 col-xxl-12 text-center"> |
| 107 | + <section class="py-5"> |
| 108 | + <div class="container px-4 px-lg-5"> |
| 109 | + <div class="row gx-5 align-items-center justify-content-center"> |
| 110 | + <div class="col-lg-10 col-xl-9 col-xxl-8 text-center"> |
71 | 111 | <div class="my-5"> |
72 | | - <h1 class="display-3 fw-bold mb-3">FlowSynx Plugin Registry</h1> |
73 | | - <p class="lead fw-normal mb-4"> |
| 112 | + <h1 class="display-3 fw-bold mb-4 text-white"> |
| 113 | + FlowSynx Plugin Registry |
| 114 | + </h1> |
| 115 | + <p class="lead text-white mb-5 fs-4"> |
74 | 116 | Extend your automation capabilities with a powerful ecosystem of plugins. |
75 | 117 | Discover, share, and deploy components that accelerate your workflow. |
76 | 118 | </p> |
77 | | - <div class="d-grid gap-3 d-sm-flex justify-content-sm-center"> |
78 | | - <a class="btn btn-dark btn-lg px-4 me-sm-3" href="/plugins">Explore Plugins</a> |
79 | | - <a class="btn btn-outline-dark btn-lg px-4" href="#about">Learn More</a> |
| 119 | + <div class="d-flex gap-3 justify-content-center flex-wrap"> |
| 120 | + <a class="btn btn-outline-light btn-lg px-5 py-3 rounded-pill shadow" href="/plugins"> |
| 121 | + <i class="bi bi-grid-3x3-gap me-2"></i>Explore Plugins |
| 122 | + </a> |
| 123 | + <a class="btn btn-outline-light btn-lg px-5 py-3 rounded-pill" href="#features"> |
| 124 | + <i class="bi bi-info-circle me-2"></i>Learn More |
| 125 | + </a> |
80 | 126 | </div> |
81 | 127 | </div> |
82 | 128 | </div> |
|
89 | 135 | @Body |
90 | 136 | </main> |
91 | 137 |
|
92 | | -<footer class="bg-light py-4 mt-auto"> |
93 | | - <div class="container px-5"> |
94 | | - <div class="row align-items-center justify-content-between flex-column flex-sm-row"> |
95 | | - <div class="col-auto"> |
96 | | - <div class="small m-0">Copyright © <a href="https://flowsynx.io" target="_blank">FlowSynx</a> 2025</div> |
97 | | - </div> |
98 | | - <div class="col-auto"> |
99 | | - <ul class="list-inline small mb-0"> |
100 | | - <li class="list-inline-item"><a href="/downloads" class="text-decoration-none text-muted">Downloads</a></li> |
101 | | - <li class="list-inline-item">•</li> |
102 | | - <li class="list-inline-item"><a href="/policies/privacy" class="text-decoration-none text-muted">Privacy Policy</a></li> |
103 | | - <li class="list-inline-item">•</li> |
104 | | - <li class="list-inline-item"><a href="/policies/terms" class="text-decoration-none text-muted">Terms of Service</a></li> |
105 | | - <li class="list-inline-item">•</li> |
106 | | - <li class="list-inline-item"><a href="/policies/contact" class="text-decoration-none text-muted">Contact</a></li> |
107 | | - </ul> |
108 | | - </div> |
109 | | - </div> |
110 | | - </div> |
111 | | -</footer> |
| 138 | +<Footer /> |
112 | 139 |
|
113 | | -<div id="blazor-error-ui" data-nosnippet> |
114 | | - An unhandled error has occurred. |
115 | | - <a href="." class="reload">Reload</a> |
116 | | - <span class="dismiss">🗙</span> |
| 140 | +<div id="blazor-error-ui" data-nosnippet class="shadow-lg"> |
| 141 | + <div class="d-flex align-items-center"> |
| 142 | + <i class="bi bi-exclamation-triangle-fill me-2"></i> |
| 143 | + <span>An unhandled error has occurred.</span> |
| 144 | + </div> |
| 145 | + <a href="." class="reload btn btn-sm btn-light ms-3">Reload</a> |
| 146 | + <span class="dismiss">×</span> |
117 | 147 | </div> |
118 | 148 |
|
119 | 149 | @code { |
|
0 commit comments