@adoptaunabuelo/react-components 0.3.146 → 0.3.147
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/esm/components/Avatar/Avatar.d.ts +19 -0
- package/dist/esm/components/BreadCrumb/BreadCrumb.d.ts +11 -0
- package/dist/esm/components/Button/Button.d.ts +19 -0
- package/dist/esm/components/CellSelector/CellSelector.d.ts +28 -0
- package/dist/esm/components/Chat/Chat.d.ts +19 -0
- package/dist/esm/components/Checkbox/CheckboxList.d.ts +25 -0
- package/dist/esm/components/Countdown/Countdown.d.ts +17 -0
- package/dist/esm/components/Counter/Counter.d.ts +21 -0
- package/dist/esm/components/CurrencySelector/CurrencySelector.d.ts +23 -0
- package/dist/esm/components/Dropdown/Dropdown.d.ts +29 -0
- package/dist/esm/components/FAQs/FAQs.d.ts +22 -0
- package/dist/esm/components/Feedback/Feedback.d.ts +22 -0
- package/dist/esm/components/Filter/Filter.d.ts +13 -0
- package/dist/esm/components/Form/Form.d.ts +15 -0
- package/dist/esm/components/Hover/Hover.d.ts +12 -0
- package/dist/esm/components/Input/Basic/Input.d.ts +17 -0
- package/dist/esm/components/Input/Basic/InputPrimary.d.ts +3 -0
- package/dist/esm/components/Input/Basic/InputSecondary.d.ts +3 -0
- package/dist/esm/components/Input/Basic/InputThird.d.ts +3 -0
- package/dist/esm/components/Input/Birthday/InputBirthday.d.ts +14 -0
- package/dist/esm/components/Input/Chat/InputChat.d.ts +24 -0
- package/dist/esm/components/Input/Code/InputCode.d.ts +15 -0
- package/dist/esm/components/Input/DateRange/InputDateRange.d.ts +19 -0
- package/dist/esm/components/Input/Image/InputImage.d.ts +19 -0
- package/dist/esm/components/Input/Location/InputLocation.d.ts +29 -0
- package/dist/esm/components/Input/Phone/InputPhone.d.ts +21 -0
- package/dist/esm/components/Input/Price/InputPrice.d.ts +30 -0
- package/dist/esm/components/Input/Range/InputRange.d.ts +31 -0
- package/dist/esm/components/Label/Label.d.ts +17 -0
- package/dist/esm/components/Menu/Menu.d.ts +28 -0
- package/dist/esm/components/Modal/Modal.d.ts +18 -0
- package/dist/esm/components/Pagination/Pagination.d.ts +18 -0
- package/dist/esm/components/Payout/Payout.d.ts +32 -0
- package/dist/esm/components/ProgressBar/ProgressBar.d.ts +20 -0
- package/dist/esm/components/RadioButton/RadioButtonList.d.ts +22 -0
- package/dist/esm/components/SearchBar/SearchBar.d.ts +16 -0
- package/dist/esm/components/Select/Select.d.ts +25 -0
- package/dist/esm/components/Stamp/Stamp.d.ts +16 -0
- package/dist/esm/components/Switch/Switch.d.ts +16 -0
- package/dist/esm/components/SwitchTag/SwitchTag.d.ts +17 -0
- package/dist/esm/components/Tabs/Tabs.d.ts +27 -0
- package/dist/esm/components/TagSelector/TagSelector.d.ts +25 -0
- package/dist/esm/components/Text/Animated.d.ts +17 -0
- package/dist/esm/components/Text/Text.d.ts +11 -0
- package/dist/esm/components/TextArea/TextArea.d.ts +19 -0
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +835 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,19 @@ import { LocationProps as LocationProps$1 } from '@components/Input/Location/Inp
|
|
|
9
9
|
|
|
10
10
|
declare const BreadCrumb: ({ steps, selectedStep, ...restProps }: Props$g) => react_jsx_runtime.JSX.Element;
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Step indicator component displaying circular dots to show progress through a multi-step flow.
|
|
14
|
+
* Highlights the current active step with primary color.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <BreadCrumb steps={4} selectedStep={1} />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
12
21
|
interface Props$g extends ComponentPropsWithoutRef<"div"> {
|
|
22
|
+
/** Current active step index (0-based) */
|
|
13
23
|
selectedStep?: number;
|
|
24
|
+
/** Total number of steps to display */
|
|
14
25
|
steps: number;
|
|
15
26
|
}
|
|
16
27
|
|
|
@@ -31,49 +42,121 @@ interface ButtonProps$1 extends ComponentPropsWithoutRef<"p"> {
|
|
|
31
42
|
|
|
32
43
|
declare const Text: (props: TextProps) => react_jsx_runtime.JSX.Element | null;
|
|
33
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Unified typography component that renders headers (h1-h6, d1), paragraphs (p, p2, c1, c2, o1, o2), or button text (b1, b2, b3).
|
|
47
|
+
* Automatically chooses the correct semantic HTML element based on the `type` prop.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* <Text type="h1" weight="bold">Page Title</Text>
|
|
52
|
+
* <Text type="p" color={ColorV2.text.neutralMedium}>Body text</Text>
|
|
53
|
+
* <Text type="b1">Button text</Text>
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
34
56
|
type TextProps = HeaderProps | ParagraphProps | ButtonProps$1;
|
|
35
57
|
|
|
36
58
|
declare const ProgressBar: (props: Props$f) => react_jsx_runtime.JSX.Element;
|
|
37
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Animated progress bar supporting single or multiple progress indicators with optional percentage display.
|
|
62
|
+
* Smoothly transitions to new values with configurable animation timing.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* <ProgressBar
|
|
67
|
+
* progress={75}
|
|
68
|
+
* showPercentage
|
|
69
|
+
* animationTime={1.5}
|
|
70
|
+
* />
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
38
73
|
interface Props$f extends ComponentPropsWithoutRef<"div"> {
|
|
74
|
+
/** Current progress value or array of multiple progress values with optional colors */
|
|
39
75
|
progress: number | Array<{
|
|
40
76
|
value: number;
|
|
41
77
|
color?: string;
|
|
42
78
|
}>;
|
|
79
|
+
/** Minimum value for progress calculation (default: 0) */
|
|
43
80
|
minValue?: number;
|
|
81
|
+
/** Maximum value for progress calculation (default: 100) */
|
|
44
82
|
maxValue?: number;
|
|
83
|
+
/** Bar color (overrides default primary color) */
|
|
45
84
|
color?: string;
|
|
85
|
+
/** Animation duration in seconds */
|
|
46
86
|
animationTime?: number;
|
|
87
|
+
/** Delay in seconds before animation starts */
|
|
47
88
|
animationDelay?: number;
|
|
89
|
+
/** Display percentage badge above progress bar */
|
|
48
90
|
showPercentage?: boolean;
|
|
49
91
|
}
|
|
50
92
|
|
|
51
93
|
declare const FeedBack: ({ type, text, isVisible, ...props }: FeedBackProps) => react_jsx_runtime.JSX.Element | null;
|
|
52
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Toast-style feedback notification with slide-in/out animation.
|
|
97
|
+
* Auto-dismisses after specified duration. Supports success, error, and custom types.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```tsx
|
|
101
|
+
* <Feedback
|
|
102
|
+
* type="success"
|
|
103
|
+
* text="Changes saved successfully"
|
|
104
|
+
* isVisible={showFeedback}
|
|
105
|
+
* closeAfter={5000}
|
|
106
|
+
* onClose={() => setShowFeedback(false)}
|
|
107
|
+
* />
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
53
110
|
interface FeedBackProps extends ComponentPropsWithoutRef<"div"> {
|
|
111
|
+
/** Controls visibility (triggers show/hide animation) */
|
|
54
112
|
isVisible: boolean;
|
|
113
|
+
/** Visual variant: `success` (green with check), `error` (red with X), `custom` (use your own icon/color) */
|
|
55
114
|
type: "success" | "error" | "custom";
|
|
115
|
+
/** Custom icon for `type="custom"` */
|
|
56
116
|
icon?: ReactNode;
|
|
117
|
+
/** Message text to display */
|
|
57
118
|
text: string;
|
|
119
|
+
/** Auto-dismiss duration in milliseconds (default: 3000) */
|
|
58
120
|
closeAfter?: number;
|
|
121
|
+
/** Show manual close button */
|
|
59
122
|
showClose?: boolean;
|
|
123
|
+
/** Callback fired when dismissed (auto or manual) */
|
|
60
124
|
onClose?: () => void;
|
|
61
125
|
}
|
|
62
126
|
|
|
63
127
|
declare const Button: ({ design, onSuccess, ...restProps }: ButtonProps) => react_jsx_runtime.JSX.Element;
|
|
64
128
|
|
|
129
|
+
/**
|
|
130
|
+
* Button component with multiple visual variants and built-in loading/success states.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```tsx
|
|
134
|
+
* <Button design="primary" loading={isLoading}>
|
|
135
|
+
* Submit
|
|
136
|
+
* </Button>
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
65
139
|
interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
|
|
140
|
+
/** Visual variant: `primary` for main actions, `secondary` for less emphasis, `text` for minimal style, `image` for icon-only, `call-to-action` for prominent CTAs */
|
|
66
141
|
design?: "primary" | "secondary" | "text" | "image" | "call-to-action";
|
|
142
|
+
/** Button size: `normal` (default) or `small` for compact layouts */
|
|
67
143
|
size?: "small" | "normal";
|
|
68
144
|
icon?: react__default.ReactElement;
|
|
69
145
|
iconPosition?: "left" | "right";
|
|
146
|
+
/** Shows animated loading spinner (Lottie animation) */
|
|
70
147
|
loading?: boolean;
|
|
71
148
|
disabled?: boolean;
|
|
149
|
+
/** Triggers success animation (Lottie checkmark) */
|
|
72
150
|
success?: boolean;
|
|
151
|
+
/** Delay in milliseconds before showing loading animation */
|
|
73
152
|
animationDelay?: number;
|
|
153
|
+
/** Duration in milliseconds for success animation before callback */
|
|
74
154
|
animationTime?: number;
|
|
155
|
+
/** Time in seconds to display countdown on button */
|
|
75
156
|
countdown?: number;
|
|
157
|
+
/** Callback fired when success animation completes */
|
|
76
158
|
onSuccess?: (success: boolean) => void;
|
|
159
|
+
/** Callback fired when countdown reaches zero */
|
|
77
160
|
onCountdownEnd?: () => void;
|
|
78
161
|
}
|
|
79
162
|
|
|
@@ -81,50 +164,114 @@ interface InputStyledProps extends ComponentPropsWithRef<"input"> {
|
|
|
81
164
|
}
|
|
82
165
|
|
|
83
166
|
interface InputPrimaryProps extends InputStyledProps {
|
|
167
|
+
/** Custom React element to display on the left side of the input (e.g., icon, prefix) */
|
|
84
168
|
LeftContent?: ReactElement;
|
|
169
|
+
/** Custom CSS properties for the outer container wrapper */
|
|
85
170
|
containerStyle?: CSSProperties;
|
|
171
|
+
/** Error message displayed below the input in red text */
|
|
86
172
|
error?: string | undefined;
|
|
87
173
|
design?: "primary";
|
|
88
174
|
}
|
|
89
175
|
|
|
90
176
|
interface InputSecondaryProps extends InputStyledProps {
|
|
177
|
+
/** Custom React element to display on the left side of the input (e.g., icon, prefix) */
|
|
91
178
|
LeftContent?: ReactElement;
|
|
179
|
+
/** Custom CSS properties for the outer container wrapper */
|
|
92
180
|
containerStyle?: CSSProperties;
|
|
181
|
+
/** Error message displayed below the input in red text */
|
|
93
182
|
error?: string | undefined;
|
|
94
183
|
design?: "secondary";
|
|
95
184
|
}
|
|
96
185
|
|
|
97
186
|
interface InputThirdProps extends InputStyledProps {
|
|
187
|
+
/** Custom React element to display on the left side of the input (e.g., icon, prefix) */
|
|
98
188
|
LeftContent?: ReactElement;
|
|
189
|
+
/** Custom CSS properties for the outer container wrapper */
|
|
99
190
|
containerStyle?: CSSProperties;
|
|
191
|
+
/** Error message displayed below the input in red text */
|
|
100
192
|
error?: string | undefined;
|
|
101
193
|
design?: "third";
|
|
102
194
|
}
|
|
103
195
|
|
|
104
196
|
declare const Input: react.ForwardRefExoticComponent<(Omit<InputPrimaryProps & {
|
|
197
|
+
/** Input type: determines keyboard type and validation on mobile devices */
|
|
105
198
|
type?: "text" | "email" | "date" | "password" | "time" | "number";
|
|
106
199
|
}, "ref"> | Omit<InputSecondaryProps & {
|
|
200
|
+
/** Input type: determines keyboard type and validation on mobile devices */
|
|
107
201
|
type?: "text" | "email" | "date" | "password" | "time" | "number";
|
|
108
202
|
}, "ref"> | Omit<InputThirdProps & {
|
|
203
|
+
/** Input type: determines keyboard type and validation on mobile devices */
|
|
109
204
|
type?: "text" | "email" | "date" | "password" | "time" | "number";
|
|
110
205
|
}, "ref">) & react.RefAttributes<HTMLInputElement>>;
|
|
111
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Text input component with three visual design variants.
|
|
209
|
+
* Supports all native HTML input attributes plus custom styling and error handling.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```tsx
|
|
213
|
+
* <Input
|
|
214
|
+
* design="secondary"
|
|
215
|
+
* placeholder="Enter your email"
|
|
216
|
+
* error="Invalid email format"
|
|
217
|
+
* />
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
112
220
|
type InputProps = (InputPrimaryProps | InputSecondaryProps | InputThirdProps) & {
|
|
221
|
+
/** Input type: determines keyboard type and validation on mobile devices */
|
|
113
222
|
type?: "text" | "email" | "date" | "password" | "time" | "number";
|
|
114
223
|
};
|
|
115
224
|
|
|
116
225
|
declare const InputBirthday: ({ error, onChange, containerStyle, ...restProps }: InputBirthdayProps) => react_jsx_runtime.JSX.Element;
|
|
117
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Birthday input split into three numeric fields (Day/Month/Year).
|
|
229
|
+
* Auto-focuses next field when complete, validates date with moment.js.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```tsx
|
|
233
|
+
* <InputBirthday
|
|
234
|
+
* defaultValue="1990-05-15"
|
|
235
|
+
* error={validationError}
|
|
236
|
+
* onChange={(date) => setDateOfBirth(date)}
|
|
237
|
+
* />
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
118
240
|
type InputBirthdayProps = Omit<InputProps, 'onChange'> & {
|
|
241
|
+
/** Callback with valid Date object when all fields complete. Format for defaultValue: "YYYY-MM-DD" */
|
|
119
242
|
onChange?: (date: Date | ChangeEvent<HTMLInputElement>) => void;
|
|
120
243
|
};
|
|
121
244
|
|
|
122
245
|
declare const InputChat: (props: InputChatProps) => react_jsx_runtime.JSX.Element;
|
|
123
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Chat input with text messaging and voice recording capabilities.
|
|
249
|
+
* Features waveform visualization during recording and optional attachment menu.
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```tsx
|
|
253
|
+
* <InputChat
|
|
254
|
+
* placeholder="Type a message..."
|
|
255
|
+
* options={[
|
|
256
|
+
* { id: "photo", label: "Photo", icon: <Camera /> },
|
|
257
|
+
* { id: "file", label: "File", icon: <Paperclip /> }
|
|
258
|
+
* ]}
|
|
259
|
+
* onOptionClick={(id) => handleAttachment(id)}
|
|
260
|
+
* onSend={(data) => {
|
|
261
|
+
* if (data.text) sendTextMessage(data.text);
|
|
262
|
+
* if (data.media) sendAudioMessage(data.media.base64);
|
|
263
|
+
* }}
|
|
264
|
+
* />
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
124
267
|
interface InputChatProps extends ComponentPropsWithoutRef<"input"> {
|
|
268
|
+
/** Shows loading animation, disables input */
|
|
125
269
|
loading?: boolean;
|
|
270
|
+
/** Attachment menu options (shows Plus icon button) */
|
|
126
271
|
options?: Array<optionType>;
|
|
272
|
+
/** Callback when attachment menu item is clicked */
|
|
127
273
|
onOptionClick?: (id: string) => void;
|
|
274
|
+
/** Callback when message is sent (Enter key or Send button). Audio is converted to base64 WAV format */
|
|
128
275
|
onSend?: (data: {
|
|
129
276
|
text?: string;
|
|
130
277
|
media?: {
|
|
@@ -141,32 +288,81 @@ type optionType = {
|
|
|
141
288
|
|
|
142
289
|
declare const InputCode: (props: InputCodeProps) => react_jsx_runtime.JSX.Element;
|
|
143
290
|
|
|
291
|
+
/**
|
|
292
|
+
* 6-digit verification code input with monospace font and letter spacing.
|
|
293
|
+
* Auto-blurs and triggers callback when all 6 digits are entered.
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* ```tsx
|
|
297
|
+
* <InputCode
|
|
298
|
+
* autoFocus
|
|
299
|
+
* error={codeError}
|
|
300
|
+
* loading={isVerifying}
|
|
301
|
+
* onChange={(code) => verifyCode(code)}
|
|
302
|
+
* />
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
144
305
|
interface InputCodeProps {
|
|
145
306
|
style?: CSSProperties;
|
|
146
307
|
containerStyle?: CSSProperties;
|
|
147
308
|
autoFocus?: boolean;
|
|
148
309
|
error?: string;
|
|
149
310
|
loading?: boolean;
|
|
311
|
+
/** Callback fired when 6 digits are entered (input auto-blurs) */
|
|
150
312
|
onChange?: (code: string) => void;
|
|
151
313
|
}
|
|
152
314
|
|
|
153
315
|
declare const InputDateRange: (props: InputDateRangeProps) => react_jsx_runtime.JSX.Element;
|
|
154
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Date range picker powered by react-dates (Airbnb).
|
|
319
|
+
* Uses moment.js for date handling with Spanish localization.
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```tsx
|
|
323
|
+
* <InputDateRange
|
|
324
|
+
* startDate={startDate}
|
|
325
|
+
* endDate={endDate}
|
|
326
|
+
* onChange={({ startDate, endDate }) => {
|
|
327
|
+
* setStartDate(startDate);
|
|
328
|
+
* setEndDate(endDate);
|
|
329
|
+
* }}
|
|
330
|
+
* isOutsideRange={(date) => date.isBefore(moment())}
|
|
331
|
+
* />
|
|
332
|
+
* ```
|
|
333
|
+
*/
|
|
155
334
|
interface InputDateRangeProps {
|
|
156
335
|
style?: CSSProperties;
|
|
157
336
|
startDate: moment.Moment | null;
|
|
158
337
|
endDate: moment.Moment | null;
|
|
159
338
|
focus?: boolean;
|
|
339
|
+
/** Callback fired when either date changes */
|
|
160
340
|
onChange: (data: {
|
|
161
341
|
startDate: moment.Moment | null;
|
|
162
342
|
endDate: moment.Moment | null;
|
|
163
343
|
}) => void;
|
|
344
|
+
/** Optional function to disable specific dates (return true to disable) */
|
|
164
345
|
isOutsideRange?: (date: moment.Moment) => boolean;
|
|
165
346
|
}
|
|
166
347
|
|
|
167
348
|
declare const InputImage: (props: InputImageProps) => react_jsx_runtime.JSX.Element;
|
|
168
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Image upload with crop, compression, and webcam capture.
|
|
352
|
+
* Uses react-image-crop for 1:1 aspect ratio cropping and compressorjs for compression.
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* ```tsx
|
|
356
|
+
* <InputImage
|
|
357
|
+
* options={["camera", "library"]}
|
|
358
|
+
* maxHeight={1200}
|
|
359
|
+
* maxWidth={1200}
|
|
360
|
+
* onChange={(base64Image) => setProfilePhoto(base64Image)}
|
|
361
|
+
* />
|
|
362
|
+
* ```
|
|
363
|
+
*/
|
|
169
364
|
interface InputImageProps {
|
|
365
|
+
/** Image source options (shows modal on mobile if multiple). Default: ["library"] */
|
|
170
366
|
options?: Array<"camera" | "library">;
|
|
171
367
|
icon?: ReactElement;
|
|
172
368
|
style?: CSSProperties;
|
|
@@ -174,32 +370,65 @@ interface InputImageProps {
|
|
|
174
370
|
buttonText?: string;
|
|
175
371
|
previewStyle?: CSSProperties;
|
|
176
372
|
label?: string;
|
|
373
|
+
/** Max height in pixels for compressed image */
|
|
177
374
|
maxHeight?: number;
|
|
375
|
+
/** Max width in pixels for compressed image */
|
|
178
376
|
maxWidth?: number;
|
|
377
|
+
/** Skip crop UI, immediately compress and return image */
|
|
179
378
|
hideCrop?: boolean;
|
|
379
|
+
/** Callback with base64-encoded WebP image */
|
|
180
380
|
onChange?: (image: string | ArrayBuffer | null) => void;
|
|
181
381
|
}
|
|
182
382
|
|
|
183
383
|
declare const InputLocation: ({ isLoaded, isForm, searchTypes, searchFields, onLocationChange, ...restProps }: InputLocationProps) => react_jsx_runtime.JSX.Element;
|
|
184
384
|
|
|
385
|
+
/**
|
|
386
|
+
* Location autocomplete input powered by Google Maps Places API.
|
|
387
|
+
* Debounced search (500ms) with structured address parsing in Spanish.
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* ```tsx
|
|
391
|
+
* <InputLocation
|
|
392
|
+
* isLoaded={isGoogleMapsLoaded}
|
|
393
|
+
* placeholder="Introduce tu dirección"
|
|
394
|
+
* searchTypes={["address"]}
|
|
395
|
+
* searchFields={["geometry", "address_components"]}
|
|
396
|
+
* onLocationChange={(location) => {
|
|
397
|
+
* console.log(location.address);
|
|
398
|
+
* console.log(location.location); // { lat, lng }
|
|
399
|
+
* }}
|
|
400
|
+
* />
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
185
403
|
type InputLocationProps = InputProps & {
|
|
404
|
+
/** If true, only shows route + number in input after selection */
|
|
186
405
|
isForm?: boolean;
|
|
406
|
+
/** Must be true when Google Maps API is loaded */
|
|
187
407
|
isLoaded: boolean;
|
|
408
|
+
/** Google Places API search types. Default: ["address"] */
|
|
188
409
|
searchTypes?: string[];
|
|
410
|
+
/** Google Places API fields to fetch. Default: ["geometry", "address_components"] */
|
|
189
411
|
searchFields?: string[];
|
|
412
|
+
/** Callback with parsed location data */
|
|
190
413
|
onLocationChange?: (result: LocationProps) => void;
|
|
191
414
|
};
|
|
192
415
|
interface LocationProps {
|
|
416
|
+
/** Full formatted address string */
|
|
193
417
|
address?: string;
|
|
418
|
+
/** Short address (city, province, country) */
|
|
194
419
|
sortAddress?: string;
|
|
420
|
+
/** Street name */
|
|
195
421
|
route?: string;
|
|
422
|
+
/** Street number */
|
|
196
423
|
routeNumber?: string;
|
|
197
424
|
routeInfo?: string;
|
|
198
425
|
city?: string;
|
|
199
426
|
province?: string;
|
|
200
427
|
zipCode?: string;
|
|
201
428
|
country?: string;
|
|
429
|
+
/** ISO country code (e.g., "ES") */
|
|
202
430
|
shortCountry?: string;
|
|
431
|
+
/** Coordinates { lat, lng } */
|
|
203
432
|
location?: google.maps.LatLngLiteral;
|
|
204
433
|
timeZone?: string;
|
|
205
434
|
}
|
|
@@ -214,80 +443,203 @@ interface CountryProps {
|
|
|
214
443
|
|
|
215
444
|
declare const InputPhone: (props: InputPhoneProps) => react_jsx_runtime.JSX.Element;
|
|
216
445
|
|
|
446
|
+
/**
|
|
447
|
+
* Phone input with country selector and validation using google-libphonenumber.
|
|
448
|
+
* Validates phone format for the selected country region.
|
|
449
|
+
*
|
|
450
|
+
* @example
|
|
451
|
+
* ```tsx
|
|
452
|
+
* <InputPhone
|
|
453
|
+
* country="ES"
|
|
454
|
+
* countryOptions={countryList}
|
|
455
|
+
* onPhoneChange={({ country, value, isValid }) => {
|
|
456
|
+
* if (isValid) setPhoneNumber(country + value);
|
|
457
|
+
* }}
|
|
458
|
+
* />
|
|
459
|
+
* ```
|
|
460
|
+
*/
|
|
217
461
|
type InputPhoneProps = InputProps & {
|
|
462
|
+
/** ISO country code (e.g., "ES") to pre-select */
|
|
218
463
|
country?: string;
|
|
464
|
+
/** Array of country options with prefix and countryCode */
|
|
219
465
|
countryOptions?: CountryProps[];
|
|
466
|
+
/** Callback fired on input change or country change with validation status */
|
|
220
467
|
onPhoneChange?: (item: {
|
|
468
|
+
/** Country prefix (e.g., "+34") */
|
|
221
469
|
country: string;
|
|
470
|
+
/** Phone number without prefix */
|
|
222
471
|
value?: string | number;
|
|
472
|
+
/** Whether phone is valid for selected country */
|
|
223
473
|
isValid: boolean;
|
|
224
474
|
}) => void;
|
|
225
475
|
};
|
|
226
476
|
|
|
227
477
|
declare const InputRange: (props: InputRangeProps) => react_jsx_runtime.JSX.Element;
|
|
228
478
|
|
|
479
|
+
/**
|
|
480
|
+
* Range slider with heart icon thumb and optional milestone markers ("presents").
|
|
481
|
+
* Milestones animate with Lottie pop effect when value reaches them.
|
|
482
|
+
*
|
|
483
|
+
* @example
|
|
484
|
+
* ```tsx
|
|
485
|
+
* <InputRange
|
|
486
|
+
* min={0}
|
|
487
|
+
* max={100}
|
|
488
|
+
* unit="€"
|
|
489
|
+
* value={currentValue}
|
|
490
|
+
* presents={[
|
|
491
|
+
* { value: 25, icon: Gift, color: "#ccc", colorSuccess: "#0088ff", onClick: () => alert("25 reached!") },
|
|
492
|
+
* { value: 50, icon: Star, color: "#ccc", colorSuccess: "#0088ff" }
|
|
493
|
+
* ]}
|
|
494
|
+
* onChange={(e) => setValue(parseInt(e.target.value))}
|
|
495
|
+
* />
|
|
496
|
+
* ```
|
|
497
|
+
*/
|
|
229
498
|
interface InputRangeProps extends ComponentPropsWithoutRef<"input"> {
|
|
499
|
+
/** Color for filled portion of slider track */
|
|
230
500
|
lineColor?: string;
|
|
501
|
+
/** Color for unfilled portion of slider track */
|
|
231
502
|
backgroundColor?: string;
|
|
503
|
+
/** Color for heart icon thumb */
|
|
232
504
|
thumbColor?: string;
|
|
233
505
|
min?: number;
|
|
234
506
|
max?: number;
|
|
507
|
+
/** Unit label shown at min/max (e.g., "€", "kg") */
|
|
235
508
|
unit?: string;
|
|
509
|
+
/** Hide floating value tooltip above thumb */
|
|
236
510
|
hideRange?: boolean;
|
|
511
|
+
/** Hide min/max labels below slider */
|
|
237
512
|
hideLabels?: boolean;
|
|
513
|
+
/** Milestone markers with Lottie animation when reached */
|
|
238
514
|
presents?: {
|
|
515
|
+
/** Value at which to show marker */
|
|
239
516
|
value: number;
|
|
517
|
+
/** Lucide icon component */
|
|
240
518
|
icon: React.ComponentType<{
|
|
241
519
|
height?: number;
|
|
242
520
|
width?: number;
|
|
243
521
|
color?: string;
|
|
244
522
|
}>;
|
|
523
|
+
/** Color when milestone not reached */
|
|
245
524
|
color: string;
|
|
525
|
+
/** Color when milestone reached (slider value >= milestone value) */
|
|
246
526
|
colorSuccess: string;
|
|
527
|
+
/** Optional callback when marker is clicked */
|
|
247
528
|
onClick?: () => void;
|
|
248
529
|
}[];
|
|
249
530
|
}
|
|
250
531
|
|
|
251
532
|
declare const InputPrice: (props: InputPriceProps) => react_jsx_runtime.JSX.Element;
|
|
252
533
|
|
|
534
|
+
/**
|
|
535
|
+
* Price selector with predefined options in horizontal scroll and optional custom input.
|
|
536
|
+
* Auto-centers selected option, validates minimum price. Spanish number formatting.
|
|
537
|
+
*
|
|
538
|
+
* @example
|
|
539
|
+
* ```tsx
|
|
540
|
+
* <InputPrice
|
|
541
|
+
* options={[
|
|
542
|
+
* { price: 10, data: [{ title: "1 coffee", icon: "Coffee" }] },
|
|
543
|
+
* { price: 25, data: [{ title: "3 coffees", icon: "Coffee" }] },
|
|
544
|
+
* { price: 50 }
|
|
545
|
+
* ]}
|
|
546
|
+
* currency="€"
|
|
547
|
+
* label="Equivale a {{value}} cafés"
|
|
548
|
+
* labelValueConversion={0.1}
|
|
549
|
+
* defaultOption={25}
|
|
550
|
+
* onChange={(price) => setDonationAmount(price)}
|
|
551
|
+
* />
|
|
552
|
+
* ```
|
|
553
|
+
*/
|
|
253
554
|
type InputPriceProps = {
|
|
254
555
|
style?: CSSProperties;
|
|
255
556
|
containerStyle?: CSSProperties;
|
|
557
|
+
/** Predefined price options (scrollable horizontally) */
|
|
256
558
|
options: {
|
|
257
559
|
price: number;
|
|
560
|
+
/** Optional feature list shown below price with icons */
|
|
258
561
|
data?: {
|
|
259
562
|
title: string;
|
|
563
|
+
/** Lucide icon name (e.g., "Check", "Coffee") */
|
|
260
564
|
icon?: string;
|
|
261
565
|
}[];
|
|
262
566
|
}[];
|
|
567
|
+
/** Floating label above options. Use {{value}} for dynamic calculation */
|
|
263
568
|
label?: string;
|
|
569
|
+
/** Multiplier for {{value}} in label (e.g., 0.1 converts 100€ to "10 coffees") */
|
|
264
570
|
labelValueConversion?: number;
|
|
571
|
+
/** Currency symbol (e.g., "€", "$") */
|
|
265
572
|
currency: string;
|
|
573
|
+
/** Pre-select an option by price */
|
|
266
574
|
defaultOption?: number;
|
|
575
|
+
/** Hide custom amount input field */
|
|
267
576
|
hideCustomAmount?: boolean;
|
|
577
|
+
/** Custom element shown below custom amount input */
|
|
268
578
|
customAmountData?: React.ReactElement;
|
|
579
|
+
/** Callback with selected/entered price. Validates minimum from first option */
|
|
269
580
|
onChange?: (value: number) => void;
|
|
270
581
|
};
|
|
271
582
|
|
|
272
583
|
declare const Select: (props: Props$e) => react_jsx_runtime.JSX.Element;
|
|
273
584
|
|
|
585
|
+
/**
|
|
586
|
+
* Dropdown select component with icons and keyboard-friendly navigation.
|
|
587
|
+
* Auto-closes when clicking outside. Supports controlled and uncontrolled modes.
|
|
588
|
+
*
|
|
589
|
+
* @example
|
|
590
|
+
* ```tsx
|
|
591
|
+
* <Select
|
|
592
|
+
* id="language-select"
|
|
593
|
+
* options={[
|
|
594
|
+
* { label: "English", icon: <FlagIcon /> },
|
|
595
|
+
* { label: "Spanish", icon: <FlagIcon /> }
|
|
596
|
+
* ]}
|
|
597
|
+
* selectedItem={currentLanguage}
|
|
598
|
+
* onChange={(option) => setLanguage(option)}
|
|
599
|
+
* />
|
|
600
|
+
* ```
|
|
601
|
+
*/
|
|
274
602
|
interface Props$e extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
|
|
603
|
+
/** Unique identifier required for click-outside detection */
|
|
275
604
|
id: string;
|
|
605
|
+
/** Custom styles for the dropdown options container */
|
|
276
606
|
optionStyle?: CSSProperties;
|
|
607
|
+
/** Hide the selected item label (icon-only mode) */
|
|
277
608
|
hideTitle?: boolean;
|
|
609
|
+
/** Array of selectable options */
|
|
278
610
|
options: Array<OptionProps$5>;
|
|
611
|
+
/** Current selected option (controlled component) */
|
|
279
612
|
selectedItem?: OptionProps$5;
|
|
613
|
+
/** Callback fired when selection changes */
|
|
280
614
|
onChange?: (option: OptionProps$5) => void;
|
|
281
615
|
}
|
|
282
616
|
interface OptionProps$5 {
|
|
617
|
+
/** Optional icon displayed before label */
|
|
283
618
|
icon?: React.ReactElement;
|
|
619
|
+
/** Display text for the option */
|
|
284
620
|
label: string;
|
|
285
621
|
}
|
|
286
622
|
|
|
287
623
|
declare const SearchBar: (props: Props$d) => react_jsx_runtime.JSX.Element;
|
|
288
624
|
|
|
625
|
+
/**
|
|
626
|
+
* Search input with magnifying glass icon. Supports two sizes and visual designs.
|
|
627
|
+
* Auto-focuses on click and changes style on interaction.
|
|
628
|
+
*
|
|
629
|
+
* @example
|
|
630
|
+
* ```tsx
|
|
631
|
+
* <SearchBar
|
|
632
|
+
* type="big"
|
|
633
|
+
* design="primary"
|
|
634
|
+
* placeholder="Search..."
|
|
635
|
+
* onChange={(e) => handleSearch(e.target.value)}
|
|
636
|
+
* />
|
|
637
|
+
* ```
|
|
638
|
+
*/
|
|
289
639
|
interface Props$d extends ComponentPropsWithoutRef<"input"> {
|
|
640
|
+
/** Size variant: `big` (48px height) or `small` (38px height) */
|
|
290
641
|
type?: "big" | "small";
|
|
642
|
+
/** Visual design: `primary` (gray background) or `secondary` (white with border) */
|
|
291
643
|
design?: "primary" | "secondary";
|
|
292
644
|
}
|
|
293
645
|
|
|
@@ -315,59 +667,141 @@ interface ModalRef {
|
|
|
315
667
|
|
|
316
668
|
declare const ModalComponent: react.ForwardRefExoticComponent<ModalProps & react.RefAttributes<ModalRef>>;
|
|
317
669
|
|
|
670
|
+
/**
|
|
671
|
+
* Modal dialog component with three display modes: default, form, and web.
|
|
672
|
+
* Use `type="form"` with `options` for structured form layouts, or `type="web"` with `url` to embed external content.
|
|
673
|
+
*
|
|
674
|
+
* @example
|
|
675
|
+
* ```tsx
|
|
676
|
+
* <Modal
|
|
677
|
+
* type="form"
|
|
678
|
+
* isVisible={isOpen}
|
|
679
|
+
* options={[
|
|
680
|
+
* { id: "name", title: "Name", Data: <Input /> },
|
|
681
|
+
* { id: "separator" }
|
|
682
|
+
* ]}
|
|
683
|
+
* />
|
|
684
|
+
* ```
|
|
685
|
+
*/
|
|
318
686
|
interface ModalProps extends ModalPrimaryProps {
|
|
687
|
+
/** Array of form field configurations for `type="form"`. Each item creates a labeled row or separator. */
|
|
319
688
|
options?: Array<{
|
|
320
689
|
id: string;
|
|
321
690
|
title?: string;
|
|
322
691
|
Data?: React.ReactElement;
|
|
323
692
|
hidden?: boolean;
|
|
324
693
|
}>;
|
|
694
|
+
/** External URL to display in an iframe when `type="web"` */
|
|
325
695
|
url?: string;
|
|
326
696
|
}
|
|
327
697
|
|
|
328
698
|
declare const MenuList: react.ForwardRefExoticComponent<MenuProps & react.RefAttributes<MenuRef>>;
|
|
329
699
|
|
|
700
|
+
/**
|
|
701
|
+
* Dropdown menu component with customizable positioning and icon trigger.
|
|
702
|
+
* Automatically closes when clicking outside. Supports both predefined options and custom children.
|
|
703
|
+
*
|
|
704
|
+
* @example
|
|
705
|
+
* ```tsx
|
|
706
|
+
* <Menu
|
|
707
|
+
* id="actions-menu"
|
|
708
|
+
* position="bottom-right"
|
|
709
|
+
* options={[
|
|
710
|
+
* { id: "edit", label: "Edit", icon: <EditIcon /> },
|
|
711
|
+
* { id: "delete", label: "Delete", labelColor: "red" }
|
|
712
|
+
* ]}
|
|
713
|
+
* onClick={(option) => handleAction(option.id)}
|
|
714
|
+
* />
|
|
715
|
+
* ```
|
|
716
|
+
*/
|
|
330
717
|
interface MenuProps {
|
|
718
|
+
/** Unique identifier required for click-outside detection */
|
|
331
719
|
id: string;
|
|
332
720
|
style?: CSSProperties;
|
|
721
|
+
/** Custom styles for the dropdown menu container */
|
|
333
722
|
menuStyle?: CSSProperties;
|
|
723
|
+
/** Icon for the button trigger (lowercase, used with Button component) */
|
|
334
724
|
icon?: React.ReactElement;
|
|
725
|
+
/** Icon element for custom trigger (uppercase, replaces Button) */
|
|
335
726
|
Icon?: React.ReactElement;
|
|
727
|
+
/** Positioning of the dropdown relative to the trigger button */
|
|
336
728
|
position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
|
|
729
|
+
/** Custom content to display in menu (alternative to options) */
|
|
337
730
|
children?: React.ReactNode;
|
|
731
|
+
/** Array of menu items with labels and icons */
|
|
338
732
|
options?: Array<OptionsProps>;
|
|
733
|
+
/** Callback fired when menu visibility changes */
|
|
339
734
|
onChange?: (visible: boolean) => void;
|
|
735
|
+
/** Callback fired when a menu option is clicked */
|
|
340
736
|
onClick?: (option: OptionsProps) => void;
|
|
341
737
|
}
|
|
342
738
|
interface OptionsProps {
|
|
343
739
|
id: string;
|
|
344
740
|
label: string;
|
|
741
|
+
/** Custom text color for the label */
|
|
345
742
|
labelColor?: string;
|
|
346
743
|
icon?: React.ReactElement;
|
|
347
744
|
}
|
|
348
745
|
interface MenuRef {
|
|
746
|
+
/** Programmatically close the menu */
|
|
349
747
|
close: () => void;
|
|
350
748
|
}
|
|
351
749
|
|
|
352
750
|
declare const Label: (props: Props$c) => react_jsx_runtime.JSX.Element;
|
|
353
751
|
|
|
752
|
+
/**
|
|
753
|
+
* Label/badge component with status-aware coloring and two visual types.
|
|
754
|
+
* Automatically applies predefined colors for common status values (e.g., "pending", "active", "canceled").
|
|
755
|
+
*
|
|
756
|
+
* @example
|
|
757
|
+
* ```tsx
|
|
758
|
+
* <Label type="label" text="active" />
|
|
759
|
+
* <Label type="chip" size="big" text="Pending" />
|
|
760
|
+
* <Label text="done" icon={<CheckIcon />} />
|
|
761
|
+
* ```
|
|
762
|
+
*/
|
|
354
763
|
interface Props$c extends ComponentPropsWithoutRef<"div"> {
|
|
764
|
+
/** Text to display. For predefined status values, color is automatically applied. */
|
|
355
765
|
text: string;
|
|
356
766
|
disabled?: boolean;
|
|
767
|
+
/** Visual variant: `label` for badges, `chip` for rounded buttons */
|
|
357
768
|
type?: "label" | "chip";
|
|
769
|
+
/** Size variant for chips: `big` (full text), `small` (initials only), `selector` (bordered) */
|
|
358
770
|
size?: "big" | "small" | "selector";
|
|
771
|
+
/** Optional icon displayed before the text */
|
|
359
772
|
icon?: ReactElement;
|
|
773
|
+
/** Custom background color (overrides automatic status colors) */
|
|
360
774
|
backgroundColor?: string;
|
|
775
|
+
/** Custom text color (overrides automatic status colors) */
|
|
361
776
|
color?: string;
|
|
362
777
|
}
|
|
363
778
|
|
|
364
779
|
declare const Avatar: (props: Props$b) => react_jsx_runtime.JSX.Element;
|
|
365
780
|
|
|
781
|
+
/**
|
|
782
|
+
* Circular avatar component supporting images, initials, and file upload.
|
|
783
|
+
* Click to view full-size image or to upload new one when editable.
|
|
784
|
+
*
|
|
785
|
+
* @example
|
|
786
|
+
* ```tsx
|
|
787
|
+
* <Avatar
|
|
788
|
+
* icon={userImageUrl}
|
|
789
|
+
* name="John Doe"
|
|
790
|
+
* editable
|
|
791
|
+
* onChange={(file) => uploadAvatar(file)}
|
|
792
|
+
* />
|
|
793
|
+
* ```
|
|
794
|
+
*/
|
|
366
795
|
interface Props$b extends Omit<ComponentPropsWithoutRef<"div">, "onChange"> {
|
|
796
|
+
/** Image URL to display */
|
|
367
797
|
icon?: string;
|
|
798
|
+
/** User name (displays first letter as fallback when no icon) */
|
|
368
799
|
name?: string;
|
|
800
|
+
/** Enable file upload on click (accepts jpg, jpeg, png, gif) */
|
|
369
801
|
editable?: boolean;
|
|
802
|
+
/** Enable click to view full-size image in modal */
|
|
370
803
|
clickable?: boolean;
|
|
804
|
+
/** Callback fired when new image is selected, receives base64-encoded file */
|
|
371
805
|
onChange?: (file: string | ArrayBuffer | null) => void;
|
|
372
806
|
}
|
|
373
807
|
|
|
@@ -455,40 +889,94 @@ type CheckboxOption = {
|
|
|
455
889
|
error?: boolean;
|
|
456
890
|
[key: string]: string | React.ReactElement | boolean | undefined;
|
|
457
891
|
};
|
|
892
|
+
/**
|
|
893
|
+
* Checkbox list component supporting single or multiple selection modes.
|
|
894
|
+
* Renders a collection of checkboxes with optional labels, icons, and custom elements.
|
|
895
|
+
*
|
|
896
|
+
* @example
|
|
897
|
+
* ```tsx
|
|
898
|
+
* <CheckboxList
|
|
899
|
+
* type="multiple"
|
|
900
|
+
* options={[
|
|
901
|
+
* { id: "1", label: "Option 1" },
|
|
902
|
+
* { id: "2", label: "Option 2", sublabel: "Description" }
|
|
903
|
+
* ]}
|
|
904
|
+
* onChange={(selected) => console.log(selected)}
|
|
905
|
+
* />
|
|
906
|
+
* ```
|
|
907
|
+
*/
|
|
458
908
|
interface Props$a {
|
|
459
909
|
style?: CSSProperties;
|
|
910
|
+
/** Custom styles applied to each individual checkbox element */
|
|
460
911
|
elementStyle?: CSSProperties;
|
|
461
912
|
options: Array<CheckboxOption>;
|
|
913
|
+
/** Pre-selected options (controlled component pattern) */
|
|
462
914
|
selectedOptions?: Array<{
|
|
463
915
|
id: string;
|
|
464
916
|
}>;
|
|
917
|
+
/** Height in pixels for each checkbox */
|
|
465
918
|
height?: number;
|
|
919
|
+
/** Width in pixels for each checkbox */
|
|
466
920
|
width?: number;
|
|
921
|
+
/** Selection mode: `single` for radio-like behavior, `multiple` for checkboxes */
|
|
467
922
|
type: "single" | "multiple";
|
|
923
|
+
/** Callback fired when selection changes, receives array of selected options */
|
|
468
924
|
onChange?: (result: Array<CheckboxOption>) => void;
|
|
925
|
+
/** Position of the checkbox indicator relative to content */
|
|
469
926
|
position?: "left" | "right";
|
|
927
|
+
/** Show avatar-style circular checkboxes */
|
|
470
928
|
avatarEnabled?: boolean;
|
|
929
|
+
/** Visual shape of the checkbox indicator */
|
|
471
930
|
shape?: "circle" | "square";
|
|
472
931
|
}
|
|
473
932
|
|
|
474
933
|
declare const Dropdown: (props: Props$9) => react_jsx_runtime.JSX.Element;
|
|
475
934
|
|
|
935
|
+
/**
|
|
936
|
+
* Dropdown select with optional search, multi-select, and icon support.
|
|
937
|
+
* Auto-closes when clicking outside. Displays selected items as comma-separated text.
|
|
938
|
+
*
|
|
939
|
+
* @example
|
|
940
|
+
* ```tsx
|
|
941
|
+
* <Dropdown
|
|
942
|
+
* id="category-dropdown"
|
|
943
|
+
* placeholder="Select categories"
|
|
944
|
+
* type="multiple"
|
|
945
|
+
* options={categories}
|
|
946
|
+
* selectedOptions={selected}
|
|
947
|
+
* onSearchChange={(text) => filterOptions(text)}
|
|
948
|
+
* onChange={(items) => setSelected(items)}
|
|
949
|
+
* />
|
|
950
|
+
* ```
|
|
951
|
+
*/
|
|
476
952
|
interface Props$9 {
|
|
953
|
+
/** Unique identifier required for click-outside detection */
|
|
477
954
|
id: string;
|
|
478
955
|
style?: CSSProperties;
|
|
956
|
+
/** Custom styles for the dropdown menu container */
|
|
479
957
|
menuStyle?: CSSProperties;
|
|
958
|
+
/** Custom styles for individual option items */
|
|
480
959
|
optionStyle?: CSSProperties;
|
|
960
|
+
/** Array of selectable options */
|
|
481
961
|
options: Array<OptionProps$4>;
|
|
962
|
+
/** Placeholder text shown when nothing is selected */
|
|
482
963
|
placeholder: string;
|
|
964
|
+
/** Currently selected options (controlled component) */
|
|
483
965
|
selectedOptions?: Array<OptionProps$4>;
|
|
966
|
+
/** Selection mode: `single` for one item, `multiple` for checkboxes */
|
|
484
967
|
type?: "single" | "multiple";
|
|
968
|
+
/** Position of dropdown menu relative to trigger */
|
|
485
969
|
menuPosition?: "bottom" | "top";
|
|
970
|
+
/** Callback fired when selection changes */
|
|
486
971
|
onChange?: (a: Array<OptionProps$4>) => void;
|
|
972
|
+
/** Callback fired when search input changes, enables search functionality */
|
|
487
973
|
onSearchChange?: (text: string) => void;
|
|
488
974
|
}
|
|
489
975
|
interface OptionProps$4 {
|
|
490
976
|
id: string;
|
|
977
|
+
/** Display text for the option */
|
|
491
978
|
title?: string;
|
|
979
|
+
/** Optional icon displayed before title */
|
|
492
980
|
icon?: React.ReactElement;
|
|
493
981
|
}
|
|
494
982
|
|
|
@@ -516,88 +1004,214 @@ declare const TextArea: (props: TextAreaDefaultProps | TextAreaEditorProps) => r
|
|
|
516
1004
|
|
|
517
1005
|
declare const RadioButtonList: (props: Props$8) => react_jsx_runtime.JSX.Element;
|
|
518
1006
|
|
|
1007
|
+
/**
|
|
1008
|
+
* Radio button list supporting single or multiple selection.
|
|
1009
|
+
* Each option can contain any React content (text, images, custom components).
|
|
1010
|
+
*
|
|
1011
|
+
* @example
|
|
1012
|
+
* ```tsx
|
|
1013
|
+
* <RadioButtonList
|
|
1014
|
+
* type="single"
|
|
1015
|
+
* options={[
|
|
1016
|
+
* { id: "1", children: <div>Option 1</div>, selected: true },
|
|
1017
|
+
* { id: "2", children: <div>Option 2</div> }
|
|
1018
|
+
* ]}
|
|
1019
|
+
* onChange={(selected) => console.log(selected)}
|
|
1020
|
+
* />
|
|
1021
|
+
* ```
|
|
1022
|
+
*/
|
|
519
1023
|
interface Props$8 {
|
|
1024
|
+
/** Array of radio button options with custom content */
|
|
520
1025
|
options: Array<OptionProps$3>;
|
|
1026
|
+
/** Selection mode: `single` for radio behavior, `multiple` for checkboxes */
|
|
521
1027
|
type: "single" | "multiple";
|
|
522
1028
|
style?: CSSProperties;
|
|
1029
|
+
/** Custom styles applied to each radio button cell */
|
|
523
1030
|
cellStyle?: CSSProperties;
|
|
1031
|
+
/** Callback fired when selection changes, receives array of selected options */
|
|
524
1032
|
onChange?: (data: Array<OptionProps$3>) => void;
|
|
525
1033
|
}
|
|
526
1034
|
interface OptionProps$3 {
|
|
527
1035
|
id: string;
|
|
1036
|
+
/** Custom React content to display in the radio button */
|
|
528
1037
|
children: React.ReactNode;
|
|
1038
|
+
/** Initial selected state */
|
|
529
1039
|
selected?: boolean;
|
|
530
1040
|
}
|
|
531
1041
|
|
|
532
1042
|
declare const CellSelector: (props: Props$7) => react_jsx_runtime.JSX.Element;
|
|
533
1043
|
|
|
1044
|
+
/**
|
|
1045
|
+
* Grid of selectable cells with icons, titles, and optional subtitles.
|
|
1046
|
+
* Supports single or multiple selection with visual feedback and hover states.
|
|
1047
|
+
*
|
|
1048
|
+
* @example
|
|
1049
|
+
* ```tsx
|
|
1050
|
+
* <CellSelector
|
|
1051
|
+
* type="multiple"
|
|
1052
|
+
* options={[
|
|
1053
|
+
* { id: "1", title: "Option 1", icon: <Icon />, subtitle: "Description" },
|
|
1054
|
+
* { id: "2", title: "Option 2", icon: <Icon />, disabled: true }
|
|
1055
|
+
* ]}
|
|
1056
|
+
* selectedOptions={selected}
|
|
1057
|
+
* onChange={(items) => setSelected(items)}
|
|
1058
|
+
* />
|
|
1059
|
+
* ```
|
|
1060
|
+
*/
|
|
534
1061
|
interface Props$7 {
|
|
535
1062
|
style?: CSSProperties;
|
|
1063
|
+
/** Custom styles applied to each cell */
|
|
536
1064
|
cellStyle?: CSSProperties;
|
|
1065
|
+
/** Array of selectable cell options */
|
|
537
1066
|
options: Array<OptionProps$2>;
|
|
1067
|
+
/** Currently selected options (controlled component) */
|
|
538
1068
|
selectedOptions?: Array<OptionProps$2>;
|
|
1069
|
+
/** Selection mode: `single` for radio behavior, `multiple` for checkboxes */
|
|
539
1070
|
type?: "single" | "multiple";
|
|
1071
|
+
/** Callback fired when selection changes, receives array of selected options */
|
|
540
1072
|
onChange?: (array: Array<OptionProps$2>) => void;
|
|
1073
|
+
/** Callback fired when individual cell is clicked */
|
|
541
1074
|
onClick?: (item: OptionProps$2) => void;
|
|
1075
|
+
/** Visual design variant */
|
|
542
1076
|
design?: "design1" | "design2";
|
|
543
1077
|
}
|
|
544
1078
|
interface OptionProps$2 {
|
|
545
1079
|
id: string;
|
|
1080
|
+
/** Main title displayed in the cell */
|
|
546
1081
|
title: string;
|
|
1082
|
+
/** Optional subtitle displayed below the cell */
|
|
547
1083
|
subtitle?: string;
|
|
1084
|
+
/** Icon displayed at the top of the cell */
|
|
548
1085
|
icon?: ReactElement;
|
|
1086
|
+
/** Disables cell interaction and applies opacity */
|
|
549
1087
|
disabled?: boolean;
|
|
550
1088
|
}
|
|
551
1089
|
|
|
552
1090
|
declare const Tabs: (props: Props$6) => react_jsx_runtime.JSX.Element;
|
|
553
1091
|
|
|
1092
|
+
/**
|
|
1093
|
+
* Tab navigation component with two visual designs.
|
|
1094
|
+
* Primary design shows underline indicator, secondary design shows rounded background.
|
|
1095
|
+
*
|
|
1096
|
+
* @example
|
|
1097
|
+
* ```tsx
|
|
1098
|
+
* <Tabs
|
|
1099
|
+
* design="secondary"
|
|
1100
|
+
* options={[
|
|
1101
|
+
* { id: "1", title: "Overview" },
|
|
1102
|
+
* { id: "2", title: "Details" }
|
|
1103
|
+
* ]}
|
|
1104
|
+
* selectedOption={currentTab}
|
|
1105
|
+
* onChange={(tab) => setCurrentTab(tab)}
|
|
1106
|
+
* />
|
|
1107
|
+
* ```
|
|
1108
|
+
*/
|
|
554
1109
|
interface Props$6 {
|
|
555
1110
|
style?: CSSProperties;
|
|
1111
|
+
/** Custom styles for individual tab cells */
|
|
556
1112
|
cellStyle?: CSSProperties;
|
|
1113
|
+
/** Custom styles for tab text labels */
|
|
557
1114
|
textStyle?: CSSProperties;
|
|
1115
|
+
/** Background color for selected tab (secondary design) */
|
|
558
1116
|
cellColor?: string;
|
|
1117
|
+
/** Text color for selected tab */
|
|
559
1118
|
textColor?: string;
|
|
1119
|
+
/** Background color for the entire tabs container */
|
|
560
1120
|
backgroundColor?: string;
|
|
1121
|
+
/** Array of tab options */
|
|
561
1122
|
options: Array<OptionProps$1>;
|
|
1123
|
+
/** Currently selected tab (controlled component) */
|
|
562
1124
|
selectedOption?: OptionProps$1;
|
|
1125
|
+
/** Visual design: `primary` (underline) or `secondary` (rounded background) */
|
|
563
1126
|
design?: "primary" | "secondary";
|
|
1127
|
+
/** Callback fired when tab selection changes */
|
|
564
1128
|
onChange?: (option: OptionProps$1) => void;
|
|
565
1129
|
}
|
|
566
1130
|
interface OptionProps$1 {
|
|
567
1131
|
id: string;
|
|
1132
|
+
/** Display text for the tab */
|
|
568
1133
|
title: string;
|
|
569
1134
|
}
|
|
570
1135
|
|
|
571
1136
|
declare const Payout: react.ForwardRefExoticComponent<PayoutProps & react.RefAttributes<PayoutRef>>;
|
|
572
1137
|
|
|
1138
|
+
/**
|
|
1139
|
+
* Stripe payment method setup component supporting card and SEPA direct debit.
|
|
1140
|
+
* Handles 3D Secure authentication flow in modal. Requires Stripe publishable key.
|
|
1141
|
+
*
|
|
1142
|
+
* @example
|
|
1143
|
+
* ```tsx
|
|
1144
|
+
* const payoutRef = useRef<PayoutRef>(null);
|
|
1145
|
+
*
|
|
1146
|
+
* <Payout
|
|
1147
|
+
* ref={payoutRef}
|
|
1148
|
+
* stripeKey={process.env.STRIPE_KEY}
|
|
1149
|
+
* paymentOption="card"
|
|
1150
|
+
* design="secondary"
|
|
1151
|
+
* onLoading={(loading) => setIsLoading(loading)}
|
|
1152
|
+
* onSetupConfirmed={() => handleSuccess()}
|
|
1153
|
+
* />
|
|
1154
|
+
*
|
|
1155
|
+
* // Get payment method
|
|
1156
|
+
* const method = await payoutRef.current?.getPaymentMethod();
|
|
1157
|
+
* ```
|
|
1158
|
+
*/
|
|
573
1159
|
interface PayoutProps {
|
|
574
1160
|
style?: CSSProperties;
|
|
1161
|
+
/** Stripe publishable API key (starts with pk_) */
|
|
575
1162
|
stripeKey: string;
|
|
1163
|
+
/** 3D Secure confirmation URL from Stripe setup intent */
|
|
576
1164
|
stripeConfirmUrl?: string;
|
|
1165
|
+
/** Payment method type: credit/debit card or SEPA direct debit */
|
|
577
1166
|
paymentOption: "sepa_debit" | "card";
|
|
1167
|
+
/** Custom styles for the card input form */
|
|
578
1168
|
cardStyle?: CSSProperties;
|
|
579
1169
|
error?: boolean;
|
|
1170
|
+
/** Pre-filled user data (email required for SEPA) */
|
|
580
1171
|
userData?: {
|
|
581
1172
|
email?: string;
|
|
582
1173
|
};
|
|
1174
|
+
/** Visual design variant */
|
|
583
1175
|
design?: "primary" | "secondary";
|
|
1176
|
+
/** Custom placeholder for name input */
|
|
584
1177
|
placeholderName?: string;
|
|
1178
|
+
/** Custom placeholder for email input */
|
|
585
1179
|
placeholderEmail?: string;
|
|
1180
|
+
/** Callback fired when 3D Secure authentication completes successfully */
|
|
586
1181
|
onSetupConfirmed?: () => void;
|
|
1182
|
+
/** Callback fired when loading state changes */
|
|
587
1183
|
onLoading?: (a: boolean) => void;
|
|
588
1184
|
}
|
|
589
1185
|
interface PayoutRef {
|
|
1186
|
+
/** Collects payment method from Stripe and returns payment method object */
|
|
590
1187
|
getPaymentMethod: () => Promise<PaymentMethod | undefined>;
|
|
591
1188
|
}
|
|
592
1189
|
|
|
593
1190
|
declare const SwitchTag: (props: Props$5) => react_jsx_runtime.JSX.Element;
|
|
594
1191
|
|
|
1192
|
+
/**
|
|
1193
|
+
* Icon-based toggle switch for switching between 2+ options.
|
|
1194
|
+
* Displays icons in a pill-shaped container with active state highlighting.
|
|
1195
|
+
*
|
|
1196
|
+
* @example
|
|
1197
|
+
* ```tsx
|
|
1198
|
+
* <SwitchTag
|
|
1199
|
+
* options={[
|
|
1200
|
+
* { id: "grid", icon: <GridIcon /> },
|
|
1201
|
+
* { id: "list", icon: <ListIcon /> }
|
|
1202
|
+
* ]}
|
|
1203
|
+
* onChange={(option) => setViewMode(option.id)}
|
|
1204
|
+
* />
|
|
1205
|
+
* ```
|
|
1206
|
+
*/
|
|
595
1207
|
interface Props$5 {
|
|
596
1208
|
style?: CSSProperties;
|
|
1209
|
+
/** Array of icon options (automatically colors icons based on selection) */
|
|
597
1210
|
options: Array<{
|
|
598
1211
|
id: string;
|
|
599
1212
|
icon: react__default.ReactElement;
|
|
600
1213
|
}>;
|
|
1214
|
+
/** Callback fired when option changes, receives selected option */
|
|
601
1215
|
onChange?: (option: {
|
|
602
1216
|
id: string;
|
|
603
1217
|
icon: react__default.ReactElement;
|
|
@@ -606,78 +1220,213 @@ interface Props$5 {
|
|
|
606
1220
|
|
|
607
1221
|
declare const Pagination: (props: Props$4) => react_jsx_runtime.JSX.Element;
|
|
608
1222
|
|
|
1223
|
+
/**
|
|
1224
|
+
* Pagination control with first/previous/next/last navigation buttons.
|
|
1225
|
+
* Displays current page number and total pages (e.g., "1 de 5").
|
|
1226
|
+
*
|
|
1227
|
+
* @example
|
|
1228
|
+
* ```tsx
|
|
1229
|
+
* <Pagination
|
|
1230
|
+
* length={100}
|
|
1231
|
+
* rowsPerPage={10}
|
|
1232
|
+
* start={0}
|
|
1233
|
+
* onChange={(page) => fetchData(page)}
|
|
1234
|
+
* />
|
|
1235
|
+
* ```
|
|
1236
|
+
*/
|
|
609
1237
|
interface Props$4 {
|
|
610
1238
|
style?: CSSProperties;
|
|
1239
|
+
/** Initial/controlled page index (0-based) */
|
|
611
1240
|
start?: number;
|
|
1241
|
+
/** Total number of items to paginate */
|
|
612
1242
|
length: number;
|
|
1243
|
+
/** Number of items to display per page */
|
|
613
1244
|
rowsPerPage: number;
|
|
1245
|
+
/** Callback fired when page changes, receives new page index (0-based) */
|
|
614
1246
|
onChange?: (page: number) => void;
|
|
615
1247
|
}
|
|
616
1248
|
|
|
617
1249
|
declare const Countdown: (props: Props$3) => react_jsx_runtime.JSX.Element;
|
|
618
1250
|
|
|
1251
|
+
/**
|
|
1252
|
+
* Countdown timer displaying human-readable time remaining or elapsed.
|
|
1253
|
+
* Auto-warns with red background when less than 2 hours remain.
|
|
1254
|
+
*
|
|
1255
|
+
* @example
|
|
1256
|
+
* ```tsx
|
|
1257
|
+
* <Countdown
|
|
1258
|
+
* toDate={new Date("2024-12-31")}
|
|
1259
|
+
* color={ColorV2.surface.primary}
|
|
1260
|
+
* textColor={ColorV2.text.white}
|
|
1261
|
+
* />
|
|
1262
|
+
* // Shows: "3 días restantes" or "2 horas de retraso"
|
|
1263
|
+
* ```
|
|
1264
|
+
*/
|
|
619
1265
|
interface Props$3 extends ComponentPropsWithoutRef<"div"> {
|
|
1266
|
+
/** Target date to count down to (or count up from if past) */
|
|
620
1267
|
toDate: Date;
|
|
1268
|
+
/** Background color (overridden by warning red when <2h remain) */
|
|
621
1269
|
color?: string;
|
|
1270
|
+
/** Text and icon color (overridden by white when warning) */
|
|
622
1271
|
textColor?: string;
|
|
623
1272
|
}
|
|
624
1273
|
|
|
625
1274
|
declare const TagSelector: (props: Props$2) => react_jsx_runtime.JSX.Element;
|
|
626
1275
|
|
|
1276
|
+
/**
|
|
1277
|
+
* Tag selector component for single or multiple selection of options.
|
|
1278
|
+
* Renders clickable tags with optional subtitles in a flex-wrap layout.
|
|
1279
|
+
*
|
|
1280
|
+
* @example
|
|
1281
|
+
* ```tsx
|
|
1282
|
+
* <TagSelector
|
|
1283
|
+
* type="multiple"
|
|
1284
|
+
* options={[
|
|
1285
|
+
* { id: "1", title: "React" },
|
|
1286
|
+
* { id: "2", title: "TypeScript", subtitle: "Recommended" }
|
|
1287
|
+
* ]}
|
|
1288
|
+
* optionsSelected={selectedTags}
|
|
1289
|
+
* onChange={(tags) => setSelectedTags(tags)}
|
|
1290
|
+
* />
|
|
1291
|
+
* ```
|
|
1292
|
+
*/
|
|
627
1293
|
interface Props$2 {
|
|
1294
|
+
/** Selection mode: `single` for radio-like, `multiple` for multi-select */
|
|
628
1295
|
type?: "multiple" | "single";
|
|
629
1296
|
style?: CSSProperties;
|
|
1297
|
+
/** Available tag options to display */
|
|
630
1298
|
options: Array<OptionProps>;
|
|
1299
|
+
/** Pre-selected options (controlled component pattern) */
|
|
631
1300
|
optionsSelected?: Array<OptionProps>;
|
|
1301
|
+
/** Callback fired when selection changes, receives array of selected options */
|
|
632
1302
|
onChange?: (selection: Array<OptionProps>) => void;
|
|
1303
|
+
/** When true, disables click interactions (display only) */
|
|
633
1304
|
onlyVisual?: boolean;
|
|
1305
|
+
/** Visual design variant */
|
|
634
1306
|
design?: "design1" | "design2";
|
|
635
1307
|
}
|
|
636
1308
|
interface OptionProps {
|
|
637
1309
|
id: string;
|
|
1310
|
+
/** Main text displayed on the tag */
|
|
638
1311
|
title: string;
|
|
1312
|
+
/** Optional secondary text below the title */
|
|
639
1313
|
subtitle?: string;
|
|
640
1314
|
style?: react__default.CSSProperties;
|
|
641
1315
|
}
|
|
642
1316
|
|
|
643
1317
|
declare const FAQs: (props: Props$1) => react_jsx_runtime.JSX.Element;
|
|
644
1318
|
|
|
1319
|
+
/**
|
|
1320
|
+
* FAQ accordion component with expandable/collapsible question-answer pairs.
|
|
1321
|
+
* Only one question can be expanded at a time.
|
|
1322
|
+
*
|
|
1323
|
+
* @example
|
|
1324
|
+
* ```tsx
|
|
1325
|
+
* <FAQs
|
|
1326
|
+
* options={[
|
|
1327
|
+
* {
|
|
1328
|
+
* id: "1",
|
|
1329
|
+
* title: "How do I get started?",
|
|
1330
|
+
* description: "To get started, simply..."
|
|
1331
|
+
* }
|
|
1332
|
+
* ]}
|
|
1333
|
+
* onClick={(index) => trackFaqClick(index)}
|
|
1334
|
+
* />
|
|
1335
|
+
* ```
|
|
1336
|
+
*/
|
|
645
1337
|
interface Props$1 {
|
|
646
1338
|
style?: CSSProperties;
|
|
1339
|
+
/** Array of FAQ items with question and answer */
|
|
647
1340
|
options: Array<{
|
|
648
1341
|
id: string;
|
|
1342
|
+
/** Question text (always visible) */
|
|
649
1343
|
title: string;
|
|
1344
|
+
/** Answer text (visible when expanded) */
|
|
650
1345
|
description: string;
|
|
651
1346
|
}>;
|
|
1347
|
+
/** Callback fired when FAQ item is clicked, receives item index */
|
|
652
1348
|
onClick?: (index: number) => void;
|
|
653
1349
|
}
|
|
654
1350
|
|
|
655
1351
|
declare function Counter(props: Props): react_jsx_runtime.JSX.Element;
|
|
656
1352
|
|
|
1353
|
+
/**
|
|
1354
|
+
* Animated flip-clock style counter that animates from zero to the target amount.
|
|
1355
|
+
* Each digit flips individually with a smooth animation effect.
|
|
1356
|
+
*
|
|
1357
|
+
* @example
|
|
1358
|
+
* ```tsx
|
|
1359
|
+
* <Counter
|
|
1360
|
+
* amount={12345}
|
|
1361
|
+
* height={60}
|
|
1362
|
+
* width={40}
|
|
1363
|
+
* fontSize={32}
|
|
1364
|
+
* />
|
|
1365
|
+
* ```
|
|
1366
|
+
*/
|
|
657
1367
|
interface Props {
|
|
1368
|
+
/** Height in pixels for each digit block */
|
|
658
1369
|
height: number;
|
|
1370
|
+
/** Width in pixels for each digit block */
|
|
659
1371
|
width: number;
|
|
1372
|
+
/** Target number to count up to (animates from amount-10 or 0) */
|
|
660
1373
|
amount: number;
|
|
1374
|
+
/** Text color for the digits */
|
|
661
1375
|
color?: string;
|
|
1376
|
+
/** Background color for each digit block */
|
|
662
1377
|
backgroundColor?: string;
|
|
1378
|
+
/** Border/divider color between digit segments */
|
|
663
1379
|
borderColor?: string;
|
|
1380
|
+
/** Font size in pixels for the numbers */
|
|
664
1381
|
fontSize?: number;
|
|
665
1382
|
}
|
|
666
1383
|
|
|
667
1384
|
declare const Stamp: (props: StampProps) => react_jsx_runtime.JSX.Element;
|
|
668
1385
|
|
|
1386
|
+
/**
|
|
1387
|
+
* Decorative postage stamp component with perforated edges.
|
|
1388
|
+
* Displays an emoji icon and title. Responsive sizing for mobile.
|
|
1389
|
+
*
|
|
1390
|
+
* @example
|
|
1391
|
+
* ```tsx
|
|
1392
|
+
* <Stamp
|
|
1393
|
+
* icon="🎉"
|
|
1394
|
+
* title="Celebration"
|
|
1395
|
+
* backgroundColor={ColorV2.surface.greenSoft}
|
|
1396
|
+
* />
|
|
1397
|
+
* ```
|
|
1398
|
+
*/
|
|
669
1399
|
interface StampProps {
|
|
670
1400
|
style?: CSSProperties;
|
|
1401
|
+
/** Emoji or single character to display (rendered large) */
|
|
671
1402
|
icon: string;
|
|
1403
|
+
/** Text label below the icon (truncates with ellipsis) */
|
|
672
1404
|
title: string;
|
|
1405
|
+
/** Background color for the icon area */
|
|
673
1406
|
backgroundColor: string;
|
|
674
1407
|
}
|
|
675
1408
|
|
|
676
1409
|
declare const Switch: (props: SwitchProps) => react_jsx_runtime.JSX.Element;
|
|
677
1410
|
|
|
1411
|
+
/**
|
|
1412
|
+
* Toggle switch component with sliding animation and checkmark indicator.
|
|
1413
|
+
* Changes color and position when toggled on/off.
|
|
1414
|
+
*
|
|
1415
|
+
* @example
|
|
1416
|
+
* ```tsx
|
|
1417
|
+
* <Switch
|
|
1418
|
+
* active={isEnabled}
|
|
1419
|
+
* color={ColorV2.surface.primary}
|
|
1420
|
+
* onChange={(on) => setIsEnabled(on)}
|
|
1421
|
+
* />
|
|
1422
|
+
* ```
|
|
1423
|
+
*/
|
|
678
1424
|
interface SwitchProps {
|
|
1425
|
+
/** Current state (controlled component) */
|
|
679
1426
|
active?: boolean;
|
|
1427
|
+
/** Custom color when active (default: primary) */
|
|
680
1428
|
color?: string;
|
|
1429
|
+
/** Callback fired when toggled, receives new state */
|
|
681
1430
|
onChange?: (on: boolean) => void;
|
|
682
1431
|
}
|
|
683
1432
|
|
|
@@ -705,17 +1454,36 @@ interface ChatMessageProps {
|
|
|
705
1454
|
|
|
706
1455
|
declare const Chat: (props: ChatProps) => react_jsx_runtime.JSX.Element;
|
|
707
1456
|
|
|
1457
|
+
/**
|
|
1458
|
+
* Full-featured chat interface with message history, template support, and media uploads.
|
|
1459
|
+
* Automatically groups messages by date and shows template prompt when last message is > 24 hours old.
|
|
1460
|
+
*
|
|
1461
|
+
* @example
|
|
1462
|
+
* ```tsx
|
|
1463
|
+
* <Chat
|
|
1464
|
+
* messages={chatMessages}
|
|
1465
|
+
* templates={messageTemplates}
|
|
1466
|
+
* loading={isSending}
|
|
1467
|
+
* onSend={(data) => handleSendMessage(data)}
|
|
1468
|
+
* />
|
|
1469
|
+
* ```
|
|
1470
|
+
*/
|
|
708
1471
|
interface ChatProps {
|
|
709
1472
|
style?: CSSProperties;
|
|
1473
|
+
/** Array of chat messages to display, grouped automatically by date */
|
|
710
1474
|
messages: ChatMessageProps[];
|
|
1475
|
+
/** Shows loading spinner in input when true */
|
|
711
1476
|
loading?: boolean;
|
|
1477
|
+
/** Placeholder text for the input field */
|
|
712
1478
|
placeholder?: string;
|
|
1479
|
+
/** Available message templates shown when conversation is inactive (>24 hrs) */
|
|
713
1480
|
templates: {
|
|
714
1481
|
id: string;
|
|
715
1482
|
title: string;
|
|
716
1483
|
subtitle: string;
|
|
717
1484
|
description: string;
|
|
718
1485
|
}[];
|
|
1486
|
+
/** Callback fired when user sends a message, template, or uploads media */
|
|
719
1487
|
onSend: (data: {
|
|
720
1488
|
text?: string;
|
|
721
1489
|
template?: string;
|
|
@@ -741,35 +1509,102 @@ interface LocationFormProps {
|
|
|
741
1509
|
|
|
742
1510
|
declare const Form: (props: FormProps & LocationFormProps) => react_jsx_runtime.JSX.Element | null;
|
|
743
1511
|
|
|
1512
|
+
/**
|
|
1513
|
+
* Form router component (currently only supports location type).
|
|
1514
|
+
* Delegates to specific form implementations based on type.
|
|
1515
|
+
*
|
|
1516
|
+
* @example
|
|
1517
|
+
* ```tsx
|
|
1518
|
+
* <Form
|
|
1519
|
+
* type="location"
|
|
1520
|
+
* isLoaded={isGoogleMapsLoaded}
|
|
1521
|
+
* onChange={(location) => setLocation(location)}
|
|
1522
|
+
* />
|
|
1523
|
+
* ```
|
|
1524
|
+
*/
|
|
744
1525
|
interface FormProps {
|
|
1526
|
+
/** Form type to render */
|
|
745
1527
|
type: "location";
|
|
1528
|
+
/** Whether Google Maps API is loaded (required for location form) */
|
|
746
1529
|
isLoaded: boolean;
|
|
747
1530
|
}
|
|
748
1531
|
|
|
749
1532
|
declare const CurrencySelector: (props: CurrencySelectorProps) => react_jsx_runtime.JSX.Element;
|
|
750
1533
|
|
|
1534
|
+
/**
|
|
1535
|
+
* Currency selector dropdown with modal for choosing from available currencies.
|
|
1536
|
+
* Displays symbol and currency code (e.g., "€ EUR"). Responsive with full-screen modal on mobile.
|
|
1537
|
+
*
|
|
1538
|
+
* @example
|
|
1539
|
+
* ```tsx
|
|
1540
|
+
* <CurrencySelector
|
|
1541
|
+
* options={[
|
|
1542
|
+
* { currency: "EUR", name: "Euro", symbol: "€" },
|
|
1543
|
+
* { currency: "USD", name: "US Dollar", symbol: "$" },
|
|
1544
|
+
* { currency: "GBP", name: "British Pound", symbol: "£" }
|
|
1545
|
+
* ]}
|
|
1546
|
+
* selectedOption={{ currency: "EUR", name: "Euro", symbol: "€" }}
|
|
1547
|
+
* onChange={(option) => setCurrency(option.currency)}
|
|
1548
|
+
* />
|
|
1549
|
+
* ```
|
|
1550
|
+
*/
|
|
751
1551
|
interface CurrencySelectorProps {
|
|
752
1552
|
style?: React.CSSProperties;
|
|
1553
|
+
/** Available currency options */
|
|
753
1554
|
options: CurrencySelectorOption[];
|
|
1555
|
+
/** Currently selected currency (defaults to first option) */
|
|
754
1556
|
selectedOption?: CurrencySelectorOption;
|
|
1557
|
+
/** Callback when currency is selected */
|
|
755
1558
|
onChange?: (option: CurrencySelectorOption) => void;
|
|
756
1559
|
}
|
|
757
1560
|
interface CurrencySelectorOption {
|
|
1561
|
+
/** ISO currency code (e.g., "EUR", "USD") */
|
|
758
1562
|
currency: string;
|
|
1563
|
+
/** Full currency name (e.g., "Euro") */
|
|
759
1564
|
name: string;
|
|
1565
|
+
/** Currency symbol (e.g., "€", "$") */
|
|
760
1566
|
symbol: string;
|
|
761
1567
|
}
|
|
762
1568
|
|
|
763
1569
|
declare const TextAnimated: ({ children, ...props }: TextAnimatedProps) => react_jsx_runtime.JSX.Element;
|
|
764
1570
|
|
|
1571
|
+
/**
|
|
1572
|
+
* Text component with rotating animated words that cycle through options array.
|
|
1573
|
+
* Uses {{data}} placeholder in children string for where animation appears.
|
|
1574
|
+
*
|
|
1575
|
+
* @example
|
|
1576
|
+
* ```tsx
|
|
1577
|
+
* <TextAnimated
|
|
1578
|
+
* type="h1"
|
|
1579
|
+
* options={["developers", "designers", "creators"]}
|
|
1580
|
+
* interval={3000}
|
|
1581
|
+
* >
|
|
1582
|
+
* Built for {{data}}
|
|
1583
|
+
* </TextAnimated>
|
|
1584
|
+
* ```
|
|
1585
|
+
*/
|
|
765
1586
|
type TextAnimatedProps = TextProps & {
|
|
1587
|
+
/** Array of strings to cycle through */
|
|
766
1588
|
options: string[];
|
|
1589
|
+
/** Time in milliseconds between transitions. Default: 2500ms */
|
|
767
1590
|
interval?: number;
|
|
768
1591
|
};
|
|
769
1592
|
|
|
770
1593
|
declare const Hover: ({ children, modalProps, ...props }: HoverProps) => react_jsx_runtime.JSX.Element;
|
|
771
1594
|
|
|
1595
|
+
/**
|
|
1596
|
+
* Hover trigger component that displays content on hover.
|
|
1597
|
+
* Content appears below the trigger element with shadow and border.
|
|
1598
|
+
*
|
|
1599
|
+
* @example
|
|
1600
|
+
* ```tsx
|
|
1601
|
+
* <Hover modalProps={{ children: <div>Hover content here</div> }}>
|
|
1602
|
+
* <button>Hover over me</button>
|
|
1603
|
+
* </Hover>
|
|
1604
|
+
* ```
|
|
1605
|
+
*/
|
|
772
1606
|
interface HoverProps extends ComponentPropsWithoutRef<"div"> {
|
|
1607
|
+
/** Props for the hover content container (including children to display) */
|
|
773
1608
|
modalProps: React.ComponentProps<"div">;
|
|
774
1609
|
}
|
|
775
1610
|
|