diff options
| author | Leitwolf11 | 2026-09-07 21:30:40 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-09-07 21:30:40 +0300 |
| commit | c0cd5f4699e44899956c19176ca47ede27a21a8f (patch) | |
| tree | dc10ba78fde4c4dfaa91f4d43ffaee7bcb6c78b7 /frontend/src/components | |
| parent | e77f4585d3a1be272fe83d5a06b1d2a32fa8f7b5 (diff) | |
| download | website-c0cd5f4699e44899956c19176ca47ede27a21a8f.tar.gz | |
Separate ViGet from Progmasoft Account infrastructure
Move the Progmasoft mail operations baseline to its owning Progmaweb repository, remove the retired Astro account UI and duplicate identity backend, keep only the ViGet health boundary, add canonical sitemap signals, strengthen dependency CI, and adopt Patent Grant 1.1 across project-owned files.
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/AuthPanel.astro | 178 | ||||
| -rw-r--r-- | frontend/src/components/Icon.astro | 2 | ||||
| -rw-r--r-- | frontend/src/components/RepositoryFooter.astro | 2 | ||||
| -rw-r--r-- | frontend/src/components/RepositoryHeader.astro | 2 |
4 files changed, 3 insertions, 181 deletions
diff --git a/frontend/src/components/AuthPanel.astro b/frontend/src/components/AuthPanel.astro deleted file mode 100644 index dd7f46f..0000000 --- a/frontend/src/components/AuthPanel.astro +++ /dev/null @@ -1,178 +0,0 @@ ---- -// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.0 - -interface Props { - mode: "login" | "register" | "recover"; -} - -const { mode } = Astro.props; -const copy = { - login: { - title: "Sign in", - description: "Use your Visual X# registry account.", - submit: "Next", - switchText: "New to the registry?", - switchLabel: "Create an account", - switchHref: "https://account.progmasoft.com/register", - }, - register: { - title: "Create account", - description: "Publish and manage Visual X# packages.", - submit: "Next", - switchText: "Already have an account?", - switchLabel: "Sign in", - switchHref: "https://account.progmasoft.com/login", - }, - recover: { - title: "Recover account", - description: "Reset your password securely.", - submit: "Send code", - switchText: "Remembered your password?", - switchLabel: "Sign in", - switchHref: "https://account.progmasoft.com/login", - }, -} as const; -const content = copy[mode]; ---- - -<main class="auth-main" data-auth-flow data-mode={mode}> - <section class="auth-card glass-panel"> - <a class="auth-brand" href="https://viget.progmasoft.com/" aria-label="Visual X# package registry"> - <img src="/xsharp-logo.webp" width="44" height="44" alt="" /> - <span>Visual X# Registry</span> - </a> - - <div class="auth-heading"> - <p class="eyebrow">Visual X# package registry</p> - <h1>{content.title}</h1> - <p>{content.description}</p> - </div> - - <div class="auth-alert" data-auth-alert hidden aria-live="polite"></div> - - <button class="oauth-button" type="button" data-google> - <span class="google-mark" aria-hidden="true">G</span> - Continue with Google - </button> - - <div class="auth-divider"><span>or continue with email</span></div> - - <noscript> - <p class="auth-alert" data-kind="error"> - JavaScript is required for the secure account flow. Enable it and reload this page. - </p> - </noscript> - - <form class="auth-form" data-auth-form method="post" novalidate> - <div class="auth-step" data-step="email"> - <label for="auth-email">Email address</label> - <input - id="auth-email" - name="email" - type="email" - autocomplete="email" - inputmode="email" - placeholder="name@example.com" - required - /> - <button class="auth-submit" type="submit">{content.submit}</button> - </div> - - <div class="auth-step" data-step="password" hidden> - <button class="auth-back" type="button" data-back>← Change email</button> - <span class="auth-email-value" data-email-value></span> - <label for="auth-password">Password</label> - <input - id="auth-password" - name="password" - type="password" - autocomplete={mode === "register" ? "new-password" : "current-password"} - minlength="8" - required - /> - { - mode === "register" && ( - <p class="field-hint">Use at least 8 characters. Passwordless accounts are not created.</p> - ) - } - <button class="auth-submit" type="submit">{mode === "register" ? "Create account" : "Sign in"}</button> - { - mode === "login" && ( - <a class="auth-recovery" href="https://account.progmasoft.com/recover">Forgot password?</a> - ) - } - </div> - - { - mode === "register" && ( - <div class="auth-step" data-step="publisher" hidden> - <button class="auth-back" type="button" data-publisher-back>← Change password</button> - <span class="auth-email-value" data-email-value></span> - <label for="auth-publisher-name">Username</label> - <input - id="auth-publisher-name" - name="publisher-name" - type="text" - autocomplete="username" - autocapitalize="none" - spellcheck="false" - pattern="[A-Z][A-Za-z0-9]{7,127}" - minlength="8" - maxlength="128" - placeholder="MyPublisher" - required - /> - <p class="field-hint"> - Use 8–128 ASCII letters or digits and start with an uppercase letter. <code>Progmasoft</code> and{" "} - <code>Leitwolf</code> are reserved. - </p> - <button class="auth-submit" type="submit">Continue</button> - </div> - ) - } - - <div class="auth-step" data-step="code" hidden> - <span class="auth-email-value" data-code-email></span> - <label for="auth-code">Verification code</label> - <input - id="auth-code" - name="code" - type="text" - autocomplete="one-time-code" - inputmode="text" - pattern="[A-Za-z0-9]{8}" - minlength="8" - maxlength="8" - placeholder="Enter the code from your email" - required - /> - <p class="field-hint"> - The code is sent by <code>noreply@progmasoft.com</code>. It expires and can only be used once. If it does not - appear in your inbox, check your spam or junk folder. - </p> - <button class="auth-submit" type="submit">Verify email</button> - <button class="auth-resend" type="button" data-resend>Send another code</button> - </div> - - <div class="auth-step" data-step="new-password" hidden> - <label for="auth-new-password">New password</label> - <input - id="auth-new-password" - name="new-password" - type="password" - autocomplete="new-password" - minlength="8" - required - /> - <button class="auth-submit" type="submit">Set new password</button> - </div> - </form> - - <p class="auth-switch"> - {content.switchText} <a href={content.switchHref}>{content.switchLabel}</a> - </p> - </section> -</main> - -<script is:inline type="module" src="/scripts/auth-flow.v3.js"></script> diff --git a/frontend/src/components/Icon.astro b/frontend/src/components/Icon.astro index 9787db2..6231dbb 100644 --- a/frontend/src/components/Icon.astro +++ b/frontend/src/components/Icon.astro @@ -1,6 +1,6 @@ --- // SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.0 +// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 interface Props { name: diff --git a/frontend/src/components/RepositoryFooter.astro b/frontend/src/components/RepositoryFooter.astro index 58b82af..cdb2c1f 100644 --- a/frontend/src/components/RepositoryFooter.astro +++ b/frontend/src/components/RepositoryFooter.astro @@ -1,6 +1,6 @@ --- // SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.0 +// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 --- <footer class="registry-footer"> diff --git a/frontend/src/components/RepositoryHeader.astro b/frontend/src/components/RepositoryHeader.astro index 3fbc8f9..9755869 100644 --- a/frontend/src/components/RepositoryHeader.astro +++ b/frontend/src/components/RepositoryHeader.astro @@ -1,6 +1,6 @@ --- // SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.0 +// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 interface Props { authenticated?: boolean; |