@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.
@@ -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 };
@@ -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 };
@@ -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 };