Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
4734e2e
feat: auth revamp base setup
SagarRajput-7 Dec 28, 2025
0f745a2
feat: auth revamp signin changes
SagarRajput-7 Dec 30, 2025
4367caa
feat: auth revamp signup changes
SagarRajput-7 Dec 30, 2025
d06787f
feat: auth revamp reset password changes
SagarRajput-7 Dec 30, 2025
6c7b2ff
feat: auth revamp light mode changes
SagarRajput-7 Dec 30, 2025
52e0f7a
feat: clean up and added get help link
SagarRajput-7 Jan 2, 2026
dd67cb8
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 2, 2026
5ec4284
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 7, 2026
6adeb17
feat: cleanup and addressed comments
SagarRajput-7 Jan 7, 2026
b3e128d
feat: cleanup
SagarRajput-7 Jan 7, 2026
23599b8
feat: comment addressed
SagarRajput-7 Jan 7, 2026
d457cb1
feat: auth revamp for onboarding flow (#9915)
SagarRajput-7 Jan 13, 2026
2790218
feat: added test cases for the new auth flow (#9914)
SagarRajput-7 Jan 13, 2026
880c782
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 13, 2026
afbf2f1
fix: updated test cases
SagarRajput-7 Jan 13, 2026
20425b6
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 13, 2026
aa87b68
fix: use error content for auth revamp error
SagarRajput-7 Jan 14, 2026
b53c5c6
feat: refactor and cleanup
SagarRajput-7 Jan 15, 2026
3f9cfbf
feat: refactor and cleanup
SagarRajput-7 Jan 15, 2026
24cc511
fix: add shake animation and light mode fix
SagarRajput-7 Jan 15, 2026
2502ba9
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 15, 2026
e2f85b4
feat: feedback resolved
SagarRajput-7 Jan 16, 2026
37bb7c6
feat: feedback resolved
SagarRajput-7 Jan 16, 2026
b175e3a
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 16, 2026
3252c93
feat: updated test cases
SagarRajput-7 Jan 16, 2026
e814740
feat: feedback resolved
SagarRajput-7 Jan 16, 2026
518638d
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 16, 2026
9c41901
feat: shake animation update
SagarRajput-7 Jan 19, 2026
d2cc5a2
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 19, 2026
30c911a
Merge branch 'main' into SIG-3487
SagarRajput-7 Jan 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions frontend/public/svgs/barber-pool.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions frontend/public/svgs/tv.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
145 changes: 145 additions & 0 deletions frontend/src/components/AuthError/AuthError.styles.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
.auth-error-container {
margin-top: 24px;
width: 100%;
animation: horizontal-shaking 300ms ease-out;

.error-content {
background: rgba(229, 72, 77, 0.1);
border: 1px solid rgba(229, 72, 77, 0.2);
border-radius: 4px;

&__summary-section {
border-bottom: 1px solid rgba(229, 72, 77, 0.2);
}

&__summary {
padding: 16px;
}

&__summary-left {
gap: 10px;
}

&__icon-wrapper {
width: 12px;
height: 12px;
flex-shrink: 0;
}

&__summary-text {
gap: 6px;
}

&__error-code {
color: #fadadb;
font-size: 13px;
font-weight: 500;
line-height: 1;
letter-spacing: -0.065px;
}

&__error-message {
color: #f5b6b8;
font-size: 13px;
font-weight: 400;
line-height: 20px;
letter-spacing: -0.065px;
}

&__message-badge {
padding: 0px 16px 16px;
}

&__message-badge-label-text {
color: #fadadb;
}

&__message-badge-line {
background-image: radial-gradient(
circle,
rgba(229, 72, 77, 0.3) 1px,
transparent 2px
);
}

&__messages-section {
padding: 0;
}

&__message-list {
max-height: 200px;
}

&__message-item {
color: #f5b6b8;
font-size: 13px;
font-weight: 400;
line-height: 20px;
letter-spacing: -0.065px;

&::before {
background: #f5b6b8;
}
}

&__scroll-hint {
background: rgba(229, 72, 77, 0.2);
}

&__scroll-hint-text {
color: #fadadb;
}
}

.auth-error-icon {
color: var(--bg-cherry-300);
padding-top: 1px;
}
}

.lightMode {
.auth-error-container {
.error-content {
background: rgba(229, 72, 77, 0.1);
border-color: rgba(229, 72, 77, 0.2);

&__error-code {
color: var(--bg-ink-100);
}

&__error-message {
color: var(--bg-ink-400);
}

&__message-item {
color: var(--bg-ink-400);

&::before {
background: var(--bg-ink-400);
}
}

&__scroll-hint-text {
color: var(--bg-ink-100);
}
}
}
}

@keyframes horizontal-shaking {
0% {
transform: translateX(0);
}
25% {
transform: translateX(5px);
}
50% {
transform: translateX(-5px);
}
75% {
transform: translateX(5px);
}
100% {
transform: translateX(0);
}
}
22 changes: 22 additions & 0 deletions frontend/src/components/AuthError/AuthError.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import './AuthError.styles.scss';

import ErrorContent from 'components/ErrorModal/components/ErrorContent';
import { CircleAlert } from 'lucide-react';
import APIError from 'types/api/error';

interface AuthErrorProps {
error: APIError;
}

function AuthError({ error }: AuthErrorProps): JSX.Element {
return (
<div className="auth-error-container">
<ErrorContent
error={error}
icon={<CircleAlert size={12} className="auth-error-icon" />}
/>
</div>
);
}

export default AuthError;
115 changes: 115 additions & 0 deletions frontend/src/components/AuthPageContainer/AuthFooter.styles.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
@import '@signozhq/design-tokens/dist/style.css';

.auth-footer {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 24px 0;
position: relative;
z-index: 10;
}

.auth-footer-content {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
padding: 12px;
background: var(--bg-ink-400, #121317);
border: 1px solid var(--bg-ink-200, #23262e);
border-radius: 4px;
}

.auth-footer-item {
display: flex;
align-items: center;
gap: 6px;
height: 12px;
}

.auth-footer-status-indicator {
width: 6px;
height: 6px;
border-radius: 9999px;
background: #25e192;
flex-shrink: 0;
}

.auth-footer-icon {
aspect-ratio: 1.93;
width: 29px;
flex-shrink: 0;
object-fit: contain;
opacity: 1;
}

.auth-footer-text {
font-family: var(--font-family-inter, Inter, sans-serif);
font-size: 11px;
font-weight: 400;
line-height: 1;
color: var(--text-neutral-dark-100, #adb4c2);
text-align: center;
}

.auth-footer-link {
display: flex;
align-items: center;
gap: 6px;
text-decoration: none;
transition: opacity 0.2s ease;

&:hover {
opacity: 0.8;
}
}

.auth-footer-link-icon {
flex-shrink: 0;
color: var(--text-neutral-dark-50, #eceef2);
}

.auth-footer-link-status {
.auth-footer-text {
color: #25e192;
}

.auth-footer-link-icon {
color: #25e192;
}
}

.auth-footer-separator {
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--bg-ink-200, #23262e);
flex-shrink: 0;
}

.lightMode {
.auth-footer-content {
background: var(--bg-base-white, #ffffff);
border-color: var(--bg-vanilla-300, #e9e9e9);
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.08);
}

.auth-footer-icon {
filter: brightness(0) saturate(100%) invert(25%) sepia(8%) saturate(518%)
hue-rotate(192deg) brightness(80%) contrast(95%);
opacity: 0.9;
}

.auth-footer-text {
color: var(--text-neutral-light-200, #80828d);
}

.auth-footer-link-icon {
color: var(--text-neutral-light-100, #62636c);
}

.auth-footer-separator {
background: var(--bg-vanilla-300, #e9e9e9);
}
}
75 changes: 75 additions & 0 deletions frontend/src/components/AuthPageContainer/AuthFooter.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import './AuthFooter.styles.scss';

import { ArrowUpRight } from 'lucide-react';
import React from 'react';

interface FooterItem {
icon?: string;
text: string;
url?: string;
statusIndicator?: boolean;
}

const footerItems: FooterItem[] = [
{
text: 'All systems operational',
url: 'https://status.signoz.io/',
statusIndicator: true,
},
{
text: 'Privacy',
url: 'https://www.signoz.io/privacy',
},
{
text: 'Security',
url: 'https://www.signoz.io/security',
},
];

function AuthFooter(): JSX.Element {
return (
<footer className="auth-footer">
<div className="auth-footer-content">
{footerItems.map((item, index) => (
<React.Fragment key={item.text}>
<div className="auth-footer-item">
{item.statusIndicator && (
<div className="auth-footer-status-indicator" />
)}
{item.icon && (
<img
loading="lazy"
src={item.icon}
alt=""
className="auth-footer-icon"
/>
)}
{item.url ? (
<a
href={item.url}
className={`auth-footer-link ${
item.statusIndicator ? 'auth-footer-link-status' : ''
}`}
target="_blank"
rel="noopener noreferrer"
>
<span className="auth-footer-text">{item.text}</span>
{!item.statusIndicator && (
<ArrowUpRight size={12} className="auth-footer-link-icon" />
)}
</a>
) : (
<span className="auth-footer-text">{item.text}</span>
)}
</div>
{index < footerItems.length - 1 && (
<div className="auth-footer-separator" />
)}
</React.Fragment>
))}
</div>
</footer>
);
}

export default AuthFooter;
Loading
Loading