@terreno/mcp 57.19.2 → 57.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +393 -0
- package/README.md +32 -269
- package/dist/bootstrap.d.ts +12 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +77 -122
- package/dist/bootstrap.js.map +1 -1
- package/dist/docs/guidelines/ui/guidelines/core.md +1 -1
- package/dist/docs/resources/overview.md +4 -2
- package/dist/docs/resources/patterns.md +237 -176
- package/dist/docs/resources/ui.md +48 -17
- package/dist/docs/templates/bootstrap/frontend/app/(tabs)/profile.template.tsx +0 -26
- package/dist/docs/templates/bootstrap/frontend/app/_layout.template.tsx +3 -2
- package/dist/docs/templates/bootstrap/frontend/app/login.template.tsx +1 -1
- package/dist/docs/upgrades/57.20.0.md +238 -0
- package/dist/docs/versioned/next/approval-rubric.md +30 -12
- package/dist/docs/versioned/next/explanation/README.md +5 -0
- package/dist/docs/versioned/next/explanation/account-linking.md +169 -0
- package/dist/docs/versioned/next/explanation/admin-interface.md +1 -1
- package/dist/docs/versioned/next/explanation/agent-guidelines.md +173 -0
- package/dist/docs/versioned/next/explanation/ai-development-loop.md +196 -0
- package/dist/docs/versioned/next/explanation/authentication.md +45 -1
- package/dist/docs/versioned/next/explanation/consent-forms.md +105 -0
- package/dist/docs/versioned/next/explanation/example-coverage.md +1 -0
- package/dist/docs/versioned/next/explanation/local-first-data.md +1 -1
- package/dist/docs/versioned/next/explanation/organizations.md +37 -0
- package/dist/docs/versioned/next/explanation/planning-plugins.md +4 -0
- package/dist/docs/versioned/next/explanation/responsive-design.md +143 -0
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +11 -0
- package/dist/docs/versioned/next/explanation/schema-metadata.md +5 -0
- package/dist/docs/versioned/next/how-to/README.md +7 -2
- package/dist/docs/versioned/next/how-to/audit-log.md +22 -3
- package/dist/docs/versioned/next/how-to/automate-terreno-upgrades.md +169 -0
- package/dist/docs/versioned/next/how-to/build-list-detail-screens.md +160 -0
- package/dist/docs/versioned/next/how-to/circleci.md +15 -5
- package/dist/docs/versioned/next/how-to/configure-better-auth.md +673 -53
- package/dist/docs/versioned/next/how-to/create-a-terreno-app.md +8 -5
- package/dist/docs/versioned/next/how-to/debug-with-mcp.md +393 -23
- package/dist/docs/versioned/next/how-to/enable-mcp-oauth.md +54 -3
- package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +9 -0
- package/dist/docs/versioned/next/how-to/password-reset.md +1 -1
- package/dist/docs/versioned/next/how-to/recover-locked-out-user.md +112 -0
- package/dist/docs/versioned/next/how-to/run-tests-locally.md +37 -8
- package/dist/docs/versioned/next/how-to/set-up-social-login.md +424 -0
- package/dist/docs/versioned/next/how-to/set-up-terreno-mcp.md +241 -36
- package/dist/docs/versioned/next/how-to/sign-consent-on-behalf.md +139 -0
- package/dist/docs/versioned/next/how-to/upgrade-terreno.md +4 -0
- package/dist/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +47 -32
- package/dist/docs/versioned/next/implementationPlans/auth-experience.md +952 -0
- package/dist/docs/versioned/next/implementationPlans/consent-forms.md +8 -0
- package/dist/docs/versioned/next/implementationPlans/list-detail-layout.md +297 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/HANDOFF.md +211 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/AnotherWay.html +121 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/BackupCode.html +72 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/Cancelled.html +87 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/ContinueEmail.html +64 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/FirstVisit.html +81 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/Main.html +88 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/ManageAccounts.html +77 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/NotLinked.html +92 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/SigningIn.html +60 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/TwoFactor.html +76 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/TwoFactorError.html +81 -0
- package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/WrongPassword.html +69 -0
- package/dist/docs/versioned/next/implementationPlans/mcp-boost-parity.md +1 -1
- package/dist/docs/versioned/next/plans/2026-10-23-provisional-consent.md +297 -0
- package/dist/docs/versioned/next/plans/2026-10-29-fix-mcp-oauth-native-and-machine.md +68 -0
- package/dist/docs/versioned/next/reference/README.md +1 -0
- package/dist/docs/versioned/next/reference/account-security.md +700 -0
- package/dist/docs/versioned/next/reference/admin-backend.md +3 -1
- package/dist/docs/versioned/next/reference/admin-frontend.md +225 -1
- package/dist/docs/versioned/next/reference/api.md +461 -35
- package/dist/docs/versioned/next/reference/cli.md +1 -1
- package/dist/docs/versioned/next/reference/comms.md +8 -0
- package/dist/docs/versioned/next/reference/create-terreno-app.md +3 -1
- package/dist/docs/versioned/next/reference/environment-variables.md +9 -3
- package/dist/docs/versioned/next/reference/legacy/rtk.md +19 -3
- package/dist/docs/versioned/next/reference/lifecycle-plugin.md +6 -0
- package/dist/docs/versioned/next/reference/mcp-server.md +1158 -441
- package/dist/docs/versioned/next/reference/syncdb.md +8 -1
- package/dist/docs/versioned/next/reference/ui.md +1271 -27
- package/dist/docs/versioned/next/tasks/ai-dev-loop-boost.md +28 -16
- package/dist/docs/versioned/next/tutorials/README.md +4 -0
- package/dist/httpApp.d.ts +14 -0
- package/dist/httpApp.d.ts.map +1 -0
- package/dist/httpApp.js +99 -0
- package/dist/httpApp.js.map +1 -0
- package/dist/index.js +8 -90
- package/dist/index.js.map +1 -1
- package/dist/local/localTools.d.ts.map +1 -1
- package/dist/local/localTools.js +44 -14
- package/dist/local/localTools.js.map +1 -1
- package/dist/local/metro/metroDevSession.d.ts +18 -0
- package/dist/local/metro/metroDevSession.d.ts.map +1 -1
- package/dist/local/metro/metroDevSession.js +42 -3
- package/dist/local/metro/metroDevSession.js.map +1 -1
- package/dist/local/tools/databaseQuery.d.ts.map +1 -1
- package/dist/local/tools/databaseQuery.js +3 -13
- package/dist/local/tools/databaseQuery.js.map +1 -1
- package/dist/local/tools/databaseSchema.d.ts.map +1 -1
- package/dist/local/tools/databaseSchema.js +3 -13
- package/dist/local/tools/databaseSchema.js.map +1 -1
- package/dist/local/tools/localMongo.d.ts +10 -0
- package/dist/local/tools/localMongo.d.ts.map +1 -0
- package/dist/local/tools/localMongo.js +30 -0
- package/dist/local/tools/localMongo.js.map +1 -0
- package/dist/local/tools/runtime.d.ts +18 -2
- package/dist/local/tools/runtime.d.ts.map +1 -1
- package/dist/local/tools/runtime.js +75 -20
- package/dist/local/tools/runtime.js.map +1 -1
- package/dist/local/tools/syncDb.d.ts +11 -0
- package/dist/local/tools/syncDb.d.ts.map +1 -1
- package/dist/local/tools/syncDb.js +15 -3
- package/dist/local/tools/syncDb.js.map +1 -1
- package/dist/rateLimit.d.ts +35 -0
- package/dist/rateLimit.d.ts.map +1 -0
- package/dist/rateLimit.js +112 -0
- package/dist/rateLimit.js.map +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +42 -60
- package/dist/tools.js.map +1 -1
- package/package.json +4 -3
- package/src/docs/guidelines/ui/guidelines/core.md +1 -1
- package/src/docs/resources/overview.md +4 -2
- package/src/docs/resources/patterns.md +237 -176
- package/src/docs/resources/ui.md +48 -17
- package/src/docs/templates/bootstrap/frontend/app/(tabs)/profile.template.tsx +0 -26
- package/src/docs/templates/bootstrap/frontend/app/_layout.template.tsx +3 -2
- package/src/docs/templates/bootstrap/frontend/app/login.template.tsx +1 -1
- package/src/docs/upgrades/57.20.0.md +238 -0
- package/src/docs/versioned/next/approval-rubric.md +30 -12
- package/src/docs/versioned/next/explanation/README.md +5 -0
- package/src/docs/versioned/next/explanation/account-linking.md +169 -0
- package/src/docs/versioned/next/explanation/admin-interface.md +1 -1
- package/src/docs/versioned/next/explanation/agent-guidelines.md +173 -0
- package/src/docs/versioned/next/explanation/ai-development-loop.md +196 -0
- package/src/docs/versioned/next/explanation/authentication.md +45 -1
- package/src/docs/versioned/next/explanation/consent-forms.md +105 -0
- package/src/docs/versioned/next/explanation/example-coverage.md +1 -0
- package/src/docs/versioned/next/explanation/local-first-data.md +1 -1
- package/src/docs/versioned/next/explanation/organizations.md +37 -0
- package/src/docs/versioned/next/explanation/planning-plugins.md +4 -0
- package/src/docs/versioned/next/explanation/responsive-design.md +143 -0
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +11 -0
- package/src/docs/versioned/next/explanation/schema-metadata.md +5 -0
- package/src/docs/versioned/next/how-to/README.md +7 -2
- package/src/docs/versioned/next/how-to/audit-log.md +22 -3
- package/src/docs/versioned/next/how-to/automate-terreno-upgrades.md +169 -0
- package/src/docs/versioned/next/how-to/build-list-detail-screens.md +160 -0
- package/src/docs/versioned/next/how-to/circleci.md +15 -5
- package/src/docs/versioned/next/how-to/configure-better-auth.md +673 -53
- package/src/docs/versioned/next/how-to/create-a-terreno-app.md +8 -5
- package/src/docs/versioned/next/how-to/debug-with-mcp.md +393 -23
- package/src/docs/versioned/next/how-to/enable-mcp-oauth.md +54 -3
- package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +9 -0
- package/src/docs/versioned/next/how-to/password-reset.md +1 -1
- package/src/docs/versioned/next/how-to/recover-locked-out-user.md +112 -0
- package/src/docs/versioned/next/how-to/run-tests-locally.md +37 -8
- package/src/docs/versioned/next/how-to/set-up-social-login.md +424 -0
- package/src/docs/versioned/next/how-to/set-up-terreno-mcp.md +241 -36
- package/src/docs/versioned/next/how-to/sign-consent-on-behalf.md +139 -0
- package/src/docs/versioned/next/how-to/upgrade-terreno.md +4 -0
- package/src/docs/versioned/next/implementationPlans/ai-dev-loop-boost.md +47 -32
- package/src/docs/versioned/next/implementationPlans/auth-experience.md +952 -0
- package/src/docs/versioned/next/implementationPlans/consent-forms.md +8 -0
- package/src/docs/versioned/next/implementationPlans/list-detail-layout.md +297 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/HANDOFF.md +211 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/AnotherWay.html +121 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/BackupCode.html +72 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/Cancelled.html +87 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/ContinueEmail.html +64 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/FirstVisit.html +81 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/Main.html +88 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/ManageAccounts.html +77 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/NotLinked.html +92 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/SigningIn.html +60 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/TwoFactor.html +76 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/TwoFactorError.html +81 -0
- package/src/docs/versioned/next/implementationPlans/login-redesign/boards/WrongPassword.html +69 -0
- package/src/docs/versioned/next/implementationPlans/mcp-boost-parity.md +1 -1
- package/src/docs/versioned/next/plans/2026-10-23-provisional-consent.md +297 -0
- package/src/docs/versioned/next/plans/2026-10-29-fix-mcp-oauth-native-and-machine.md +68 -0
- package/src/docs/versioned/next/reference/README.md +1 -0
- package/src/docs/versioned/next/reference/account-security.md +700 -0
- package/src/docs/versioned/next/reference/admin-backend.md +3 -1
- package/src/docs/versioned/next/reference/admin-frontend.md +225 -1
- package/src/docs/versioned/next/reference/api.md +461 -35
- package/src/docs/versioned/next/reference/cli.md +1 -1
- package/src/docs/versioned/next/reference/comms.md +8 -0
- package/src/docs/versioned/next/reference/create-terreno-app.md +3 -1
- package/src/docs/versioned/next/reference/environment-variables.md +9 -3
- package/src/docs/versioned/next/reference/legacy/rtk.md +19 -3
- package/src/docs/versioned/next/reference/lifecycle-plugin.md +6 -0
- package/src/docs/versioned/next/reference/mcp-server.md +1158 -441
- package/src/docs/versioned/next/reference/syncdb.md +8 -1
- package/src/docs/versioned/next/reference/ui.md +1271 -27
- package/src/docs/versioned/next/tasks/ai-dev-loop-boost.md +28 -16
- package/src/docs/versioned/next/tutorials/README.md +4 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: another way</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-sec-xd:#092e3a;--surface-errorLight:#fdd7d7;--surface-warningLight:#ffe3c6;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-error:#bd1111;--text-warning:#b14202;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-hover:#d9d9d9;--border-focus:#73cae8;--border-error:#d33232;--border-warning:#f36719;box-sizing:border-box;width:390px;min-height:100%;padding:56px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.logo{width:48px;height:48px;border-radius:16px;background:var(--surface-sec-xd);color:#fff;display:grid;place-items:center;font:700 12px/1 Nunito,sans-serif}
|
|
14
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
15
|
+
.sub{margin:4px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
16
|
+
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
|
|
17
|
+
.sec-title{margin:0;font:700 16px/24px "Titillium Web",sans-serif}
|
|
18
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
19
|
+
.list{border:1px solid var(--border-default);border-radius:16px;overflow:hidden}
|
|
20
|
+
.acct{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 16px;box-sizing:border-box;background:var(--surface-base);border:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
|
|
21
|
+
.acct+.acct{border-top:1px solid var(--border-hover)}
|
|
22
|
+
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 18px/1 "Titillium Web",sans-serif}
|
|
23
|
+
.acct-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
24
|
+
.acct-name{font-weight:700;font-size:16px;line-height:22px;display:flex;align-items:center;gap:8px}
|
|
25
|
+
.acct-meta{font-size:12px;line-height:16px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
|
|
26
|
+
.chev{flex:none;width:20px;height:20px;color:var(--text-secondary)}
|
|
27
|
+
.pill{flex:none;font:700 12px/16px Nunito,sans-serif;padding:2px 8px;border-radius:360px;background:var(--surface-sec-xl);color:var(--text-sec-d);border:1px solid var(--surface-sec-l)}
|
|
28
|
+
.btn{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:48px;box-sizing:border-box;padding:0 20px;border-radius:360px;border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer;text-decoration:none}
|
|
29
|
+
.btn .ico{position:absolute;left:20px;width:18px;height:18px}
|
|
30
|
+
.btn-primary{background:var(--surface-primary);border-color:var(--surface-primary);color:#fff;font-size:19px}
|
|
31
|
+
.stack{display:flex;flex-direction:column;gap:12px}
|
|
32
|
+
.divider{display:flex;align-items:center;gap:12px;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
33
|
+
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--border-default)}
|
|
34
|
+
.form{display:flex;flex-direction:column;gap:16px}
|
|
35
|
+
.field{display:flex;flex-direction:column;gap:6px}
|
|
36
|
+
.lbl-row{display:flex;justify-content:space-between;align-items:baseline}
|
|
37
|
+
.lbl{font:600 16px/24px Nunito,sans-serif}
|
|
38
|
+
.input{box-sizing:border-box;width:100%;height:48px;padding:0 14px;border:1px solid var(--border-default);border-radius:4px;background:var(--surface-base);font:16px Nunito,sans-serif;color:var(--text-primary)}
|
|
39
|
+
.input::placeholder{color:var(--text-extraLight)}
|
|
40
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
41
|
+
</style>
|
|
42
|
+
<main class="screen">
|
|
43
|
+
<div class="logo" aria-label="Your app logo">LOGO</div>
|
|
44
|
+
<div>
|
|
45
|
+
<h1 class="h1">Welcome back</h1>
|
|
46
|
+
<p class="sub">Pick up where you left off.</p>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<section aria-labelledby="aw-acc">
|
|
50
|
+
<div class="sec-head">
|
|
51
|
+
<h2 id="aw-acc" class="sec-title">Continue as</h2>
|
|
52
|
+
<button class="link" type="button">Edit</button>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="list">
|
|
55
|
+
<button class="acct" type="button">
|
|
56
|
+
<span class="avatar" style="background: #2b6072" aria-hidden="true">J</span>
|
|
57
|
+
<span class="acct-body">
|
|
58
|
+
<span class="acct-name">Josh Gachnang <span class="pill">Last used</span></span>
|
|
59
|
+
<span class="acct-meta">
|
|
60
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"></path></svg>
|
|
61
|
+
Apple · j***@n***.io
|
|
62
|
+
</span>
|
|
63
|
+
</span>
|
|
64
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
65
|
+
</button>
|
|
66
|
+
<button class="acct" type="button">
|
|
67
|
+
<span class="avatar" style="background: #b14202" aria-hidden="true">J</span>
|
|
68
|
+
<span class="acct-body">
|
|
69
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
70
|
+
<span class="acct-meta">
|
|
71
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"></path></svg>
|
|
72
|
+
Google · j***@g***.com
|
|
73
|
+
</span>
|
|
74
|
+
</span>
|
|
75
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
</section>
|
|
79
|
+
|
|
80
|
+
<div class="divider">or sign in another way</div>
|
|
81
|
+
|
|
82
|
+
<div class="stack">
|
|
83
|
+
<button class="btn" type="button">
|
|
84
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"></path></svg>
|
|
85
|
+
Continue with Apple
|
|
86
|
+
</button>
|
|
87
|
+
<button class="btn" type="button">
|
|
88
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"></path></svg>
|
|
89
|
+
Continue with Google
|
|
90
|
+
</button>
|
|
91
|
+
<button class="btn" type="button">
|
|
92
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg>
|
|
93
|
+
Continue with GitHub
|
|
94
|
+
</button>
|
|
95
|
+
<button class="btn" type="button">
|
|
96
|
+
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="7.5" cy="15.5" r="4.5"></circle><path d="M10.7 12.3 21 2M17 6l3 3M14.5 8.5l2.5 2.5"></path></svg>
|
|
97
|
+
Sign in with a passkey
|
|
98
|
+
</button>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div class="divider">or use your email</div>
|
|
102
|
+
|
|
103
|
+
<form class="form">
|
|
104
|
+
<div class="field">
|
|
105
|
+
<label class="lbl" for="aw-email">Email</label>
|
|
106
|
+
<input class="input" id="aw-email" type="email" placeholder="you@example.com" autocomplete="username webauthn">
|
|
107
|
+
</div>
|
|
108
|
+
<div class="field">
|
|
109
|
+
<div class="lbl-row">
|
|
110
|
+
<label class="lbl" for="aw-pw">Password</label>
|
|
111
|
+
<a class="link" href="#" style="font-size: 14px">Forgot password?</a>
|
|
112
|
+
</div>
|
|
113
|
+
<input class="input" id="aw-pw" type="password" autocomplete="current-password">
|
|
114
|
+
</div>
|
|
115
|
+
<button class="btn btn-primary" type="submit">Sign in</button>
|
|
116
|
+
</form>
|
|
117
|
+
|
|
118
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
119
|
+
</main>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Two-factor: backup code</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-focus:#73cae8;box-sizing:border-box;width:390px;min-height:100%;padding:24px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.back{display:inline-flex;align-items:center;gap:4px;height:44px;align-self:flex-start;margin-left:-8px;padding:0 8px;border:0;background:none;font:700 16px/1 Nunito,sans-serif;color:var(--text-link);cursor:pointer}
|
|
14
|
+
.back svg{width:20px;height:20px}
|
|
15
|
+
.badge{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:var(--surface-sec-xl);color:var(--text-sec-d)}
|
|
16
|
+
.badge svg{width:28px;height:28px}
|
|
17
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
18
|
+
.sub{margin:8px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
19
|
+
.field{display:flex;flex-direction:column;gap:6px}
|
|
20
|
+
.lbl{font:600 16px/24px Nunito,sans-serif}
|
|
21
|
+
.input{box-sizing:border-box;width:100%;height:48px;padding:0 14px;border:1px solid var(--surface-primary);box-shadow:0 0 0 3px var(--border-focus);border-radius:4px;background:var(--surface-base);font:600 18px "SFMono-Regular",Menlo,Consolas,monospace;letter-spacing:2px;color:var(--text-primary)}
|
|
22
|
+
.input::placeholder{color:var(--text-extraLight);font-weight:400}
|
|
23
|
+
.help{margin:0;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
24
|
+
.check{display:flex;gap:12px;align-items:flex-start;font-size:16px;line-height:22px;cursor:pointer}
|
|
25
|
+
.check input{flex:none;width:20px;height:20px;margin:1px 0 0;accent-color:#0e9dcd}
|
|
26
|
+
.check small{display:block;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
27
|
+
.btn{display:flex;align-items:center;justify-content:center;width:100%;height:48px;box-sizing:border-box;border-radius:360px;border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer}
|
|
28
|
+
.btn-primary{background:var(--surface-primary);border-color:var(--surface-primary);color:#fff;font-size:19px}
|
|
29
|
+
.alt{display:flex;flex-direction:column;align-items:center}
|
|
30
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:10px 0;cursor:pointer}
|
|
31
|
+
.foot{margin-top:auto;text-align:center}
|
|
32
|
+
</style>
|
|
33
|
+
<main class="screen">
|
|
34
|
+
<button class="back" type="button">
|
|
35
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 6-6 6 6 6"></path></svg>
|
|
36
|
+
Back
|
|
37
|
+
</button>
|
|
38
|
+
|
|
39
|
+
<div class="badge" aria-hidden="true">
|
|
40
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="10" width="16" height="11" rx="2"></rect><path d="M8 10V7a4 4 0 0 1 8 0v3"></path><path d="M12 14.5v2.5"></path></svg>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div>
|
|
44
|
+
<h1 class="h1">Use a backup code</h1>
|
|
45
|
+
<p class="sub">Enter one of the backup codes you saved when you turned on two-factor sign-in. Each code works once.</p>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<form style="display: flex; flex-direction: column; gap: 24px">
|
|
49
|
+
<div class="field">
|
|
50
|
+
<label class="lbl" for="bc-code">Backup code</label>
|
|
51
|
+
<input class="input" id="bc-code" type="text" placeholder="xxxxx-xxxxx" autocomplete="one-time-code" spellcheck="false">
|
|
52
|
+
<p class="help">Dashes and spaces are optional.</p>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<label class="check">
|
|
56
|
+
<input type="checkbox">
|
|
57
|
+
<span>Trust this device<small>We won't ask for a code here for 30 days.</small></span>
|
|
58
|
+
</label>
|
|
59
|
+
|
|
60
|
+
<button class="btn btn-primary" type="submit">Verify</button>
|
|
61
|
+
</form>
|
|
62
|
+
|
|
63
|
+
<div class="alt">
|
|
64
|
+
<button class="link" type="button">Use your authenticator app</button>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div class="foot">
|
|
68
|
+
<button class="link" type="button" style="color: #686868">Sign in a different way</button>
|
|
69
|
+
</div>
|
|
70
|
+
</main>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: cancelled</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-sec-xd:#092e3a;--text-primary:#1c1c1c;--text-secondary:#686868;--text-link:#0a7092;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-hover:#d9d9d9;box-sizing:border-box;width:390px;min-height:100%;padding:56px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.logo{width:48px;height:48px;border-radius:16px;background:var(--surface-sec-xd);color:#fff;display:grid;place-items:center;font:700 12px/1 Nunito,sans-serif}
|
|
14
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
15
|
+
.sub{margin:4px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
16
|
+
.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 8px 12px 16px;border-radius:16px;background:var(--surface-sec-xl);border:1px solid var(--surface-sec-l);color:var(--text-sec-d);font-size:16px;line-height:22px}
|
|
17
|
+
.banner .ico{flex:none;width:20px;height:20px;margin-top:1px}
|
|
18
|
+
.banner p{flex:1;margin:0}
|
|
19
|
+
.x{flex:none;width:32px;height:32px;margin:-5px 0;display:grid;place-items:center;border:0;border-radius:360px;background:none;color:var(--text-sec-d);cursor:pointer}
|
|
20
|
+
.x svg{width:16px;height:16px}
|
|
21
|
+
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
|
|
22
|
+
.sec-title{margin:0;font:700 16px/24px "Titillium Web",sans-serif}
|
|
23
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
24
|
+
.list{border:1px solid var(--border-default);border-radius:16px;overflow:hidden}
|
|
25
|
+
.acct{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 16px;box-sizing:border-box;background:var(--surface-base);border:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
|
|
26
|
+
.acct+.acct{border-top:1px solid var(--border-hover)}
|
|
27
|
+
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 18px/1 "Titillium Web",sans-serif}
|
|
28
|
+
.acct-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
29
|
+
.acct-name{font-weight:700;font-size:16px;line-height:22px;display:flex;align-items:center;gap:8px}
|
|
30
|
+
.acct-meta{font-size:12px;line-height:16px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
|
|
31
|
+
.chev{flex:none;width:20px;height:20px;color:var(--text-secondary)}
|
|
32
|
+
.pill{flex:none;font:700 12px/16px Nunito,sans-serif;padding:2px 8px;border-radius:360px;background:var(--surface-sec-xl);color:var(--text-sec-d);border:1px solid var(--surface-sec-l)}
|
|
33
|
+
.btn{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:48px;box-sizing:border-box;padding:0 20px;border-radius:360px;border:1px solid var(--surface-alt);background:var(--surface-alt);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer}
|
|
34
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
35
|
+
</style>
|
|
36
|
+
<main class="screen">
|
|
37
|
+
<div class="logo" aria-label="Your app logo">LOGO</div>
|
|
38
|
+
<div>
|
|
39
|
+
<h1 class="h1">Welcome back</h1>
|
|
40
|
+
<p class="sub">Pick up where you left off.</p>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div class="banner" role="status">
|
|
44
|
+
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M12 11v5M12 8h.01"></path></svg>
|
|
45
|
+
<p>Apple sign-in was cancelled. Tap an account to try again.</p>
|
|
46
|
+
<button class="x" type="button" aria-label="Dismiss">
|
|
47
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"></path></svg>
|
|
48
|
+
</button>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<section aria-labelledby="ca-acc">
|
|
52
|
+
<div class="sec-head">
|
|
53
|
+
<h2 id="ca-acc" class="sec-title">Continue as</h2>
|
|
54
|
+
<button class="link" type="button">Edit</button>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="list">
|
|
57
|
+
<button class="acct" type="button">
|
|
58
|
+
<span class="avatar" style="background: #2b6072" aria-hidden="true">J</span>
|
|
59
|
+
<span class="acct-body">
|
|
60
|
+
<span class="acct-name">Josh Gachnang <span class="pill">Last used</span></span>
|
|
61
|
+
<span class="acct-meta">
|
|
62
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"></path></svg>
|
|
63
|
+
Apple · j***@n***.io
|
|
64
|
+
</span>
|
|
65
|
+
</span>
|
|
66
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
67
|
+
</button>
|
|
68
|
+
<button class="acct" type="button">
|
|
69
|
+
<span class="avatar" style="background: #b14202" aria-hidden="true">J</span>
|
|
70
|
+
<span class="acct-body">
|
|
71
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
72
|
+
<span class="acct-meta">
|
|
73
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"></path></svg>
|
|
74
|
+
Google · j***@g***.com
|
|
75
|
+
</span>
|
|
76
|
+
</span>
|
|
77
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
78
|
+
</button>
|
|
79
|
+
</div>
|
|
80
|
+
</section>
|
|
81
|
+
|
|
82
|
+
<button class="btn" type="button">Sign in another way</button>
|
|
83
|
+
|
|
84
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
85
|
+
</main>
|
|
86
|
+
</body>
|
|
87
|
+
</html>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: continue with email</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-errorLight:#fdd7d7;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-error:#bd1111;--border-default:#cdcdcd;--border-focus:#73cae8;--border-error:#d33232;box-sizing:border-box;width:390px;min-height:100%;padding:24px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.back{display:inline-flex;align-items:center;gap:4px;height:44px;align-self:flex-start;margin-left:-8px;padding:0 8px;border:0;background:none;font:700 16px/1 Nunito,sans-serif;color:var(--text-link);cursor:pointer}
|
|
14
|
+
.back svg{width:20px;height:20px}
|
|
15
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
16
|
+
.who{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;background:var(--surface-sec-xl);border:1px solid var(--surface-sec-l)}
|
|
17
|
+
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 18px/1 "Titillium Web",sans-serif}
|
|
18
|
+
.who-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
19
|
+
.who-name{font-weight:700;font-size:16px;line-height:22px}
|
|
20
|
+
.who-meta{font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
21
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
22
|
+
.form{display:flex;flex-direction:column;gap:16px}
|
|
23
|
+
.field{display:flex;flex-direction:column;gap:6px}
|
|
24
|
+
.lbl-row{display:flex;justify-content:space-between;align-items:baseline}
|
|
25
|
+
.lbl{font:600 16px/24px Nunito,sans-serif}
|
|
26
|
+
.input{box-sizing:border-box;width:100%;height:48px;padding:0 14px;border:1px solid var(--border-default);border-radius:4px;background:var(--surface-base);font:16px Nunito,sans-serif;color:var(--text-primary)}
|
|
27
|
+
.focus{border-color:var(--surface-primary);box-shadow:0 0 0 3px var(--border-focus)}
|
|
28
|
+
.btn{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:48px;box-sizing:border-box;padding:0 20px;border-radius:360px;border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer}
|
|
29
|
+
.btn-primary{background:var(--surface-primary);border-color:var(--surface-primary);color:#fff;font-size:19px}
|
|
30
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
31
|
+
</style>
|
|
32
|
+
<main class="screen">
|
|
33
|
+
<button class="back" type="button">
|
|
34
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 6-6 6 6 6"></path></svg>
|
|
35
|
+
All sign-in options
|
|
36
|
+
</button>
|
|
37
|
+
|
|
38
|
+
<h1 class="h1">Enter your password</h1>
|
|
39
|
+
|
|
40
|
+
<div class="who">
|
|
41
|
+
<span class="avatar" style="background: #0a7092" aria-hidden="true">J</span>
|
|
42
|
+
<span class="who-body">
|
|
43
|
+
<span class="who-name">Josh Gachnang</span>
|
|
44
|
+
<span class="who-meta">josh@example.com</span>
|
|
45
|
+
</span>
|
|
46
|
+
<button class="link" type="button" style="font-size: 14px">Not you?</button>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
<form class="form">
|
|
50
|
+
<input type="hidden" name="email" value="josh@example.com" autocomplete="username">
|
|
51
|
+
<div class="field">
|
|
52
|
+
<div class="lbl-row">
|
|
53
|
+
<label class="lbl" for="ce-pw">Password</label>
|
|
54
|
+
<a class="link" href="#" style="font-size: 14px">Forgot password?</a>
|
|
55
|
+
</div>
|
|
56
|
+
<input class="input focus" id="ce-pw" type="password" autocomplete="current-password">
|
|
57
|
+
</div>
|
|
58
|
+
<button class="btn btn-primary" type="submit">Sign in</button>
|
|
59
|
+
</form>
|
|
60
|
+
|
|
61
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
62
|
+
</main>
|
|
63
|
+
</body>
|
|
64
|
+
</html>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: first visit</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-sec-xd:#092e3a;--surface-errorLight:#fdd7d7;--surface-warningLight:#ffe3c6;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-error:#bd1111;--text-warning:#b14202;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-hover:#d9d9d9;--border-focus:#73cae8;--border-error:#d33232;--border-warning:#f36719;box-sizing:border-box;width:390px;min-height:100%;padding:56px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.logo{width:48px;height:48px;border-radius:16px;background:var(--surface-sec-xd);color:#fff;display:grid;place-items:center;font:700 12px/1 Nunito,sans-serif}
|
|
14
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
15
|
+
.sub{margin:4px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
16
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
17
|
+
.pill{flex:none;font:700 12px/16px Nunito,sans-serif;padding:2px 8px;border-radius:360px;background:var(--surface-sec-xl);color:var(--text-sec-d);border:1px solid var(--surface-sec-l)}
|
|
18
|
+
.btn{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:48px;box-sizing:border-box;padding:0 20px;border-radius:360px;border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer;text-decoration:none}
|
|
19
|
+
.btn .ico{position:absolute;left:20px;width:18px;height:18px}
|
|
20
|
+
.btn .pill{position:absolute;right:12px}
|
|
21
|
+
.btn-last{border:2px solid var(--surface-sec-l);background:var(--surface-sec-xl)}
|
|
22
|
+
.btn-primary{background:var(--surface-primary);border-color:var(--surface-primary);color:#fff;font-size:19px}
|
|
23
|
+
.stack{display:flex;flex-direction:column;gap:12px}
|
|
24
|
+
.divider{display:flex;align-items:center;gap:12px;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
25
|
+
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--border-default)}
|
|
26
|
+
.form{display:flex;flex-direction:column;gap:16px}
|
|
27
|
+
.field{display:flex;flex-direction:column;gap:6px}
|
|
28
|
+
.lbl-row{display:flex;justify-content:space-between;align-items:baseline}
|
|
29
|
+
.lbl{font:600 16px/24px Nunito,sans-serif}
|
|
30
|
+
.input{box-sizing:border-box;width:100%;height:48px;padding:0 14px;border:1px solid var(--border-default);border-radius:4px;background:var(--surface-base);font:16px Nunito,sans-serif;color:var(--text-primary)}
|
|
31
|
+
.input::placeholder{color:var(--text-extraLight)}
|
|
32
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
33
|
+
</style>
|
|
34
|
+
<main class="screen">
|
|
35
|
+
<div class="logo" aria-label="Your app logo">LOGO</div>
|
|
36
|
+
<div>
|
|
37
|
+
<h1 class="h1">Sign in</h1>
|
|
38
|
+
<p class="sub">Choose how you want to sign in.</p>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div class="stack">
|
|
42
|
+
<button class="btn btn-last" type="button">
|
|
43
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"></path></svg>
|
|
44
|
+
Continue with Google
|
|
45
|
+
<span class="pill">Last used</span>
|
|
46
|
+
</button>
|
|
47
|
+
<button class="btn" type="button">
|
|
48
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"></path></svg>
|
|
49
|
+
Continue with Apple
|
|
50
|
+
</button>
|
|
51
|
+
<button class="btn" type="button">
|
|
52
|
+
<svg class="ico" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg>
|
|
53
|
+
Continue with GitHub
|
|
54
|
+
</button>
|
|
55
|
+
<button class="btn" type="button">
|
|
56
|
+
<svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="7.5" cy="15.5" r="4.5"></circle><path d="M10.7 12.3 21 2M17 6l3 3M14.5 8.5l2.5 2.5"></path></svg>
|
|
57
|
+
Sign in with a passkey
|
|
58
|
+
</button>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="divider">or use your email</div>
|
|
62
|
+
|
|
63
|
+
<form class="form">
|
|
64
|
+
<div class="field">
|
|
65
|
+
<label class="lbl" for="fv-email">Email</label>
|
|
66
|
+
<input class="input" id="fv-email" type="email" placeholder="you@example.com" autocomplete="username webauthn">
|
|
67
|
+
</div>
|
|
68
|
+
<div class="field">
|
|
69
|
+
<div class="lbl-row">
|
|
70
|
+
<label class="lbl" for="fv-pw">Password</label>
|
|
71
|
+
<a class="link" href="#" style="font-size: 14px">Forgot password?</a>
|
|
72
|
+
</div>
|
|
73
|
+
<input class="input" id="fv-pw" type="password" autocomplete="current-password">
|
|
74
|
+
</div>
|
|
75
|
+
<button class="btn btn-primary" type="submit">Sign in</button>
|
|
76
|
+
</form>
|
|
77
|
+
|
|
78
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
79
|
+
</main>
|
|
80
|
+
</body>
|
|
81
|
+
</html>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: continue as</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-sec-xd:#092e3a;--surface-errorLight:#fdd7d7;--surface-warningLight:#ffe3c6;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-error:#bd1111;--text-warning:#b14202;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-hover:#d9d9d9;--border-focus:#73cae8;--border-error:#d33232;--border-warning:#f36719;box-sizing:border-box;width:390px;min-height:100%;padding:56px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.logo{width:48px;height:48px;border-radius:16px;background:var(--surface-sec-xd);color:#fff;display:grid;place-items:center;font:700 12px/1 Nunito,sans-serif}
|
|
14
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
15
|
+
.sub{margin:4px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
16
|
+
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
|
|
17
|
+
.sec-title{margin:0;font:700 16px/24px "Titillium Web",sans-serif}
|
|
18
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
19
|
+
.list{border:1px solid var(--border-default);border-radius:16px;overflow:hidden}
|
|
20
|
+
.acct{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 16px;box-sizing:border-box;background:var(--surface-base);border:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
|
|
21
|
+
.acct+.acct{border-top:1px solid var(--border-hover)}
|
|
22
|
+
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 18px/1 "Titillium Web",sans-serif}
|
|
23
|
+
.acct-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
24
|
+
.acct-name{font-weight:700;font-size:16px;line-height:22px;display:flex;align-items:center;gap:8px}
|
|
25
|
+
.acct-meta{font-size:12px;line-height:16px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
|
|
26
|
+
.chev{flex:none;width:20px;height:20px;color:var(--text-secondary)}
|
|
27
|
+
.pill{flex:none;font:700 12px/16px Nunito,sans-serif;padding:2px 8px;border-radius:360px;background:var(--surface-sec-xl);color:var(--text-sec-d);border:1px solid var(--surface-sec-l)}
|
|
28
|
+
.btn{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:48px;box-sizing:border-box;padding:0 20px;border-radius:360px;border:1px solid var(--border-default);background:var(--surface-base);color:var(--text-primary);font:700 16px/1 Nunito,sans-serif;cursor:pointer;text-decoration:none}
|
|
29
|
+
.btn .ico{position:absolute;left:20px;width:18px;height:18px}
|
|
30
|
+
.btn .pill{position:absolute;right:12px}
|
|
31
|
+
.btn-primary{background:var(--surface-primary);border-color:var(--surface-primary);color:#fff;font-size:19px}
|
|
32
|
+
.btn-quiet{background:var(--surface-alt);border-color:var(--surface-alt)}
|
|
33
|
+
.stack{display:flex;flex-direction:column;gap:12px}
|
|
34
|
+
.divider{display:flex;align-items:center;gap:12px;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
35
|
+
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--border-default)}
|
|
36
|
+
.field{display:flex;flex-direction:column;gap:6px}
|
|
37
|
+
.lbl-row{display:flex;justify-content:space-between;align-items:baseline}
|
|
38
|
+
.lbl{font:600 16px/24px Nunito,sans-serif}
|
|
39
|
+
.input{box-sizing:border-box;width:100%;height:48px;padding:0 14px;border:1px solid var(--border-default);border-radius:4px;background:var(--surface-base);font:16px Nunito,sans-serif;color:var(--text-primary)}
|
|
40
|
+
.input::placeholder{color:var(--text-extraLight)}
|
|
41
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
42
|
+
.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:16px;font-size:16px;line-height:22px}
|
|
43
|
+
.banner svg{flex:none;width:20px;height:20px;margin-top:1px}
|
|
44
|
+
</style>
|
|
45
|
+
<main class="screen">
|
|
46
|
+
<div class="logo" aria-label="Your app logo">LOGO</div>
|
|
47
|
+
<div>
|
|
48
|
+
<h1 class="h1">Welcome back</h1>
|
|
49
|
+
<p class="sub">Pick up where you left off.</p>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<section aria-labelledby="acc-title">
|
|
53
|
+
<div class="sec-head">
|
|
54
|
+
<h2 id="acc-title" class="sec-title">Continue as</h2>
|
|
55
|
+
<button class="link" type="button">Edit</button>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="list">
|
|
58
|
+
<button class="acct" type="button">
|
|
59
|
+
<span class="avatar" style="background: #2b6072" aria-hidden="true">J</span>
|
|
60
|
+
<span class="acct-body">
|
|
61
|
+
<span class="acct-name">Josh Gachnang <span class="pill">Last used</span></span>
|
|
62
|
+
<span class="acct-meta">
|
|
63
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"></path></svg>
|
|
64
|
+
Apple · j***@n***.io
|
|
65
|
+
</span>
|
|
66
|
+
</span>
|
|
67
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
68
|
+
</button>
|
|
69
|
+
<button class="acct" type="button">
|
|
70
|
+
<span class="avatar" style="background: #b14202" aria-hidden="true">J</span>
|
|
71
|
+
<span class="acct-body">
|
|
72
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
73
|
+
<span class="acct-meta">
|
|
74
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"></path></svg>
|
|
75
|
+
Google · j***@g***.com
|
|
76
|
+
</span>
|
|
77
|
+
</span>
|
|
78
|
+
<svg class="chev" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 6 6 6-6 6"></path></svg>
|
|
79
|
+
</button>
|
|
80
|
+
</div>
|
|
81
|
+
</section>
|
|
82
|
+
|
|
83
|
+
<button class="btn btn-quiet" type="button">Sign in another way</button>
|
|
84
|
+
|
|
85
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
86
|
+
</main>
|
|
87
|
+
</body>
|
|
88
|
+
</html>
|
package/dist/docs/versioned/next/implementationPlans/login-redesign/boards/ManageAccounts.html
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Sign in: manage accounts</title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Titillium+Web:wght@600;700&display=swap">
|
|
9
|
+
<style>
|
|
10
|
+
body{margin:0;background:#e9eef0;display:flex;justify-content:center;padding:24px 0}
|
|
11
|
+
a{color:#0a7092}a:hover{color:#095a75}
|
|
12
|
+
.screen{--surface-base:#ffffff;--surface-alt:#f2f2f2;--surface-primary:#0e9dcd;--surface-sec-xl:#f2f9fa;--surface-sec-l:#b6cdd5;--surface-sec-xd:#092e3a;--text-primary:#1c1c1c;--text-secondary:#686868;--text-extraLight:#949494;--text-link:#0a7092;--text-error:#bd1111;--text-success:#1a7f36;--text-sec-d:#092e3a;--border-default:#cdcdcd;--border-hover:#d9d9d9;--status-active:#3ea45c;box-sizing:border-box;width:390px;min-height:100%;padding:56px 24px 32px;background:var(--surface-base);color:var(--text-primary);font-family:Nunito,system-ui,sans-serif;display:flex;flex-direction:column;gap:24px}
|
|
13
|
+
.logo{width:48px;height:48px;border-radius:16px;background:var(--surface-sec-xd);color:#fff;display:grid;place-items:center;font:700 12px/1 Nunito,sans-serif}
|
|
14
|
+
.h1{margin:0;font:700 32px/38px "Titillium Web",sans-serif}
|
|
15
|
+
.sub{margin:4px 0 0;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
16
|
+
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
|
|
17
|
+
.sec-title{margin:0;font:700 16px/24px "Titillium Web",sans-serif}
|
|
18
|
+
.link{font:700 16px/24px Nunito,sans-serif;color:var(--text-link);text-decoration:none;background:none;border:0;padding:0;cursor:pointer}
|
|
19
|
+
.list{border:1px solid var(--border-default);border-radius:16px;overflow:hidden}
|
|
20
|
+
.acct{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px 8px 12px 16px;box-sizing:border-box;background:var(--surface-base)}
|
|
21
|
+
.acct+.acct{border-top:1px solid var(--border-hover)}
|
|
22
|
+
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 18px/1 "Titillium Web",sans-serif}
|
|
23
|
+
.acct-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
|
|
24
|
+
.acct-name{font-weight:700;font-size:16px;line-height:22px}
|
|
25
|
+
.acct-meta{font-size:12px;line-height:16px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
|
|
26
|
+
.remove{flex:none;height:44px;padding:0 12px;border:0;border-radius:360px;background:none;font:700 16px/1 Nunito,sans-serif;color:var(--text-error);cursor:pointer}
|
|
27
|
+
.dot{width:8px;height:8px;border-radius:50%;background:var(--status-active)}
|
|
28
|
+
.signed{flex:none;padding:0 12px;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
29
|
+
.note{margin:0;font-size:12px;line-height:16px;color:var(--text-secondary)}
|
|
30
|
+
.foot{margin-top:auto;text-align:center;font-size:16px;line-height:24px;color:var(--text-secondary)}
|
|
31
|
+
</style>
|
|
32
|
+
<main class="screen">
|
|
33
|
+
<div class="logo" aria-label="Your app logo">LOGO</div>
|
|
34
|
+
<div>
|
|
35
|
+
<h1 class="h1">Welcome back</h1>
|
|
36
|
+
<p class="sub">Pick up where you left off.</p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<section aria-labelledby="ma-acc">
|
|
40
|
+
<div class="sec-head">
|
|
41
|
+
<h2 id="ma-acc" class="sec-title">Accounts on this device</h2>
|
|
42
|
+
<button class="link" type="button">Done</button>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="list">
|
|
45
|
+
<div class="acct">
|
|
46
|
+
<span class="avatar" style="background: #0a7092" aria-hidden="true">J</span>
|
|
47
|
+
<span class="acct-body">
|
|
48
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
49
|
+
<span class="acct-meta"><span class="dot" aria-hidden="true"></span>Signed in · j***@n***.io</span>
|
|
50
|
+
</span>
|
|
51
|
+
<span class="signed">Can't remove</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="acct">
|
|
54
|
+
<span class="avatar" style="background: #2b6072" aria-hidden="true">J</span>
|
|
55
|
+
<span class="acct-body">
|
|
56
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
57
|
+
<span class="acct-meta">Apple · j***@n***.io</span>
|
|
58
|
+
</span>
|
|
59
|
+
<button class="remove" type="button" aria-label="Remove Josh Gachnang, Apple, from this device">Remove</button>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="acct">
|
|
62
|
+
<span class="avatar" style="background: #b14202" aria-hidden="true">J</span>
|
|
63
|
+
<span class="acct-body">
|
|
64
|
+
<span class="acct-name">Josh Gachnang</span>
|
|
65
|
+
<span class="acct-meta">Google · j***@g***.com</span>
|
|
66
|
+
</span>
|
|
67
|
+
<button class="remove" type="button" aria-label="Remove Josh Gachnang, Google, from this device">Remove</button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</section>
|
|
71
|
+
|
|
72
|
+
<p class="note">Removing an account only forgets it on this device. It doesn't sign you out anywhere else or delete the account.</p>
|
|
73
|
+
|
|
74
|
+
<p class="foot">New here? <a href="#">Create an account</a></p>
|
|
75
|
+
</main>
|
|
76
|
+
</body>
|
|
77
|
+
</html>
|