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