Skip to content

Commit 9de42bb

Browse files
authored
Merge pull request #29 from ZeroHost-Code/beta
v1.0.8
2 parents 24345dc + cc9b689 commit 9de42bb

6 files changed

Lines changed: 777 additions & 96 deletions

File tree

config/migrate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const tables = {
2626
{ name: 'email_change_code', def: 'VARCHAR(10) DEFAULT NULL' },
2727
{ name: 'email_change_expires', def: 'DATETIME DEFAULT NULL' },
2828
{ name: 'user_agent', def: 'VARCHAR(512) DEFAULT NULL' },
29+
{ name: 'onboarding_done', def: 'TINYINT(1) NOT NULL DEFAULT 0' },
2930
{ name: 'created_at', def: 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP' },
3031
],
3132
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zerohost-dashboard",
3-
"version": "1.0.7",
3+
"version": "1.0.8",
44
"private": true,
55
"type": "module",
66
"scripts": {

public/css/style.css

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,45 @@ a:hover { color: var(--accent-1); }
340340
color: var(--text-muted);
341341
}
342342

343+
/* ===== REGISTER FIELD AVAILABILITY ===== */
344+
.input-wrap {
345+
position: relative;
346+
}
347+
348+
.input-wrap input {
349+
padding-right: 44px;
350+
}
351+
352+
.input-status {
353+
position: absolute;
354+
right: 14px;
355+
top: 50%;
356+
transform: translateY(-50%);
357+
display: flex;
358+
align-items: center;
359+
justify-content: center;
360+
pointer-events: none;
361+
}
362+
363+
.input-status.checking { color: var(--text-muted); }
364+
.input-status.ok { color: var(--accent-green); }
365+
.input-status.taken { color: var(--accent-red); }
366+
367+
.field-hint {
368+
font-size: 0.78rem;
369+
margin-top: 6px;
370+
min-height: 0;
371+
line-height: 1.3;
372+
color: var(--text-secondary);
373+
}
374+
375+
.field-hint:empty {
376+
margin-top: 0;
377+
}
378+
379+
.field-hint.ok { color: var(--accent-green); }
380+
.field-hint.taken { color: var(--accent-red); }
381+
343382
.form-group select {
344383
cursor: pointer;
345384
appearance: none;
@@ -4394,3 +4433,153 @@ tbody tr:hover {
43944433
background: rgba(239, 68, 68, 0.1);
43954434
}
43964435

4436+
/* ===== ONBOARDING TOUR ===== */
4437+
.onboarding-overlay {
4438+
position: fixed;
4439+
inset: 0;
4440+
z-index: 9999;
4441+
pointer-events: none;
4442+
}
4443+
4444+
.onboarding-backdrop {
4445+
position: absolute;
4446+
inset: 0;
4447+
background: rgba(0, 0, 0, 0.7);
4448+
pointer-events: none;
4449+
}
4450+
4451+
.onboarding-card {
4452+
pointer-events: auto;
4453+
background: var(--bg-card);
4454+
border: 1px solid var(--border);
4455+
border-radius: var(--radius-xl);
4456+
padding: 32px 28px;
4457+
max-width: 440px;
4458+
width: 90%;
4459+
box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6);
4460+
text-align: center;
4461+
position: fixed;
4462+
z-index: 10001;
4463+
}
4464+
4465+
.onboarding-card.centered {
4466+
top: 50%;
4467+
left: 50%;
4468+
transform: translate(-50%, -50%);
4469+
}
4470+
4471+
.card-arrow {
4472+
position: fixed;
4473+
width: 0;
4474+
height: 0;
4475+
pointer-events: none;
4476+
z-index: 10002;
4477+
}
4478+
4479+
.card-arrow::after {
4480+
content: '';
4481+
position: absolute;
4482+
width: 0;
4483+
height: 0;
4484+
}
4485+
4486+
/* Up arrow (card below element) */
4487+
.card-arrow[data-dir="up"] {
4488+
border-left: 10px solid transparent;
4489+
border-right: 10px solid transparent;
4490+
border-bottom: 10px solid var(--border);
4491+
}
4492+
4493+
.card-arrow[data-dir="up"]::after {
4494+
top: 2px;
4495+
left: -9px;
4496+
border-left: 9px solid transparent;
4497+
border-right: 9px solid transparent;
4498+
border-bottom: 9px solid var(--bg-card);
4499+
}
4500+
4501+
/* Down arrow (card above element) */
4502+
.card-arrow[data-dir="down"] {
4503+
border-left: 10px solid transparent;
4504+
border-right: 10px solid transparent;
4505+
border-top: 10px solid var(--border);
4506+
}
4507+
4508+
.card-arrow[data-dir="down"]::after {
4509+
bottom: 2px;
4510+
left: -9px;
4511+
border-left: 9px solid transparent;
4512+
border-right: 9px solid transparent;
4513+
border-top: 9px solid var(--bg-card);
4514+
}
4515+
4516+
/* Left arrow (card to the right of element) */
4517+
.card-arrow[data-dir="left"] {
4518+
border-top: 10px solid transparent;
4519+
border-bottom: 10px solid transparent;
4520+
border-right: 10px solid var(--border);
4521+
}
4522+
4523+
.card-arrow[data-dir="left"]::after {
4524+
left: 2px;
4525+
top: -9px;
4526+
border-top: 9px solid transparent;
4527+
border-bottom: 9px solid transparent;
4528+
border-right: 9px solid var(--bg-card);
4529+
}
4530+
4531+
.onboarding-card h2 {
4532+
font-size: 1.3rem;
4533+
font-weight: 700;
4534+
margin-bottom: 10px;
4535+
}
4536+
4537+
.onboarding-card p {
4538+
font-size: 0.9rem;
4539+
color: var(--text-secondary);
4540+
line-height: 1.6;
4541+
margin-bottom: 24px;
4542+
}
4543+
4544+
.onboarding-card .onboarding-actions {
4545+
display: flex;
4546+
gap: 12px;
4547+
justify-content: center;
4548+
}
4549+
4550+
.onboarding-card .onboarding-actions .btn {
4551+
min-width: 100px;
4552+
}
4553+
4554+
.onboarding-spotlight {
4555+
position: fixed;
4556+
z-index: 10000;
4557+
pointer-events: none;
4558+
box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.7);
4559+
border-radius: var(--radius-sm);
4560+
background: transparent;
4561+
outline: 2px solid rgba(238, 129, 50, 0.25);
4562+
outline-offset: -1px;
4563+
}
4564+
4565+
.onboarding-dots {
4566+
display: flex;
4567+
gap: 6px;
4568+
justify-content: center;
4569+
margin-bottom: 16px;
4570+
}
4571+
4572+
.onboarding-dot {
4573+
width: 8px;
4574+
height: 8px;
4575+
border-radius: 50%;
4576+
background: var(--border);
4577+
transition: all var(--transition);
4578+
}
4579+
4580+
.onboarding-dot.active {
4581+
background: var(--accent-1);
4582+
width: 24px;
4583+
border-radius: 4px;
4584+
}
4585+

public/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<div id="app"></div>
1919

20-
<script src="/js/app.js?v=5"></script>
21-
<script src="/js/admin.js?v=5"></script>
20+
<script src="/js/app.js?v=6"></script>
21+
<script src="/js/admin.js?v=6"></script>
2222
</body>
2323
</html>

0 commit comments

Comments
 (0)