-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtype.d.ts
More file actions
108 lines (95 loc) · 2.34 KB
/
type.d.ts
File metadata and controls
108 lines (95 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
interface Material {
id: string;
name: string;
thumbnail: string;
type: "color" | "texture";
category: "floor" | "wall" | "furniture";
}
interface DesignHistoryItem {
id: string;
name?: string | null;
sourceImage: string;
sourcePath?: string | null;
renderedImage?: string | null;
renderedPath?: string | null;
publicPath?: string | null;
timestamp: number;
ownerId?: string | null;
sharedBy?: string | null;
sharedAt?: string | null;
isPublic?: boolean;
}
interface DesignConfig {
floor: string;
walls: string;
style: string;
}
enum AppStatus {
IDLE = "IDLE",
UPLOADING = "UPLOADING",
PROCESSING = "PROCESSING",
READY = "READY",
}
type RenderCompletePayload = {
renderedImage: string;
renderedPath?: string;
};
type VisualizerLocationState = {
initialImage?: string;
initialRender?: string | null;
ownerId?: string | null;
name?: string | null;
sharedBy?: string | null;
};
interface VisualizerProps {
onBack: () => void;
initialImage: string | null;
onRenderComplete?: (payload: RenderCompletePayload) => void;
onShare?: (image: string) => Promise<void> | void;
onUnshare?: (image: string) => Promise<void> | void;
projectName?: string;
projectId?: string;
initialRender?: string | null;
isPublic?: boolean;
sharedBy?: string | null;
canUnshare?: boolean;
}
interface UploadProps {
onComplete: (base64File: string) => Promise<boolean | void> | boolean | void;
className?: string;
}
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
variant?: "primary" | "secondary" | "ghost" | "outline";
size?: "sm" | "md" | "lg";
fullWidth?: boolean;
}
interface CardProps {
children: React.ReactNode;
className?: string;
title?: string;
action?: React.ReactNode;
}
type AuthContext = {
isSignedIn: boolean;
userName: string | null;
userId: string | null;
refreshAuth: () => Promise<boolean>;
signIn: () => Promise<boolean>;
signOut: () => Promise<boolean>;
};
type AuthRequiredModalProps = {
isOpen: boolean;
onConfirm: () => void;
onCancel: () => void;
title?: string;
description?: string;
confirmLabel?: string;
};
type ShareAction = "share" | "unshare";
type ShareStatus = "idle" | "saving" | "done";
interface StoreHostedImageParams {
hosting: HostingConfig | null;
url: string;
projectId: string;
label: "source" | "rendered";
}