@trustless-work/blocks 0.0.6 → 0.0.8
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/README.md +39 -13
- package/bin/index.js +1596 -1137
- package/package.json +44 -44
- package/templates/escrows/details/Actions.tsx +144 -149
- package/templates/escrows/details/Entities.tsx +1 -1
- package/templates/escrows/details/EntityCard.tsx +1 -3
- package/templates/escrows/details/EscrowDetailDialog.tsx +18 -18
- package/templates/escrows/details/GeneralInformation.tsx +20 -23
- package/templates/escrows/details/MilestoneCard.tsx +46 -47
- package/templates/escrows/details/MilestoneDetailDialog.tsx +1 -2
- package/templates/escrows/details/Milestones.tsx +0 -5
- package/templates/escrows/details/SuccessReleaseDialog.tsx +6 -9
- package/templates/escrows/details/useDetailsEscrow.ts +2 -2
- package/templates/escrows/escrows-by-role/cards/EscrowsCards.tsx +111 -60
- package/templates/escrows/escrows-by-role/cards/Filters.tsx +3 -5
- package/templates/escrows/escrows-by-role/table/EscrowsTable.tsx +36 -38
- package/templates/escrows/escrows-by-role/table/Filters.tsx +3 -5
- package/templates/escrows/escrows-by-role/useEscrowsByRole.shared.ts +33 -25
- package/templates/escrows/escrows-by-signer/cards/EscrowsCards.tsx +107 -67
- package/templates/escrows/escrows-by-signer/cards/Filters.tsx +3 -5
- package/templates/escrows/escrows-by-signer/table/EscrowsTable.tsx +28 -38
- package/templates/escrows/escrows-by-signer/table/Filters.tsx +3 -5
- package/templates/escrows/escrows-by-signer/useEscrowsBySigner.shared.ts +32 -25
- package/templates/escrows/multi-release/dispute-milestone/button/DisputeEscrow.tsx +98 -0
- package/templates/escrows/multi-release/initialize-escrow/dialog/InitializeEscrow.tsx +528 -0
- package/templates/escrows/multi-release/initialize-escrow/form/InitializeEscrow.tsx +506 -0
- package/templates/escrows/multi-release/initialize-escrow/shared/schema.ts +179 -0
- package/templates/escrows/multi-release/initialize-escrow/shared/useInitializeEscrow.ts +175 -0
- package/templates/escrows/multi-release/release-milestone/button/ReleaseEscrow.tsx +116 -0
- package/templates/escrows/multi-release/resolve-dispute/button/ResolveDispute.tsx +122 -0
- package/templates/escrows/multi-release/resolve-dispute/dialog/ResolveDispute.tsx +178 -0
- package/templates/escrows/multi-release/resolve-dispute/form/ResolveDispute.tsx +156 -0
- package/templates/escrows/multi-release/resolve-dispute/shared/schema.ts +85 -0
- package/templates/escrows/multi-release/resolve-dispute/shared/useResolveDispute.ts +105 -0
- package/templates/escrows/multi-release/update-escrow/dialog/UpdateEscrow.tsx +471 -0
- package/templates/escrows/multi-release/update-escrow/form/UpdateEscrow.tsx +449 -0
- package/templates/escrows/multi-release/update-escrow/shared/schema.ts +152 -0
- package/templates/escrows/multi-release/update-escrow/shared/useUpdateEscrow.ts +254 -0
- package/templates/escrows/{single-release → single-multi-release}/approve-milestone/button/ApproveMilestone.tsx +21 -8
- package/templates/escrows/{single-release → single-multi-release}/approve-milestone/dialog/ApproveMilestone.tsx +4 -4
- package/templates/escrows/{single-release → single-multi-release}/approve-milestone/form/ApproveMilestone.tsx +4 -4
- package/templates/escrows/{single-release/approve-milestone/shared → single-multi-release/approve-milestone}/useApproveMilestone.ts +17 -17
- package/templates/escrows/{single-release → single-multi-release}/change-milestone-status/button/ChangeMilestoneStatus.tsx +5 -5
- package/templates/escrows/{single-release → single-multi-release}/change-milestone-status/dialog/ChangeMilestoneStatus.tsx +5 -5
- package/templates/escrows/{single-release → single-multi-release}/change-milestone-status/form/ChangeMilestoneStatus.tsx +4 -4
- package/templates/escrows/{single-release/change-milestone-status/shared → single-multi-release/change-milestone-status}/useChangeMilestoneStatus.ts +2 -2
- package/templates/escrows/{single-release → single-multi-release}/fund-escrow/button/FundEscrow.tsx +4 -4
- package/templates/escrows/{single-release → single-multi-release}/fund-escrow/dialog/FundEscrow.tsx +3 -3
- package/templates/escrows/{single-release → single-multi-release}/fund-escrow/form/FundEscrow.tsx +3 -3
- package/templates/escrows/{single-release/fund-escrow/shared → single-multi-release/fund-escrow}/useFundEscrow.ts +2 -2
- package/templates/escrows/single-release/dispute-escrow/button/DisputeEscrow.tsx +3 -3
- package/templates/escrows/single-release/initialize-escrow/dialog/InitializeEscrow.tsx +14 -6
- package/templates/escrows/single-release/initialize-escrow/form/InitializeEscrow.tsx +14 -6
- package/templates/escrows/single-release/initialize-escrow/shared/schema.ts +0 -57
- package/templates/escrows/single-release/initialize-escrow/shared/useInitializeEscrow.ts +43 -2
- package/templates/escrows/single-release/release-escrow/button/ReleaseEscrow.tsx +5 -5
- package/templates/escrows/single-release/resolve-dispute/button/ResolveDispute.tsx +4 -4
- package/templates/escrows/single-release/resolve-dispute/dialog/ResolveDispute.tsx +4 -7
- package/templates/escrows/single-release/resolve-dispute/form/ResolveDispute.tsx +2 -2
- package/templates/escrows/single-release/resolve-dispute/shared/useResolveDispute.ts +15 -2
- package/templates/escrows/single-release/update-escrow/dialog/UpdateEscrow.tsx +2 -2
- package/templates/escrows/single-release/update-escrow/form/UpdateEscrow.tsx +2 -2
- package/templates/escrows/single-release/update-escrow/shared/useUpdateEscrow.ts +229 -224
- package/templates/{escrows/escrow-context → providers}/EscrowDialogsProvider.tsx +1 -3
- package/templates/{escrows/escrow-context → providers}/EscrowProvider.tsx +27 -4
- package/templates/providers/ReactQueryClientProvider.tsx +3 -1
- package/templates/providers/TrustlessWork.tsx +1 -1
- package/templates/escrows/details/ProgressEscrow.tsx +0 -191
- /package/templates/escrows/{single-release/approve-milestone/shared → single-multi-release/approve-milestone}/schema.ts +0 -0
- /package/templates/escrows/{single-release/change-milestone-status/shared → single-multi-release/change-milestone-status}/schema.ts +0 -0
- /package/templates/escrows/{single-release/fund-escrow/shared → single-multi-release/fund-escrow}/schema.ts +0 -0
- /package/templates/{escrows/escrow-context → providers}/EscrowAmountProvider.tsx +0 -0
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { GetEscrowsFromIndexerResponse } from "@trustless-work/escrow/types";
|
|
2
|
-
import { cn } from "@/lib/utils";
|
|
3
|
-
import {
|
|
4
|
-
MultiReleaseMilestone,
|
|
5
|
-
SingleReleaseMilestone,
|
|
6
|
-
} from "@trustless-work/escrow";
|
|
7
|
-
|
|
8
|
-
type Escrow = {
|
|
9
|
-
[K in keyof Omit<
|
|
10
|
-
GetEscrowsFromIndexerResponse,
|
|
11
|
-
"type" | "updatedAt" | "createdAt" | "user"
|
|
12
|
-
>]: K extends "trustline"
|
|
13
|
-
? Omit<NonNullable<GetEscrowsFromIndexerResponse["trustline"]>, "name">
|
|
14
|
-
: GetEscrowsFromIndexerResponse[K];
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
interface ProgressEscrowProps {
|
|
18
|
-
escrow: Escrow;
|
|
19
|
-
className?: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const ProgressCircle = ({
|
|
23
|
-
percentage,
|
|
24
|
-
color,
|
|
25
|
-
size = 44,
|
|
26
|
-
strokeWidth = 3,
|
|
27
|
-
}: {
|
|
28
|
-
percentage: number;
|
|
29
|
-
color: string;
|
|
30
|
-
size?: number;
|
|
31
|
-
strokeWidth?: number;
|
|
32
|
-
}) => {
|
|
33
|
-
const radius = (size - strokeWidth) / 2;
|
|
34
|
-
const circumference = 2 * Math.PI * radius;
|
|
35
|
-
const strokeDashoffset = circumference - (percentage / 100) * circumference;
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<div className="relative inline-flex">
|
|
39
|
-
<svg
|
|
40
|
-
width={size}
|
|
41
|
-
height={size}
|
|
42
|
-
viewBox={`0 0 ${size} ${size}`}
|
|
43
|
-
className="transform -rotate-90"
|
|
44
|
-
>
|
|
45
|
-
<circle
|
|
46
|
-
cx={size / 2}
|
|
47
|
-
cy={size / 2}
|
|
48
|
-
r={radius}
|
|
49
|
-
fill="none"
|
|
50
|
-
stroke="rgba(226, 232, 240, 0.3)"
|
|
51
|
-
strokeWidth={strokeWidth}
|
|
52
|
-
/>
|
|
53
|
-
<circle
|
|
54
|
-
cx={size / 2}
|
|
55
|
-
cy={size / 2}
|
|
56
|
-
r={radius}
|
|
57
|
-
fill="none"
|
|
58
|
-
stroke={color}
|
|
59
|
-
strokeWidth={strokeWidth}
|
|
60
|
-
strokeDasharray={circumference}
|
|
61
|
-
strokeDashoffset={strokeDashoffset}
|
|
62
|
-
strokeLinecap="round"
|
|
63
|
-
/>
|
|
64
|
-
</svg>
|
|
65
|
-
<div className="absolute inset-0 flex items-center justify-center text-xs font-medium">
|
|
66
|
-
{Math.round(percentage)}%
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const ProgressEscrow = ({ escrow, className }: ProgressEscrowProps) => {
|
|
73
|
-
const completedMilestones = escrow.milestones.filter(
|
|
74
|
-
(milestone) => milestone.status === "completed"
|
|
75
|
-
).length;
|
|
76
|
-
const approvedMilestones = escrow.milestones.filter(
|
|
77
|
-
(milestone: SingleReleaseMilestone | MultiReleaseMilestone) =>
|
|
78
|
-
("flags" in milestone && milestone.flags?.approved === true) ||
|
|
79
|
-
(!("flags" in milestone) &&
|
|
80
|
-
(milestone as SingleReleaseMilestone).approved === true)
|
|
81
|
-
).length;
|
|
82
|
-
const disputedMilestones = escrow.milestones.filter(
|
|
83
|
-
(milestone: SingleReleaseMilestone | MultiReleaseMilestone) =>
|
|
84
|
-
"flags" in milestone && milestone.flags?.disputed === true
|
|
85
|
-
).length;
|
|
86
|
-
const resolvedMilestones = escrow.milestones.filter(
|
|
87
|
-
(milestone: SingleReleaseMilestone | MultiReleaseMilestone) =>
|
|
88
|
-
"flags" in milestone && milestone.flags?.resolved === true
|
|
89
|
-
).length;
|
|
90
|
-
const releasedMilestones = escrow.milestones.filter(
|
|
91
|
-
(milestone: SingleReleaseMilestone | MultiReleaseMilestone) =>
|
|
92
|
-
"flags" in milestone && milestone.flags?.released === true
|
|
93
|
-
).length;
|
|
94
|
-
const totalMilestones = escrow.milestones.length;
|
|
95
|
-
|
|
96
|
-
const progressPercentageCompleted =
|
|
97
|
-
totalMilestones > 0 ? (completedMilestones / totalMilestones) * 100 : 0;
|
|
98
|
-
const progressPercentageApproved =
|
|
99
|
-
totalMilestones > 0 ? (approvedMilestones / totalMilestones) * 100 : 0;
|
|
100
|
-
const progressPercentageDisputed =
|
|
101
|
-
totalMilestones > 0 ? (disputedMilestones / totalMilestones) * 100 : 0;
|
|
102
|
-
const progressPercentageResolved =
|
|
103
|
-
totalMilestones > 0 ? (resolvedMilestones / totalMilestones) * 100 : 0;
|
|
104
|
-
const progressPercentageReleased =
|
|
105
|
-
totalMilestones > 0 ? (releasedMilestones / totalMilestones) * 100 : 0;
|
|
106
|
-
|
|
107
|
-
const shouldHideProgress = escrow.flags?.released || escrow.flags?.resolved;
|
|
108
|
-
const isMultiRelease =
|
|
109
|
-
escrow.milestones[0] && "flags" in escrow.milestones[0];
|
|
110
|
-
|
|
111
|
-
if (shouldHideProgress || totalMilestones === 0) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return (
|
|
116
|
-
<div className={cn("space-y-4 px-10 w-full", className)}>
|
|
117
|
-
<div className="flex flex-wrap items-center justify-center gap-6">
|
|
118
|
-
<div className="flex items-center gap-3">
|
|
119
|
-
<ProgressCircle
|
|
120
|
-
percentage={progressPercentageCompleted}
|
|
121
|
-
color="#006be4"
|
|
122
|
-
/>
|
|
123
|
-
<div className="text-xs">
|
|
124
|
-
<div className="font-medium">Completed</div>
|
|
125
|
-
<div className="text-muted-foreground">
|
|
126
|
-
{completedMilestones}/{totalMilestones}
|
|
127
|
-
</div>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<div className="flex items-center gap-3">
|
|
132
|
-
<ProgressCircle
|
|
133
|
-
percentage={progressPercentageApproved}
|
|
134
|
-
color="#15803d"
|
|
135
|
-
/>
|
|
136
|
-
<div className="text-xs">
|
|
137
|
-
<div className="font-medium">Approved</div>
|
|
138
|
-
<div className="text-muted-foreground">
|
|
139
|
-
{approvedMilestones}/{totalMilestones}
|
|
140
|
-
</div>
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
|
|
144
|
-
{isMultiRelease && (
|
|
145
|
-
<>
|
|
146
|
-
<div className="flex items-center gap-3">
|
|
147
|
-
<ProgressCircle
|
|
148
|
-
percentage={progressPercentageDisputed}
|
|
149
|
-
color="#dc2626"
|
|
150
|
-
/>
|
|
151
|
-
<div className="text-xs">
|
|
152
|
-
<div className="font-medium">Disputed</div>
|
|
153
|
-
<div className="text-muted-foreground">
|
|
154
|
-
{disputedMilestones}/{totalMilestones}
|
|
155
|
-
</div>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
|
|
159
|
-
<div className="flex items-center gap-3">
|
|
160
|
-
<ProgressCircle
|
|
161
|
-
percentage={progressPercentageResolved}
|
|
162
|
-
color="#15803d"
|
|
163
|
-
/>
|
|
164
|
-
<div className="text-xs">
|
|
165
|
-
<div className="font-medium">Resolved</div>
|
|
166
|
-
<div className="text-muted-foreground">
|
|
167
|
-
{resolvedMilestones}/{totalMilestones}
|
|
168
|
-
</div>
|
|
169
|
-
</div>
|
|
170
|
-
</div>
|
|
171
|
-
|
|
172
|
-
<div className="flex items-center gap-3">
|
|
173
|
-
<ProgressCircle
|
|
174
|
-
percentage={progressPercentageReleased}
|
|
175
|
-
color="#15803d"
|
|
176
|
-
/>
|
|
177
|
-
<div className="text-xs">
|
|
178
|
-
<div className="font-medium">Released</div>
|
|
179
|
-
<div className="text-muted-foreground">
|
|
180
|
-
{releasedMilestones}/{totalMilestones}
|
|
181
|
-
</div>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
</>
|
|
185
|
-
)}
|
|
186
|
-
</div>
|
|
187
|
-
</div>
|
|
188
|
-
);
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
export default ProgressEscrow;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|