@businessflow/reviews 1.0.0
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 +97 -0
- package/dist/client/index.d.mts +245 -0
- package/dist/client/index.d.ts +245 -0
- package/dist/client/index.js +400 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/index.mjs +368 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/index.d.mts +239 -0
- package/dist/index.d.ts +239 -0
- package/dist/index.js +1381 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1349 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react/index.d.mts +311 -0
- package/dist/react/index.d.ts +311 -0
- package/dist/react/index.js +1390 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +1355 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/server/index.d.mts +189 -0
- package/dist/server/index.d.ts +189 -0
- package/dist/server/index.js +402 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +369 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/types/index.d.mts +141 -0
- package/dist/types/index.d.ts +141 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +1 -0
- package/dist/types/index.mjs.map +1 -0
- package/package.json +104 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
interface Review {
|
|
5
|
+
id: string | number;
|
|
6
|
+
reviewerName: string;
|
|
7
|
+
reviewerEmail?: string;
|
|
8
|
+
reviewerTitle?: string;
|
|
9
|
+
reviewerCompany?: string;
|
|
10
|
+
reviewerAvatar?: string;
|
|
11
|
+
rating: number;
|
|
12
|
+
content?: string;
|
|
13
|
+
createdAt: string | Date;
|
|
14
|
+
updatedAt?: string | Date;
|
|
15
|
+
featured?: boolean;
|
|
16
|
+
approved?: boolean;
|
|
17
|
+
metadata?: Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
interface ReviewFormData {
|
|
20
|
+
reviewerName: string;
|
|
21
|
+
reviewerEmail: string;
|
|
22
|
+
reviewerTitle?: string;
|
|
23
|
+
reviewerCompany?: string;
|
|
24
|
+
rating: number;
|
|
25
|
+
content?: string;
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
}
|
|
28
|
+
interface ReviewApiResponse {
|
|
29
|
+
success: boolean;
|
|
30
|
+
message?: string;
|
|
31
|
+
reviewId?: string | number;
|
|
32
|
+
status?: 'pending' | 'approved' | 'rejected';
|
|
33
|
+
data?: any;
|
|
34
|
+
}
|
|
35
|
+
interface ReviewSubmissionConfig {
|
|
36
|
+
endpoint: string;
|
|
37
|
+
method?: 'POST' | 'PUT';
|
|
38
|
+
headers?: Record<string, string>;
|
|
39
|
+
maxRetries?: number;
|
|
40
|
+
timeout?: number;
|
|
41
|
+
transformRequest?: (data: ReviewFormData) => any;
|
|
42
|
+
transformResponse?: (response: any) => ReviewApiResponse;
|
|
43
|
+
onSuccess?: (response: ReviewApiResponse) => void;
|
|
44
|
+
onError?: (error: Error) => void;
|
|
45
|
+
}
|
|
46
|
+
interface ReviewFetchConfig {
|
|
47
|
+
endpoint: string;
|
|
48
|
+
method?: 'GET';
|
|
49
|
+
headers?: Record<string, string>;
|
|
50
|
+
maxRetries?: number;
|
|
51
|
+
timeout?: number;
|
|
52
|
+
params?: {
|
|
53
|
+
limit?: number;
|
|
54
|
+
offset?: number;
|
|
55
|
+
featured?: boolean;
|
|
56
|
+
minRating?: number;
|
|
57
|
+
sortBy?: 'date' | 'rating' | 'name';
|
|
58
|
+
sortOrder?: 'asc' | 'desc';
|
|
59
|
+
};
|
|
60
|
+
transformResponse?: (response: any) => Review[];
|
|
61
|
+
onError?: (error: Error) => void;
|
|
62
|
+
}
|
|
63
|
+
interface ReviewFieldConfig {
|
|
64
|
+
show?: boolean;
|
|
65
|
+
required?: boolean;
|
|
66
|
+
label?: string;
|
|
67
|
+
type?: string;
|
|
68
|
+
placeholder?: string;
|
|
69
|
+
validation?: ValidationRule[];
|
|
70
|
+
}
|
|
71
|
+
interface ReviewFormConfig {
|
|
72
|
+
fields?: {
|
|
73
|
+
reviewerName?: ReviewFieldConfig;
|
|
74
|
+
reviewerEmail?: ReviewFieldConfig;
|
|
75
|
+
reviewerTitle?: ReviewFieldConfig;
|
|
76
|
+
reviewerCompany?: ReviewFieldConfig;
|
|
77
|
+
rating?: ReviewFieldConfig;
|
|
78
|
+
content?: ReviewFieldConfig;
|
|
79
|
+
[key: string]: ReviewFieldConfig | undefined;
|
|
80
|
+
};
|
|
81
|
+
recaptcha?: {
|
|
82
|
+
siteKey: string;
|
|
83
|
+
action?: string;
|
|
84
|
+
};
|
|
85
|
+
styling?: {
|
|
86
|
+
className?: string;
|
|
87
|
+
fieldClassName?: string;
|
|
88
|
+
buttonClassName?: string;
|
|
89
|
+
errorClassName?: string;
|
|
90
|
+
starClassName?: string;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
interface TestimonialDisplayConfig {
|
|
94
|
+
limit?: number;
|
|
95
|
+
showRating?: boolean;
|
|
96
|
+
showDate?: boolean;
|
|
97
|
+
showAvatar?: boolean;
|
|
98
|
+
showCompany?: boolean;
|
|
99
|
+
showTitle?: boolean;
|
|
100
|
+
layout?: 'grid' | 'list' | 'slider';
|
|
101
|
+
columns?: number;
|
|
102
|
+
autoRefresh?: boolean;
|
|
103
|
+
refreshInterval?: number;
|
|
104
|
+
styling?: {
|
|
105
|
+
containerClassName?: string;
|
|
106
|
+
cardClassName?: string;
|
|
107
|
+
headerClassName?: string;
|
|
108
|
+
contentClassName?: string;
|
|
109
|
+
ratingClassName?: string;
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
interface ValidationRule {
|
|
113
|
+
type: 'required' | 'email' | 'minLength' | 'maxLength' | 'pattern' | 'custom' | 'rating';
|
|
114
|
+
value?: string | number;
|
|
115
|
+
message?: string;
|
|
116
|
+
validator?: (value: any) => boolean | string;
|
|
117
|
+
}
|
|
118
|
+
interface ValidationErrors {
|
|
119
|
+
[field: string]: string;
|
|
120
|
+
}
|
|
121
|
+
interface ReviewHandlerConfig {
|
|
122
|
+
onFetch?: (params?: any) => Promise<Review[]>;
|
|
123
|
+
onSubmit?: (data: ReviewFormData) => Promise<ReviewApiResponse>;
|
|
124
|
+
recaptcha?: {
|
|
125
|
+
secretKey: string;
|
|
126
|
+
minimumScore?: number;
|
|
127
|
+
};
|
|
128
|
+
validation?: {
|
|
129
|
+
[field: string]: ValidationRule[];
|
|
130
|
+
};
|
|
131
|
+
onSuccess?: (data: ReviewFormData, response: ReviewApiResponse) => Promise<void>;
|
|
132
|
+
onError?: (data: ReviewFormData, error: Error) => Promise<void>;
|
|
133
|
+
rateLimiter?: (request: Request) => Promise<boolean>;
|
|
134
|
+
}
|
|
135
|
+
interface StarRatingProps {
|
|
136
|
+
rating: number;
|
|
137
|
+
maxRating?: number;
|
|
138
|
+
editable?: boolean;
|
|
139
|
+
onChange?: (rating: number) => void;
|
|
140
|
+
size?: 'small' | 'medium' | 'large';
|
|
141
|
+
className?: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Generic review client for fetching and submitting reviews
|
|
146
|
+
*/
|
|
147
|
+
declare class ReviewClient {
|
|
148
|
+
private fetchConfig?;
|
|
149
|
+
private submitConfig?;
|
|
150
|
+
private maxRetries;
|
|
151
|
+
private timeout;
|
|
152
|
+
constructor(config: {
|
|
153
|
+
fetchConfig?: ReviewFetchConfig;
|
|
154
|
+
submitConfig?: ReviewSubmissionConfig;
|
|
155
|
+
maxRetries?: number;
|
|
156
|
+
timeout?: number;
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* Fetch reviews with retry logic
|
|
160
|
+
*/
|
|
161
|
+
fetchReviews(params?: {
|
|
162
|
+
limit?: number;
|
|
163
|
+
offset?: number;
|
|
164
|
+
featured?: boolean;
|
|
165
|
+
minRating?: number;
|
|
166
|
+
}, retryCount?: number): Promise<Review[]>;
|
|
167
|
+
/**
|
|
168
|
+
* Submit a review with retry logic
|
|
169
|
+
*/
|
|
170
|
+
submitReview(reviewData: ReviewFormData, retryCount?: number): Promise<ReviewApiResponse>;
|
|
171
|
+
/**
|
|
172
|
+
* Update configuration
|
|
173
|
+
*/
|
|
174
|
+
updateConfig(config: {
|
|
175
|
+
fetchConfig?: Partial<ReviewFetchConfig>;
|
|
176
|
+
submitConfig?: Partial<ReviewSubmissionConfig>;
|
|
177
|
+
}): void;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Combined handler that supports both GET (fetch) and POST (submit)
|
|
182
|
+
*/
|
|
183
|
+
declare function createReviewHandler(config: ReviewHandlerConfig): (request: NextRequest) => Promise<NextResponse>;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Star rating component for displaying and selecting ratings
|
|
187
|
+
*/
|
|
188
|
+
declare const StarRating: React.FC<StarRatingProps>;
|
|
189
|
+
|
|
190
|
+
interface TestimonialsSectionProps extends TestimonialDisplayConfig {
|
|
191
|
+
fetchConfig: ReviewFetchConfig;
|
|
192
|
+
className?: string;
|
|
193
|
+
renderTestimonial?: (testimonial: Review) => React.ReactNode;
|
|
194
|
+
renderLoading?: () => React.ReactNode;
|
|
195
|
+
renderError?: (error: string, canRetry: boolean, onRetry: () => void) => React.ReactNode;
|
|
196
|
+
renderEmpty?: () => React.ReactNode;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Generic testimonials display component
|
|
200
|
+
*/
|
|
201
|
+
declare const TestimonialsSection: React.FC<TestimonialsSectionProps>;
|
|
202
|
+
|
|
203
|
+
interface UseReviewSubmissionConfig extends ReviewFormConfig {
|
|
204
|
+
endpoint?: string;
|
|
205
|
+
onSubmit?: (data: ReviewFormData) => Promise<ReviewApiResponse>;
|
|
206
|
+
onSuccess?: (response: ReviewApiResponse) => void;
|
|
207
|
+
onError?: (error: Error) => void;
|
|
208
|
+
maxRetries?: number;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
interface ReviewFormProps extends UseReviewSubmissionConfig {
|
|
212
|
+
className?: string;
|
|
213
|
+
children?: React.ReactNode;
|
|
214
|
+
renderField?: (field: {
|
|
215
|
+
name: keyof ReviewFormData;
|
|
216
|
+
label: string;
|
|
217
|
+
value: any;
|
|
218
|
+
type: string;
|
|
219
|
+
required: boolean;
|
|
220
|
+
placeholder?: string;
|
|
221
|
+
error?: string;
|
|
222
|
+
onChange: (value: any) => void;
|
|
223
|
+
}) => React.ReactNode;
|
|
224
|
+
renderSubmitButton?: (props: {
|
|
225
|
+
isSubmitting: boolean;
|
|
226
|
+
isDisabled: boolean;
|
|
227
|
+
onClick: () => void;
|
|
228
|
+
}) => React.ReactNode;
|
|
229
|
+
renderSuccess?: (message: string) => React.ReactNode;
|
|
230
|
+
renderError?: (error: string, canRetry: boolean, onRetry: () => void) => React.ReactNode;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Generic review form component with customizable rendering
|
|
234
|
+
*/
|
|
235
|
+
declare const ReviewForm: React.FC<ReviewFormProps>;
|
|
236
|
+
|
|
237
|
+
declare const version = "1.0.0";
|
|
238
|
+
|
|
239
|
+
export { type Review, type ReviewApiResponse, ReviewClient, type ReviewFetchConfig, type ReviewFieldConfig, ReviewForm, type ReviewFormConfig, type ReviewFormData, type ReviewHandlerConfig, type ReviewSubmissionConfig, StarRating, type StarRatingProps, type TestimonialDisplayConfig, TestimonialsSection, type ValidationErrors, type ValidationRule, createReviewHandler, version };
|