feat: Passwordless cross-device authentication

- Arkitektur: docs/auth/passwordless-architecture.md
- Backend: iom/quixzoom-auth-service/ (FastAPI + Redis)
- Webb: quixzoom-market-pages/se/login/ (QR-kod + polling)
- App: iom/quixzoom-app/src/features/auth/ (push + deep links)

Flöde: QR-kod → app-godkännande → webb-inloggad
This commit is contained in:
Bernt
2026-07-07 07:11:50 +00:00
parent 4aa984ad74
commit 6989a98d75
61843 changed files with 5491611 additions and 872231 deletions
+8
View File
@@ -0,0 +1,8 @@
import * as React from 'react';
import { TypeOptions } from '../types';
export interface CloseButtonProps {
closeToast: (e: React.MouseEvent<HTMLElement>) => void;
type: TypeOptions;
ariaLabel?: string;
}
export declare function CloseButton({ closeToast, type, ariaLabel }: CloseButtonProps): JSX.Element;
+55
View File
@@ -0,0 +1,55 @@
import * as React from 'react';
import { TypeOptions, ToastClassName } from '../types';
export interface ProgressBarProps {
/**
* The animation delay which determine when to close the toast
*/
delay: number;
/**
* Whether or not the animation is running or paused
*/
isRunning: boolean;
/**
* Func to close the current toast
*/
closeToast: () => void;
/**
* Optional type : info, success ...
*/
type: TypeOptions;
/**
* Hide or not the progress bar
*/
hide?: boolean;
/**
* Optionnal className
*/
className?: ToastClassName;
/**
* Optionnal inline style
*/
style?: React.CSSProperties;
/**
* Tell wether or not controlled progress bar is used
*/
controlledProgress?: boolean;
/**
* Controlled progress value
*/
progress?: number | string;
/**
* Support rtl content
*/
rtl?: boolean;
/**
* Tell if the component is visible on screen or not
*/
isIn?: boolean;
}
export declare function ProgressBar({ delay, isRunning, closeToast, type, hide, className, style: userStyle, controlledProgress, progress, rtl, isIn }: ProgressBarProps): JSX.Element;
export declare namespace ProgressBar {
var defaultProps: {
type: TypeOptions;
hide: boolean;
};
}
+3
View File
@@ -0,0 +1,3 @@
import * as React from 'react';
import { ToastProps } from '../types';
export declare const Toast: React.FC<ToastProps>;
@@ -0,0 +1,3 @@
import * as React from 'react';
import { ToastContainerProps } from '../types';
export declare const ToastContainer: React.FC<ToastContainerProps>;
+5
View File
@@ -0,0 +1,5 @@
declare const Bounce: ({ children, position, preventExitTransition, done, nodeRef, isIn }: import("..").ToastTransitionProps) => JSX.Element;
declare const Slide: ({ children, position, preventExitTransition, done, nodeRef, isIn }: import("..").ToastTransitionProps) => JSX.Element;
declare const Zoom: ({ children, position, preventExitTransition, done, nodeRef, isIn }: import("..").ToastTransitionProps) => JSX.Element;
declare const Flip: ({ children, position, preventExitTransition, done, nodeRef, isIn }: import("..").ToastTransitionProps) => JSX.Element;
export { Bounce, Slide, Zoom, Flip };
+5
View File
@@ -0,0 +1,5 @@
export * from './CloseButton';
export * from './ProgressBar';
export * from './ToastContainer';
export * from './Transitions';
export * from './Toast';