@mirantes-micro/foundation-design-system 1.2.412 → 1.2.413

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.
@@ -0,0 +1,2737 @@
1
+ import * as React$1 from 'react';
2
+ import React__default, { ReactNode, JSX, RefObject, InputHTMLAttributes, ChangeEvent, KeyboardEvent, FocusEvent } from 'react';
3
+ import * as _tanstack_react_query from '@tanstack/react-query';
4
+ import { QueryClient } from '@tanstack/react-query';
5
+ import { AxiosInstance, GenericAbortSignal } from 'axios';
6
+ import { Socket } from 'socket.io-client';
7
+ import * as zustand from 'zustand';
8
+ import * as zustand_middleware from 'zustand/middleware';
9
+ export { ErrorResponse, ErrorType } from '@mirantes-micro/errors';
10
+
11
+ interface ModalProps {
12
+ isOpen: boolean;
13
+ onClose: () => void;
14
+ children: ReactNode;
15
+ showCloseButton?: boolean;
16
+ hideCloseButton?: boolean;
17
+ closeOnClickOutside?: boolean;
18
+ className?: string;
19
+ header?: React__default.ReactNode;
20
+ footer?: React__default.ReactNode;
21
+ disableFullScreen?: boolean;
22
+ isLoading?: boolean;
23
+ size?: "sm" | "md" | "lg" | "xl";
24
+ showOverlay?: boolean;
25
+ asStacked?: boolean;
26
+ asSheet?: boolean;
27
+ }
28
+ declare const MirantesModal: ({ isOpen, onClose, children, showCloseButton, hideCloseButton, closeOnClickOutside, className, header, footer, disableFullScreen, isLoading, size, showOverlay, asStacked, asSheet, }: ModalProps) => React__default.ReactPortal | null;
29
+
30
+ type ToastProps = {
31
+ title: string;
32
+ message?: ReactNode;
33
+ icon?: ReactNode;
34
+ duration?: number;
35
+ actionLabel?: string;
36
+ onAction?: () => void;
37
+ cancelLabel?: string;
38
+ onCancel?: () => void;
39
+ };
40
+ type ActionToastProps = ToastProps & {
41
+ actionLabel: string;
42
+ onAction: () => void;
43
+ cancelLabel?: string;
44
+ onCancel?: () => void;
45
+ };
46
+ declare function useMirantesToast(): {
47
+ successToast: (props: ToastProps) => string | number;
48
+ errorToast: (props: ToastProps) => string | number;
49
+ infoToast: (props: ToastProps) => string | number;
50
+ warnToast: (props: ToastProps) => string | number;
51
+ actionToast: (props: ActionToastProps) => string | number;
52
+ };
53
+
54
+ declare const NoRecruitmentResponsiveIlustration: ({ className, }: {
55
+ className?: string;
56
+ }) => React__default.JSX.Element;
57
+
58
+ interface IFollowerUser {
59
+ id?: string;
60
+ name?: string;
61
+ avatar?: string;
62
+ }
63
+ interface IFollowerPage {
64
+ id?: string;
65
+ name?: string;
66
+ logo?: string;
67
+ }
68
+ interface IFollowers {
69
+ page?: IFollowerPage[];
70
+ user?: IFollowerUser[];
71
+ }
72
+ interface IPage {
73
+ id?: string;
74
+ name?: string;
75
+ slug?: string;
76
+ logo?: string;
77
+ sector?: string;
78
+ sectorId?: string;
79
+ description?: string;
80
+ aboutUs?: string;
81
+ site?: string;
82
+ organizationSize?: string;
83
+ organizationType?: string;
84
+ pageType?: string;
85
+ isAcademic?: boolean;
86
+ foundedYear?: number;
87
+ address?: {
88
+ city?: string;
89
+ country?: string;
90
+ address?: string;
91
+ };
92
+ phoneNumber?: string;
93
+ followers?: IFollowers;
94
+ followersCount?: number;
95
+ }
96
+
97
+ declare const useApiGetPage: (slug?: string) => {
98
+ page: IPage | null | undefined;
99
+ isGettingPage: boolean;
100
+ };
101
+
102
+ type TLocale$1 = "pt" | "en" | "fr";
103
+ interface IMirantesFoundationProviderProps {
104
+ children: ReactNode;
105
+ Notification?: ReactNode;
106
+ queryClient?: QueryClient;
107
+ onOpenCreatePostModal?: () => void;
108
+ commentComponents?: ReactNode | JSX.Element;
109
+ pageTriggerComponents?: ReactNode | JSX.Element;
110
+ createJobButton?: ({ onClick, showLabel, }: {
111
+ onClick?: () => void;
112
+ showLabel?: boolean;
113
+ }) => JSX.Element;
114
+ openCreateJobModal?: () => void;
115
+ values?: {
116
+ pageId?: string;
117
+ isPageFeed?: boolean;
118
+ isCommunityFeed?: boolean;
119
+ community?: {
120
+ id?: string;
121
+ name?: string;
122
+ slug?: string;
123
+ image?: string;
124
+ };
125
+ page?: {
126
+ id?: string;
127
+ slug?: string;
128
+ logo?: string;
129
+ name?: string;
130
+ sector?: string;
131
+ };
132
+ widgetsApi?: string;
133
+ searchApi?: string;
134
+ feedApi?: string;
135
+ authV2ApiUrl?: string;
136
+ environment?: string;
137
+ profileApiUrl?: string;
138
+ analyticsApiUrl?: string;
139
+ billingApiUrl?: string;
140
+ assetsApiUrl?: string;
141
+ multicaixaExpressUrl?: string;
142
+ stripeKey?: string;
143
+ socketApiUrl?: string;
144
+ chatApiUrl?: string;
145
+ chatForPage?: boolean;
146
+ mirantesDomain?: string;
147
+ openCageApiKey?: string;
148
+ ocpSubscriptionKey?: string;
149
+ locale?: TLocale$1;
150
+ Link?: LinkComponent;
151
+ usePathname?: UsePathname;
152
+ user?: User$4;
153
+ isGettingUser?: boolean;
154
+ isGettingStats?: boolean;
155
+ hostUrl?: string;
156
+ isDev?: boolean;
157
+ authedApi?: AxiosInstance;
158
+ uploadFilesApi?: AxiosInstance;
159
+ authApiUrl?: string;
160
+ };
161
+ }
162
+ interface IMirantesFoundationContext {
163
+ widgetsApi?: string;
164
+ feedApi?: string;
165
+ authV2ApiUrl?: string;
166
+ searchApi?: string;
167
+ profileApiUrl?: string;
168
+ chatApiUrl?: string;
169
+ billingApiUrl?: string;
170
+ analyticsApiUrl?: string;
171
+ assetsApiUrl?: string;
172
+ multicaixaExpressUrl?: string;
173
+ stripeKey?: string;
174
+ chatForPage?: boolean;
175
+ environment?: string;
176
+ socketApiUrl?: string;
177
+ socketRef?: RefObject<Socket | null>;
178
+ mirantesDomain?: string;
179
+ hostUrl?: string;
180
+ locale?: TLocale$1;
181
+ Link?: LinkComponent;
182
+ usePathname?: UsePathname;
183
+ user?: User$4;
184
+ isPageFeed?: boolean;
185
+ isCommunityFeed?: boolean;
186
+ community?: {
187
+ id?: string;
188
+ name?: string;
189
+ slug?: string;
190
+ image?: string;
191
+ };
192
+ pageId?: string;
193
+ page?: {
194
+ id?: string;
195
+ slug?: string;
196
+ logo?: string;
197
+ name?: string;
198
+ sector?: string;
199
+ };
200
+ isGettingUser?: boolean;
201
+ isGettingStats?: boolean;
202
+ Notification?: ReactNode;
203
+ openCageApiKey?: string;
204
+ ocpSubscriptionKey?: string;
205
+ authedApi?: AxiosInstance;
206
+ uploadFilesApi?: AxiosInstance;
207
+ authApiUrl?: string;
208
+ queryClient?: QueryClient;
209
+ onOpenCreatePostModal?: (cb?: () => void) => void;
210
+ openCreateJobModal?: () => void;
211
+ commentComponents?: ReactNode | JSX.Element;
212
+ pageTriggerComponents?: ReactNode | JSX.Element;
213
+ createJobButton?: ({ onClick, showLabel, }: {
214
+ onClick?: () => void;
215
+ showLabel?: boolean;
216
+ }) => JSX.Element;
217
+ }
218
+ type CommonLinkProps = {
219
+ to?: string;
220
+ href?: string;
221
+ children: ReactNode;
222
+ className?: string;
223
+ replace?: boolean;
224
+ [key: string]: any;
225
+ };
226
+ type User$4 = {
227
+ id: string;
228
+ name: string;
229
+ email: string;
230
+ phone: string;
231
+ currentCompany?: string;
232
+ isOpenToWork: boolean;
233
+ isActive: boolean;
234
+ avatar: string;
235
+ accessToken: string;
236
+ refreshToken: string;
237
+ role?: string;
238
+ slug: string;
239
+ isInterestsSynced?: boolean;
240
+ headline?: string;
241
+ followersCount?: number;
242
+ followingCount?: number;
243
+ socialStats?: {
244
+ contactsCount?: number;
245
+ followingCount?: number;
246
+ followersCount?: number;
247
+ };
248
+ postsCount?: number;
249
+ profileCompletedPercentage?: number;
250
+ };
251
+ type LinkComponent = (props: CommonLinkProps) => any;
252
+ type UsePathname = () => string;
253
+
254
+ declare function MirantesFoundationProvider({ children, Notification, queryClient, onOpenCreatePostModal, commentComponents, pageTriggerComponents, openCreateJobModal, createJobButton, values: { chatApiUrl, chatForPage, locale, Link, usePathname, user, isGettingUser, mirantesDomain, environment, feedApi, searchApi, widgetsApi, hostUrl, assetsApiUrl, isDev, profileApiUrl, analyticsApiUrl, isGettingStats, openCageApiKey, pageId, authedApi, authApiUrl, socketApiUrl, uploadFilesApi, page, ocpSubscriptionKey, billingApiUrl, multicaixaExpressUrl, stripeKey, isPageFeed, community, isCommunityFeed, authV2ApiUrl, }, }: IMirantesFoundationProviderProps): React__default.JSX.Element;
255
+
256
+ declare function useMirantesFoundation(): IMirantesFoundationContext;
257
+
258
+ /**
259
+ * Creates a persistent state from localStorage
260
+ * @param key - The localStorage key to use
261
+ * @param defaultValue - The default value if no stored value exists
262
+ * @returns The stored value or defaultValue
263
+ */
264
+ declare function createPersistentState<T>(key: string, defaultValue: T): T;
265
+
266
+ /**
267
+ * A hook that persists UI state (views, modals) to localStorage
268
+ * The state is automatically saved when changed and restored on page load
269
+ *
270
+ * @param key - The localStorage key to use for persistence
271
+ * @param defaultValue - The default value if no stored value exists
272
+ * @returns A tuple of [state, setState] similar to useState
273
+ *
274
+ * @example
275
+ * ```tsx
276
+ * // Persist view state
277
+ * const [view, setView] = usePersistentUIState<"home" | "chat">("ui-view", "home");
278
+ *
279
+ * // Persist modal state
280
+ * const [modal, setModal] = usePersistentUIState<string | null>("ui-modal", null);
281
+ * ```
282
+ */
283
+ declare function usePersistentUIState<T>(key: string, defaultValue: T): readonly [T, React$1.Dispatch<React$1.SetStateAction<T>>];
284
+
285
+ interface IUserVisibilitySettings {
286
+ userId?: string;
287
+ profileViewMode?: EProfileViewMode;
288
+ profilePublic?: boolean;
289
+ profilePictureScope?: EPictureVisibility;
290
+ followingVisibility?: EFollowingVisibility;
291
+ notifyMentionsInMedia?: boolean;
292
+ }
293
+ declare enum EProfileViewMode {
294
+ professional = "PROFESSIONAL_IDENTITY",
295
+ sector = "SECTOR_IDENTIFICATION",
296
+ confidential = "CONFIDENTIAL_MODE"
297
+ }
298
+ declare enum EPictureVisibility {
299
+ contacts = "CONTACTS",
300
+ network = "NETWORK",
301
+ public = "PUBLIC"
302
+ }
303
+ declare enum EFollowingVisibility {
304
+ me = "ONLY_ME",
305
+ contacts = "CONTACTS",
306
+ all = "EVERYONE"
307
+ }
308
+
309
+ type Settings = {
310
+ language: {
311
+ interface: string;
312
+ content: string;
313
+ };
314
+ theme: string;
315
+ feed: {
316
+ preference: string;
317
+ allowMentions: boolean;
318
+ };
319
+ profile: IUserVisibilitySettings;
320
+ };
321
+ declare const getSettingsFromCookie: (cookieName: string) => Settings | null;
322
+ declare const clearSettingsCookie: (cookieName: string, options: {
323
+ domain: string;
324
+ isDev: boolean;
325
+ }) => void;
326
+ declare const useLoadSettings: () => Settings | null;
327
+
328
+ interface ICreateTelemetryEventInput {
329
+ input?: {
330
+ source?: {
331
+ app?: "mirantes-web" | "mirantes-mobile";
332
+ platform?: "ios" | "android" | "web";
333
+ version?: string;
334
+ environment?: string;
335
+ };
336
+ actor?: {
337
+ user_id?: string;
338
+ anonymous_id?: string;
339
+ session_id?: string;
340
+ };
341
+ context?: {
342
+ route?: string;
343
+ referrer?: string;
344
+ timezone?: string;
345
+ locale?: string;
346
+ country?: string;
347
+ device?: {
348
+ os?: string;
349
+ model?: string;
350
+ };
351
+ browser?: {
352
+ name?: string;
353
+ version?: string;
354
+ };
355
+ };
356
+ events?: ITelemetryEvent[];
357
+ };
358
+ }
359
+ interface ITelemetryEvent {
360
+ event_id?: string;
361
+ event_type?: "PAGE_VIEW" | "PROFILE_VIEW" | "CLICK_APPLY_JOB" | "SIGNUP_STEP_1" | "SIGNUP_STEP_2" | "SIGNUP_STEP_3" | "PERF_LOAD_TIME";
362
+ occurred_at?: Date;
363
+ metadata?: any;
364
+ }
365
+ interface ICreateTelemetryEventOutput {
366
+ events?: {
367
+ id?: string;
368
+ }[];
369
+ }
370
+
371
+ declare function useRegisterTracking(): {
372
+ registerEvent: _tanstack_react_query.UseMutateFunction<ICreateTelemetryEventOutput | null, Error, ICreateTelemetryEventInput, unknown>;
373
+ };
374
+
375
+ type OwnerType = "user" | "organization" | "system" | "chat";
376
+ interface AssetUploadRequest {
377
+ file: File;
378
+ owner_type: OwnerType;
379
+ owner_id?: string;
380
+ is_public: boolean;
381
+ }
382
+ interface AssetUploadResponse {
383
+ data: {
384
+ url?: string;
385
+ assetId?: string;
386
+ };
387
+ message: string;
388
+ }
389
+ interface SignedUrlRequest {
390
+ assetId: string;
391
+ expiry: number;
392
+ version: "small" | "medium" | "large";
393
+ }
394
+ interface SignedUrlResponse {
395
+ data: {
396
+ expiresAt: string;
397
+ signedUrl: string;
398
+ version: string;
399
+ };
400
+ message: string;
401
+ }
402
+ type AssetVersionKey = "small" | "medium" | "large";
403
+ interface AssetVersion {
404
+ format: string;
405
+ platforms: string[];
406
+ recommended: boolean;
407
+ url: string;
408
+ }
409
+ interface AssetVersionsResponse {
410
+ mediaID: string;
411
+ platform: string;
412
+ versions: Record<AssetVersionKey, AssetVersion>;
413
+ }
414
+ interface BulkAssetUploadItemSuccess {
415
+ status: "success";
416
+ message: string;
417
+ data: {
418
+ url: string;
419
+ assetId?: string;
420
+ };
421
+ }
422
+ interface BulkAssetUploadItemError {
423
+ status: "error";
424
+ message: string;
425
+ data?: null;
426
+ }
427
+ type BulkAssetUploadItem = BulkAssetUploadItemSuccess | BulkAssetUploadItemError;
428
+ interface AssetUploadBulkRequest {
429
+ files: File[];
430
+ owner_type: OwnerType;
431
+ owner_id?: string;
432
+ is_public: boolean;
433
+ signal?: GenericAbortSignal;
434
+ }
435
+ interface AssetUploadBulkResponse {
436
+ results: BulkAssetUploadItem[];
437
+ }
438
+
439
+ /** POST /assets */
440
+ declare function useUploadAsset(): {
441
+ uploadAssets: _tanstack_react_query.UseMutateFunction<AssetUploadResponse | null, Error, AssetUploadRequest, unknown>;
442
+ isUploadingAsset: boolean;
443
+ };
444
+ /** POST /assets/bulk */
445
+ declare function useUploadAssetsBulk(): {
446
+ uploadAssetsBulk: _tanstack_react_query.UseMutateFunction<AssetUploadBulkResponse | null, Error, AssetUploadBulkRequest, unknown>;
447
+ isUploadingBulk: boolean;
448
+ };
449
+ /** POST /assets/signed-url */
450
+ declare function useSignedUrl(): {
451
+ postSignedUrl: _tanstack_react_query.UseMutateFunction<SignedUrlResponse | null, Error, SignedUrlRequest, unknown>;
452
+ isPostingSignedUrl: boolean;
453
+ };
454
+ /** GET /assets/:id/versions */
455
+ declare function useAssetVersions(assetId?: string): {
456
+ assetVersions: AssetVersionsResponse | null | undefined;
457
+ isGettingAssetVersions: boolean;
458
+ error: Error | null;
459
+ };
460
+ /** Auto-picks best version (large/medium/small) */
461
+ declare function useBestAssetVersion(assetId?: string): {
462
+ url: string | null | undefined;
463
+ isGettingUrl: boolean;
464
+ error: Error | null;
465
+ };
466
+
467
+ declare const dispatchLogoutEvent: () => void;
468
+
469
+ interface LogoutOptions$1 {
470
+ broadcast?: boolean;
471
+ reload?: boolean;
472
+ redirectUrl?: string;
473
+ }
474
+
475
+ interface UseApiLogoutOptions extends LogoutOptions$1 {
476
+ onSuccess?: () => void;
477
+ onError?: (error: unknown) => void;
478
+ }
479
+ declare function useApiLogout(): {
480
+ handleApiLogout: (options?: UseApiLogoutOptions) => Promise<void>;
481
+ };
482
+
483
+ declare function useLogout(): {
484
+ handleLogout: (options?: LogoutOptions$1) => void;
485
+ };
486
+
487
+ interface AutoComponentProps {
488
+ component?: React__default.ElementType;
489
+ render?: (props: {
490
+ isOpen: boolean;
491
+ onClose: () => void;
492
+ }) => React__default.ReactNode;
493
+ componentProps?: Record<string, any>;
494
+ maxShows?: number;
495
+ initialDelayMs?: number;
496
+ intervalMs?: number;
497
+ mobileOnly?: boolean;
498
+ enabled?: boolean;
499
+ storageKey?: string;
500
+ }
501
+ declare const AutoComponent: React__default.FC<AutoComponentProps>;
502
+
503
+ interface AutoDisplayConfig {
504
+ storageKey?: string;
505
+ maxShows?: number;
506
+ initialDelayMs?: number;
507
+ intervalMs?: number;
508
+ mobileOnly?: boolean;
509
+ enabled?: boolean;
510
+ onOpen?: () => void;
511
+ onClose?: () => void;
512
+ }
513
+ declare const useAutoDisplay: (config?: AutoDisplayConfig) => {
514
+ isOpen: boolean;
515
+ open: () => void;
516
+ close: () => void;
517
+ canShow: boolean;
518
+ reset: () => void;
519
+ };
520
+
521
+ interface LogoutOptions {
522
+ broadcast?: boolean;
523
+ reload?: boolean;
524
+ redirectUrl?: string;
525
+ domain?: string;
526
+ secure?: boolean;
527
+ }
528
+ declare function clearUserSession(options?: LogoutOptions): void;
529
+
530
+ declare function ChatView(): React__default.JSX.Element;
531
+
532
+ declare function useSetChatVisibility(): {
533
+ isChatVisible: boolean;
534
+ isToSendMessageToPage: boolean;
535
+ isPageContext: boolean;
536
+ };
537
+
538
+ type ModalVariant = "expanded" | "minimized" | "center";
539
+ interface ModalPosition {
540
+ top?: string;
541
+ bottom?: string;
542
+ left?: string;
543
+ right?: string;
544
+ }
545
+ interface ModalAnimationConfig {
546
+ duration?: number;
547
+ ease?: string | number[];
548
+ exitDuration?: number;
549
+ }
550
+ interface BaseModalProps {
551
+ isOpen: boolean;
552
+ onClose: () => void;
553
+ children: React.ReactNode;
554
+ }
555
+ interface ModalStyleProps {
556
+ className?: string;
557
+ contentClassName?: string;
558
+ overlayClassName?: string;
559
+ }
560
+ interface ModalBehaviorProps {
561
+ closeOnClickOutside?: boolean;
562
+ closeOnEscape?: boolean;
563
+ hideCloseButton?: boolean;
564
+ preventBodyScroll?: boolean;
565
+ showOverlay?: boolean;
566
+ }
567
+ interface ModalConfigProps {
568
+ variant?: ModalVariant;
569
+ position?: ModalPosition;
570
+ animationConfig?: ModalAnimationConfig;
571
+ header?: React.ReactNode;
572
+ zIndex?: number;
573
+ offsetTop?: number;
574
+ }
575
+ interface AnimatedModalProps extends BaseModalProps, ModalStyleProps, ModalBehaviorProps, ModalConfigProps {
576
+ }
577
+
578
+ declare function AnimatedModal({ isOpen, onClose, children, variant, className, contentClassName, overlayClassName, closeOnClickOutside, closeOnEscape, hideCloseButton, showOverlay, position, header, zIndex, offsetTop, preventBodyScroll, }: AnimatedModalProps): React__default.JSX.Element;
579
+
580
+ interface BaseInputProps extends InputHTMLAttributes<HTMLInputElement> {
581
+ placeholder: string;
582
+ value: string;
583
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
584
+ onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
585
+ onFocus?: (e: FocusEvent<HTMLInputElement>) => void;
586
+ rightIcon?: React__default.ReactNode;
587
+ leftIcon?: React__default.ReactNode;
588
+ label?: string;
589
+ error?: string;
590
+ wrapperClassName?: string;
591
+ inputClassName?: string;
592
+ requiredInPlaceholder?: boolean;
593
+ placeholderColor?: string;
594
+ }
595
+ declare const BaseInput: React__default.ForwardRefExoticComponent<BaseInputProps & React__default.RefAttributes<HTMLInputElement>>;
596
+
597
+ type ButtonProps = {
598
+ children: React__default.ReactNode;
599
+ type?: "button" | "submit";
600
+ className?: string;
601
+ onClick?: () => void;
602
+ disabled?: boolean;
603
+ isLoading?: boolean;
604
+ };
605
+ declare function Button({ children, className, disabled, isLoading, onClick, type, }: ButtonProps): React__default.JSX.Element;
606
+
607
+ declare function CheckBoxInput({ isChecked, onClick, label, disabled, isRequired, }: {
608
+ isChecked?: boolean;
609
+ isRequired?: boolean;
610
+ onClick?: (e: React__default.MouseEvent<HTMLDivElement> | React__default.KeyboardEvent<HTMLDivElement>) => void;
611
+ label?: string;
612
+ disabled?: boolean;
613
+ }): React__default.JSX.Element;
614
+
615
+ type CustomDrawerProps = {
616
+ children: React__default.ReactNode;
617
+ footer?: React__default.ReactNode;
618
+ title?: React__default.ReactNode;
619
+ onClose: () => void;
620
+ className?: string;
621
+ isOpen?: boolean;
622
+ hideCloseBlock?: boolean;
623
+ direction?: 'bottom' | 'right' | 'left';
624
+ hiddenInMobileArticle?: boolean;
625
+ };
626
+ declare function CustomDrawer({ children, footer, title, onClose, className, isOpen, hideCloseBlock, direction, hiddenInMobileArticle, }: CustomDrawerProps): React__default.JSX.Element | null;
627
+
628
+ interface IDropdownProps {
629
+ trigger: React.ReactNode;
630
+ options: IDropdownOption[];
631
+ onSelect: (id: string) => void;
632
+ className?: string;
633
+ itemClassName?: string;
634
+ itemHoverClassName?: string;
635
+ animate?: boolean;
636
+ enableSearch?: boolean;
637
+ }
638
+ interface IDropdownOption {
639
+ id: string;
640
+ label: string;
641
+ value: string;
642
+ icon?: React.ReactNode;
643
+ }
644
+
645
+ declare function CustomDropdown({ trigger, options, onSelect, className, itemClassName, itemHoverClassName, animate, enableSearch, }: IDropdownProps): React__default.JSX.Element;
646
+
647
+ type Option = {
648
+ id: string;
649
+ label: string;
650
+ value: string;
651
+ };
652
+ type CustomSelectInputProps = {
653
+ options: Option[];
654
+ value?: string;
655
+ onChange?: (option: Option | null) => void;
656
+ placeholder?: string;
657
+ className?: string;
658
+ enableSearch?: boolean;
659
+ floattable?: boolean;
660
+ required?: boolean;
661
+ showCheck?: boolean;
662
+ label?: string;
663
+ error?: string;
664
+ disabled?: boolean;
665
+ onSearch?: (query: string) => void;
666
+ isLoading?: boolean;
667
+ reset?: boolean;
668
+ };
669
+ declare function CustomSelectInput({ options, value, onChange, placeholder, className, enableSearch, floattable, required, showCheck, label, error, disabled, onSearch, isLoading, reset, }: CustomSelectInputProps): React$1.JSX.Element;
670
+
671
+ interface EmojiPickerButtonProps {
672
+ onEmojiSelect: (emoji: string) => void;
673
+ }
674
+ declare const EmojiPickerButton: ({ onEmojiSelect, }: EmojiPickerButtonProps) => React__default.JSX.Element;
675
+
676
+ interface IMirantesButton extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
677
+ label?: string;
678
+ isLoading?: boolean;
679
+ leftElement?: React__default.ReactNode;
680
+ rightElement?: React__default.ReactNode;
681
+ align?: "left" | "center" | "right";
682
+ }
683
+ declare const MirantesButton: React__default.ForwardRefExoticComponent<IMirantesButton & React__default.RefAttributes<HTMLButtonElement>>;
684
+
685
+ interface MirantesSheetsProps {
686
+ isOpen: boolean;
687
+ onOpenChange: (open: boolean) => void;
688
+ title?: string;
689
+ iconTitle?: ReactNode;
690
+ iconTitleClassName?: string;
691
+ customHeader?: ReactNode;
692
+ children: ReactNode;
693
+ footer?: ReactNode;
694
+ side?: "top" | "bottom" | "left" | "right";
695
+ className?: string;
696
+ contentClassName?: string;
697
+ hideCloseButton?: boolean;
698
+ zIndex?: number;
699
+ }
700
+ declare const MirantesSheets: ({ isOpen, onOpenChange, title, customHeader, children, footer, side, className, contentClassName, hideCloseButton, iconTitle, iconTitleClassName, zIndex, }: MirantesSheetsProps) => React__default.JSX.Element;
701
+
702
+ declare function RadioButtonInput({ label, isSelected, onSelect, }: {
703
+ label?: string;
704
+ isSelected?: boolean;
705
+ onSelect?: () => void;
706
+ }): React__default.JSX.Element;
707
+
708
+ interface IResponsiveDrawerProps {
709
+ isOpen: boolean;
710
+ onClose: () => void;
711
+ header?: React$1.ReactNode;
712
+ footer?: React$1.ReactNode;
713
+ children: React$1.ReactNode;
714
+ className?: string;
715
+ side?: "right" | "left" | "bottom";
716
+ swipeable?: boolean;
717
+ swipeThreshold?: number;
718
+ }
719
+
720
+ interface ExtendedDrawerProps extends IResponsiveDrawerProps {
721
+ title?: string;
722
+ }
723
+ declare function ResponsiveDrawer$1({ isOpen, onClose, title, header, footer, children, className, swipeable, }: ExtendedDrawerProps): React$1.JSX.Element;
724
+
725
+ type Language = "pt" | "en" | "fr";
726
+ interface DateOutput {
727
+ day: string;
728
+ month: string;
729
+ year: string;
730
+ formattedYMD: string | null;
731
+ formattedDMY: string | null;
732
+ isoString: string | null;
733
+ }
734
+ interface TripleInputDateProps {
735
+ label?: string;
736
+ required?: boolean;
737
+ disabled?: boolean;
738
+ error?: string;
739
+ showDay?: boolean;
740
+ showMonth?: boolean;
741
+ showYear?: boolean;
742
+ lang?: Language;
743
+ value?: Date | string | null;
744
+ minYear?: number;
745
+ maxYear?: number;
746
+ onChange?: (dateData: DateOutput) => void;
747
+ isNewChevronIcon?: boolean;
748
+ }
749
+ declare const TripleInputDate: ({ label, required, disabled, error, showDay, showMonth, showYear, lang, value, minYear, maxYear, onChange, isNewChevronIcon, }: TripleInputDateProps) => React__default.JSX.Element;
750
+
751
+ interface AddressSuggestion {
752
+ country?: string;
753
+ city?: string;
754
+ latitude?: number;
755
+ longitude?: number;
756
+ address?: string;
757
+ }
758
+ interface AddressInputProps {
759
+ value: string;
760
+ onChange: (props?: AddressSuggestion) => void;
761
+ className?: string;
762
+ wrapperClassName?: string;
763
+ inputClassName?: string;
764
+ suggestionsWrapperClassName?: string;
765
+ suggestionItemClassName?: string;
766
+ selectedItemClassName?: string;
767
+ loadingIndicatorClassName?: string;
768
+ clearButtonClassName?: string;
769
+ error?: string;
770
+ errorClassName?: string;
771
+ leftElement?: ReactNode;
772
+ minChars?: number;
773
+ debounceDelay?: number;
774
+ placeholder?: string;
775
+ noResultsText?: string;
776
+ customLoading?: ReactNode;
777
+ floatable?: boolean;
778
+ }
779
+ declare function AddressAutocompleteInput({ value, onChange, className, wrapperClassName, inputClassName, suggestionsWrapperClassName, suggestionItemClassName, selectedItemClassName, loadingIndicatorClassName, clearButtonClassName, errorClassName, error, leftElement, minChars, debounceDelay, placeholder, noResultsText, customLoading, floatable, }: AddressInputProps): React__default.JSX.Element;
780
+
781
+ interface IActivateAccountModalProps {
782
+ isOpen: boolean;
783
+ onClose?: () => void;
784
+ }
785
+
786
+ declare function ActivateAccountModal({ isOpen, onClose, }: IActivateAccountModalProps): React__default.JSX.Element;
787
+
788
+ declare function ChatContacts({ postId, onClose, searchTerm, selectedContacts, setSelectedContacts, }: {
789
+ postId?: string;
790
+ onClose?: () => void;
791
+ searchTerm?: string;
792
+ selectedContacts?: Set<string>;
793
+ setSelectedContacts?: (contacts: Set<string> | ((prev: Set<string>) => Set<string>)) => void;
794
+ }): React__default.JSX.Element;
795
+
796
+ declare function ChatListWrapper({ isChatOpen, isCompactMode }: {
797
+ isChatOpen?: boolean;
798
+ isCompactMode?: boolean;
799
+ }): React__default.JSX.Element;
800
+
801
+ declare function ChatViewDesktopPage(): React__default.JSX.Element;
802
+
803
+ interface TargetEntity$1 {
804
+ id?: string;
805
+ name?: string;
806
+ avatar?: string;
807
+ logo?: string;
808
+ image?: string;
809
+ }
810
+ interface IMessageButtonProps$1 {
811
+ user?: TargetEntity$1;
812
+ page?: TargetEntity$1;
813
+ icon?: React__default.ReactNode;
814
+ label?: string;
815
+ className?: string;
816
+ disabled?: boolean;
817
+ onClick?: () => void;
818
+ isSharing?: boolean;
819
+ link?: string;
820
+ onConversationReady?: (conversationId: string) => void;
821
+ }
822
+ declare function MessageButton({ user, page, icon, label, className, disabled, onClick: customOnClick, isSharing, link, onConversationReady, }: IMessageButtonProps$1): React__default.JSX.Element;
823
+
824
+ interface TargetEntity {
825
+ id?: string;
826
+ name?: string;
827
+ avatar?: string;
828
+ logo?: string;
829
+ image?: string;
830
+ slug?: string;
831
+ }
832
+ interface IMessageButtonProps {
833
+ user?: TargetEntity;
834
+ label?: string;
835
+ className?: string;
836
+ disabled?: boolean;
837
+ onClick?: () => void;
838
+ variant?: "default" | "small";
839
+ onConversationReady?: (conversationId: string) => void;
840
+ }
841
+ declare function MessagesButtonFromPage({ user, label, className, disabled, onClick: customOnClick, variant, }: IMessageButtonProps): React__default.JSX.Element;
842
+
843
+ declare function useRestorePendingChat(): void;
844
+
845
+ interface IMessage {
846
+ id?: string;
847
+ conversationId?: string;
848
+ senderId?: string;
849
+ pageId?: string;
850
+ sender?: {
851
+ name?: string;
852
+ slug?: string;
853
+ avatar?: string;
854
+ id?: string;
855
+ };
856
+ attachments?: {
857
+ type?: string;
858
+ url?: string;
859
+ }[];
860
+ body?: string;
861
+ content?: string;
862
+ actions?: string;
863
+ replyMessageId?: string;
864
+ replyMessage?: IMessage;
865
+ createdAt?: Date;
866
+ updatedAt?: Date;
867
+ totalReactions?: number;
868
+ myReaction?: string | null;
869
+ reactions?: {
870
+ reaction?: string;
871
+ count?: number;
872
+ }[];
873
+ isForwarded?: boolean;
874
+ mentions?: {
875
+ mentionedId: string;
876
+ }[];
877
+ }
878
+
879
+ type MessageApp = {
880
+ id: string;
881
+ component: React__default.ReactNode;
882
+ };
883
+ type TOption = "add-participant" | "select-messages" | "new-group" | "edit-group" | "new-message" | "filter-all" | "filter-unread" | "filter-favorites" | "filter-groups" | "filter-recruitment" | "filter-main" | "filter-archived" | "filter-spam" | "filter-muted" | "filter-pinned" | "options";
884
+ type SelectionMode = "all" | "delete-only" | "forward-only";
885
+ type TMessageSubject = "service-request" | "service-request-demo" | "support" | "careers" | "other";
886
+ type UnreadState = {
887
+ count: number;
888
+ dot: boolean;
889
+ };
890
+ interface IUser {
891
+ id?: string;
892
+ name?: string;
893
+ avatar?: string;
894
+ isOnline?: boolean;
895
+ email?: string;
896
+ role?: string;
897
+ isGroupOwner?: boolean;
898
+ slug?: string;
899
+ conversationId?: string;
900
+ description?: string;
901
+ isGroup?: boolean;
902
+ isMuted?: boolean;
903
+ participants?: IUser[];
904
+ isGroupAdmin?: boolean;
905
+ }
906
+ type TMessage = {
907
+ id: string;
908
+ type: "text" | "audio" | "image" | "video" | "file" | "temporary";
909
+ content: string;
910
+ timestamp: number;
911
+ sender: "me" | "other" | {
912
+ name?: string;
913
+ avatar?: string;
914
+ id?: string;
915
+ slug?: string;
916
+ };
917
+ replyMessageId?: string;
918
+ isTemporary?: boolean;
919
+ attachmentType?: "image" | "audio" | "video" | "gif" | "file";
920
+ body?: string;
921
+ createdAt?: string;
922
+ senderId?: string;
923
+ replyMessage?: any;
924
+ };
925
+ type State = {
926
+ replyMessage?: IMessage | null;
927
+ setReplyMessage?: (message: IMessage | null) => void;
928
+ apps: MessageApp[];
929
+ selectedAppId: string | null;
930
+ setSelectedApp: (id: string) => void;
931
+ chatHeaderOption?: TOption;
932
+ onSelectChatHeaderOption?: (id: TOption) => void;
933
+ subject?: TMessageSubject;
934
+ onSelectMessageSubject?: (id: TMessageSubject) => void;
935
+ searchQuery?: string;
936
+ onSearchQuery?: (value: string) => void;
937
+ searchMessage?: string;
938
+ onSearchMessage?: (value: string) => void;
939
+ selectedChat?: IUser | null;
940
+ onSelectChat?: (user: IUser | null) => void;
941
+ messages: Record<string, TMessage[]>;
942
+ draftMessages: Record<string, string>;
943
+ setDraftMessage: (chatId: string, text: string) => void;
944
+ sendTextMessage: (chatId: string, text: string) => void;
945
+ sendAudioMessage: (chatId: string, blob: Blob) => void;
946
+ addTemporaryMessage: (conversationId: string, content: string, attachmentType?: "image" | "audio" | "video" | "gif" | "file", messageId?: string) => void;
947
+ removeTemporaryMessage: (conversationId: string, messageId: string) => void;
948
+ unreadChats: Record<string, UnreadState>;
949
+ markChatAsRead: (id?: string) => void;
950
+ incrementUnread: (id: string) => void;
951
+ resetUnread: (id?: string) => void;
952
+ clearDot: (id?: string) => void;
953
+ replaceTempConversationId: (tempId: string, realId: string) => void;
954
+ selectedUsers: IUser[];
955
+ addUser: (user: IUser) => void;
956
+ removeUser: (userId: string) => void;
957
+ resetSelectedUsers?: () => void;
958
+ groupToEdit?: {
959
+ id?: string;
960
+ name?: string;
961
+ description?: string;
962
+ participants?: string[];
963
+ image?: string;
964
+ } | null;
965
+ onEditGroup?: (group?: {
966
+ id?: string;
967
+ name?: string;
968
+ description?: string;
969
+ participants?: string[];
970
+ image?: string;
971
+ }) => void;
972
+ resetAll?: () => void;
973
+ selectedMessageIds: string[];
974
+ selectMessage: (id: string) => void;
975
+ clearSelectedMessages: () => void;
976
+ deleteSelectedMessages: () => void;
977
+ selectionMode: SelectionMode;
978
+ setSelectionMode: (mode: SelectionMode) => void;
979
+ mobileSelectedMessageId: string | null;
980
+ setMobileSelectedMessage: (id: string | null) => void;
981
+ forwardMessageIds: string[];
982
+ selectForwardMessage: (id: string) => void;
983
+ clearForwardMessages: () => void;
984
+ forwardTargets: Array<{
985
+ userId?: string;
986
+ conversationId?: string;
987
+ }>;
988
+ selectForwardTarget: (target: {
989
+ userId?: string;
990
+ conversationId?: string;
991
+ }) => void;
992
+ removeForwardTarget: (target: {
993
+ userId?: string;
994
+ conversationId?: string;
995
+ }) => void;
996
+ clearForwardTargets: () => void;
997
+ };
998
+
999
+ declare const useMessageAppStore: zustand.UseBoundStore<zustand.StoreApi<State>>;
1000
+
1001
+ declare function PageChatContent(): React__default.JSX.Element;
1002
+
1003
+ declare function PageChatContentHeader(): React__default.JSX.Element | null;
1004
+
1005
+ declare function PageChatInput(): React__default.JSX.Element;
1006
+
1007
+ declare function PageChatList(): React__default.JSX.Element;
1008
+
1009
+ declare function PageChatListWrapper(): React__default.JSX.Element;
1010
+
1011
+ type PageChatUserSuggestionsProps = {
1012
+ onUserClick?: () => void;
1013
+ };
1014
+ declare const PageChatUserSuggestions: React__default.ForwardRefExoticComponent<PageChatUserSuggestionsProps & React__default.RefAttributes<HTMLDivElement>>;
1015
+
1016
+ declare function PageMessageWrapper({ containerRef: externalContainerRef }: {
1017
+ containerRef?: React__default.RefObject<HTMLDivElement | null>;
1018
+ }): React__default.JSX.Element;
1019
+
1020
+ interface CommunityTriggerState {
1021
+ isCommunitiesOpen: boolean;
1022
+ openCommunity: () => void;
1023
+ closeCommunity: () => void;
1024
+ toggleCommunity: () => void;
1025
+ }
1026
+ declare const useCommunityTriggerStore: zustand.UseBoundStore<zustand.StoreApi<CommunityTriggerState>>;
1027
+
1028
+ type User$3 = {
1029
+ id: string;
1030
+ name: string;
1031
+ slug: string;
1032
+ email: string;
1033
+ avatar: string;
1034
+ isOpenToWork: boolean;
1035
+ isFollowed: boolean;
1036
+ isContact: boolean;
1037
+ headline?: string;
1038
+ };
1039
+
1040
+ type Contact = {
1041
+ id: string;
1042
+ followerId: string;
1043
+ followedId: string;
1044
+ isFollowing: boolean;
1045
+ createdAt: string;
1046
+ updatedAt: string;
1047
+ follower: User$3;
1048
+ followed: User$3;
1049
+ };
1050
+ type ContactsResponse = {
1051
+ contact: {
1052
+ meta: {
1053
+ currentPage: number;
1054
+ perPage: number;
1055
+ lastPage: number;
1056
+ total: number;
1057
+ };
1058
+ data: Contact[];
1059
+ };
1060
+ };
1061
+ type GetFollowersOptions = {
1062
+ page: number;
1063
+ perPage: number;
1064
+ sort: string;
1065
+ sortDir: string;
1066
+ filter?: {
1067
+ name?: string | null;
1068
+ slug?: string | null;
1069
+ };
1070
+ slug?: string;
1071
+ };
1072
+ declare const useApiGetContacts: (options: Omit<GetFollowersOptions, "page">, slug?: string, tabEnabled?: boolean) => {
1073
+ contacts: Contact[];
1074
+ fetchNextPage: (options?: _tanstack_react_query.FetchNextPageOptions) => Promise<_tanstack_react_query.InfiniteQueryObserverResult<_tanstack_react_query.InfiniteData<ContactsResponse, unknown>, Error>>;
1075
+ hasNextPage: boolean;
1076
+ isFetchingNextPage: boolean;
1077
+ isGettingContacts: boolean;
1078
+ meta: {
1079
+ currentPage: number;
1080
+ perPage: number;
1081
+ lastPage: number;
1082
+ total: number;
1083
+ } | undefined;
1084
+ };
1085
+
1086
+ declare function ContactsModal({ onClose, slug, }: {
1087
+ onClose: () => void;
1088
+ slug?: string;
1089
+ }): React__default.JSX.Element;
1090
+
1091
+ interface CountryDisplayProps {
1092
+ code: string;
1093
+ locale: "pt" | "fr" | "en";
1094
+ className?: string;
1095
+ }
1096
+ declare function CountryDisplay({ code, locale, className, }: CountryDisplayProps): React__default.JSX.Element | null;
1097
+ declare namespace CountryDisplay {
1098
+ var displayName: string;
1099
+ }
1100
+
1101
+ interface ICountryInputProps {
1102
+ locale?: "pt" | "fr" | "en";
1103
+ value?: string;
1104
+ onChange?: (value: {
1105
+ locale: string;
1106
+ name: string;
1107
+ }) => void;
1108
+ className?: string;
1109
+ defaultCode?: string;
1110
+ forNationality?: boolean;
1111
+ }
1112
+
1113
+ interface CountryInputProps extends Omit<ICountryInputProps, "locale" | "onChange"> {
1114
+ className?: string;
1115
+ buttonClassName?: string;
1116
+ inputClassName?: string;
1117
+ value?: string;
1118
+ onChange?: (payload: {
1119
+ code: string;
1120
+ name: string;
1121
+ }) => void;
1122
+ error?: string;
1123
+ floatable?: boolean;
1124
+ }
1125
+ declare function CountryInput({ className, buttonClassName, inputClassName, defaultCode, onChange, value, error, floatable, }: CountryInputProps): React__default.JSX.Element;
1126
+ declare namespace CountryInput {
1127
+ var displayName: string;
1128
+ }
1129
+
1130
+ interface DateInputProps$1 {
1131
+ value?: Date | string | null;
1132
+ onChange?: (date: Date | null) => void;
1133
+ minDate?: Date;
1134
+ maxDate?: Date;
1135
+ required?: boolean;
1136
+ showDateIcon?: boolean;
1137
+ disabled?: boolean;
1138
+ readOnly?: boolean;
1139
+ className?: string;
1140
+ placeholder?: string;
1141
+ inputClassName?: string;
1142
+ label?: string;
1143
+ "data-testid"?: string;
1144
+ error?: string;
1145
+ formattedAsMonthYear?: boolean;
1146
+ }
1147
+ declare function CustomDateInput({ value, error: errorMessage, onChange, minDate, maxDate, required, showDateIcon, disabled, readOnly, className, placeholder, inputClassName, label, "data-testid": testId, formattedAsMonthYear, }: DateInputProps$1): React__default.JSX.Element;
1148
+
1149
+ interface DateInputProps {
1150
+ label: string;
1151
+ onChange: (date: Date) => void;
1152
+ value: Date;
1153
+ required?: boolean;
1154
+ className?: string;
1155
+ error?: string;
1156
+ disabled?: boolean;
1157
+ calendarClassName?: string;
1158
+ triggerClassName?: string;
1159
+ mode?: "date" | "time" | "both" | "calendar";
1160
+ setHasError?: (value: boolean) => void;
1161
+ }
1162
+ declare function DateInput({ label, onChange, value, required, className, triggerClassName, error: externalError, disabled, calendarClassName, mode, setHasError, }: DateInputProps): React$1.JSX.Element;
1163
+
1164
+ interface AutoDownloadBannerProps {
1165
+ /** Número máximo de vezes que o banner pode ser mostrado (padrão: 5) */
1166
+ maxShows?: number;
1167
+ /** Delay inicial em milissegundos antes de mostrar o banner pela primeira vez (padrão: 30 segundos) */
1168
+ initialDelayMs?: number;
1169
+ /** Se deve mostrar apenas em dispositivos móveis (padrão: true) */
1170
+ mobileOnly?: boolean;
1171
+ /** Se o banner automático está ativo (padrão: true) */
1172
+ enabled?: boolean;
1173
+ }
1174
+ declare const AutoDownloadBanner: React__default.FC<AutoDownloadBannerProps>;
1175
+
1176
+ declare const DownloadModalTrigger: () => React__default.JSX.Element;
1177
+
1178
+ declare const DownloadMobileVersionBanner: () => React__default.JSX.Element;
1179
+
1180
+ interface BannerConfig {
1181
+ /** Número máximo de vezes que o banner pode ser mostrado (padrão: 5) */
1182
+ maxShows?: number;
1183
+ /** Delay inicial em milissegundos antes de mostrar o banner pela primeira vez (padrão: 5 segundos) */
1184
+ initialDelayMs?: number;
1185
+ /** Se deve mostrar apenas em dispositivos móveis (padrão: true) */
1186
+ mobileOnly?: boolean;
1187
+ }
1188
+ declare const usePeriodicDownloadBanner: (config?: BannerConfig) => {
1189
+ shouldShow: boolean;
1190
+ showBanner: () => void;
1191
+ resetBannerData: () => void;
1192
+ getBannerStats: () => {
1193
+ lastShown: Date | null;
1194
+ showsCount: number;
1195
+ remainingShows: number;
1196
+ canShow: boolean;
1197
+ shownInCurrentSession: boolean;
1198
+ };
1199
+ canShow: boolean;
1200
+ isMobile: boolean;
1201
+ };
1202
+
1203
+ interface ModalState$1 {
1204
+ isDownloadModalOpen: boolean;
1205
+ openDownloadModal: () => void;
1206
+ closeDownloadModal: () => void;
1207
+ toggleDownloadModal: () => void;
1208
+ }
1209
+ declare const useModalStore: zustand.UseBoundStore<zustand.StoreApi<ModalState$1>>;
1210
+
1211
+ interface ArticleContentProps {
1212
+ isOpen: boolean;
1213
+ onClose: () => void;
1214
+ }
1215
+ declare const ArticleContent: ({ isOpen, onClose }: ArticleContentProps) => React__default.JSX.Element;
1216
+
1217
+ type User$2 = {
1218
+ id?: string;
1219
+ name?: string;
1220
+ slug?: string;
1221
+ about?: string;
1222
+ email?: string;
1223
+ phone?: string;
1224
+ isOpenToWork?: boolean;
1225
+ gender?: string;
1226
+ banner?: string;
1227
+ isContact?: boolean;
1228
+ isFollowed?: boolean;
1229
+ isFollowedBy?: boolean;
1230
+ birthDate?: string;
1231
+ nationality?: string;
1232
+ headline?: string;
1233
+ country?: string;
1234
+ city?: string;
1235
+ street?: string;
1236
+ countryCode?: string;
1237
+ profession?: string;
1238
+ addresses?: {
1239
+ country?: string;
1240
+ city?: string;
1241
+ address?: string;
1242
+ }[];
1243
+ address?: {
1244
+ country?: string;
1245
+ city?: string;
1246
+ address?: string;
1247
+ };
1248
+ avatar?: string;
1249
+ avatarDisplay?: string;
1250
+ provider?: string;
1251
+ role?: string;
1252
+ status?: string;
1253
+ createdAt?: string;
1254
+ updatedAt?: string;
1255
+ isPublic?: boolean;
1256
+ currentCompany?: string;
1257
+ person?: IPerson$2;
1258
+ link?: string;
1259
+ links?: string[];
1260
+ };
1261
+ interface IPerson$2 {
1262
+ gender?: string;
1263
+ birthDate?: Date;
1264
+ nationality?: string;
1265
+ maritalStatus?: string;
1266
+ salaryExpectation?: string;
1267
+ countryCode?: string;
1268
+ }
1269
+
1270
+ type PostAttachmentProps$2 = {
1271
+ title?: string;
1272
+ description?: string;
1273
+ imageUrl?: string;
1274
+ url?: string;
1275
+ type: string;
1276
+ };
1277
+ type PostAuthor = {
1278
+ id?: string;
1279
+ name?: string;
1280
+ avatar?: string | null;
1281
+ slug?: string;
1282
+ headline?: string | null;
1283
+ rating?: number;
1284
+ isFollowing?: boolean;
1285
+ };
1286
+ type Post$2 = {
1287
+ user: User$2;
1288
+ /** Timeline / feed-with-go APIs expose publisher as `author` instead of `user`. */
1289
+ author?: PostAuthor;
1290
+ clientId?: string;
1291
+ postType: "NORMAL" | "REEL" | "ARTICLE";
1292
+ id: string;
1293
+ createdAt: string;
1294
+ scheduledAt?: string;
1295
+ bio?: string;
1296
+ content: string;
1297
+ totalShares?: number;
1298
+ totalReactions?: number;
1299
+ currentUserReaction?: string | undefined;
1300
+ totalComments?: number;
1301
+ attachment?: PostAttachmentProps$2;
1302
+ isFollowed?: boolean;
1303
+ isContact?: boolean;
1304
+ isArticle?: boolean;
1305
+ isDraft?: boolean;
1306
+ expiresAt?: string | null;
1307
+ link?: {
1308
+ title: string;
1309
+ description: string;
1310
+ imageUrl: string;
1311
+ url: string;
1312
+ };
1313
+ images: PostAssetProps$2[];
1314
+ videos: PostAssetProps$2[];
1315
+ reactions?: PostReactionsProps$2[];
1316
+ comments?: CommentProps$2[];
1317
+ sharedPostId?: string;
1318
+ page?: {
1319
+ id?: string;
1320
+ name?: string;
1321
+ slug?: string;
1322
+ sector?: string;
1323
+ banner?: string;
1324
+ logo?: string;
1325
+ site?: string;
1326
+ };
1327
+ media?: unknown;
1328
+ linkPreview?: unknown;
1329
+ visibility?: string;
1330
+ sharedPost?: Post$2;
1331
+ title?: string;
1332
+ stats?: {
1333
+ reactionCount?: number;
1334
+ commentCount?: number;
1335
+ shareCount?: number;
1336
+ };
1337
+ sharedContext?: unknown;
1338
+ mention?: {
1339
+ id: string;
1340
+ mentionedId: string;
1341
+ mentioned: User$2;
1342
+ }[];
1343
+ community?: {
1344
+ id: string;
1345
+ visibility?: string;
1346
+ slug: string;
1347
+ banner?: string;
1348
+ createdAt?: string;
1349
+ description?: string;
1350
+ image?: string;
1351
+ location?: string;
1352
+ name: string;
1353
+ owner?: {
1354
+ id: string;
1355
+ name: string;
1356
+ slug: string;
1357
+ email?: string;
1358
+ };
1359
+ ownerId?: string;
1360
+ members?: {
1361
+ userId: string;
1362
+ user: {
1363
+ id: string;
1364
+ name: string;
1365
+ slug: string;
1366
+ };
1367
+ }[];
1368
+ };
1369
+ userId?: string;
1370
+ sharedInCommunity?: {
1371
+ id: string;
1372
+ slug: string;
1373
+ visibility: string;
1374
+ name: string;
1375
+ banner?: string;
1376
+ image?: string;
1377
+ location?: string;
1378
+ ownerId: string;
1379
+ owner: {
1380
+ id: string;
1381
+ slug: string;
1382
+ name: string;
1383
+ };
1384
+ };
1385
+ communityId?: string;
1386
+ };
1387
+ type PostAssetProps$2 = {
1388
+ id: string;
1389
+ url: string;
1390
+ type?: "image" | "video" | "pdf";
1391
+ createdAt?: string;
1392
+ };
1393
+ type PostReactionsProps$2 = {
1394
+ id: string;
1395
+ userId: string;
1396
+ postId: string;
1397
+ reaction: "LIKE" | "LOVE" | "HAHA" | "WOW" | "SAD" | "ANGRY" | "AGREE" | "EUREKA" | "NO_COMMENT" | "SUPPORT" | "DISAGREE" | "DISLIKE";
1398
+ createdAt?: string;
1399
+ updatedAt?: string;
1400
+ user?: User$2;
1401
+ };
1402
+ type CommentReactionsProps$2 = {
1403
+ id: string;
1404
+ userId: string;
1405
+ commentId: string;
1406
+ reaction: "LIKE" | "LOVE" | "HAHA" | "WOW" | "SAD" | "ANGRY" | "AGREE" | "DISAGREE" | "EUREKA" | "NO_COMMENT" | "SUPPORT" | "DISLIKE";
1407
+ createdAt: string;
1408
+ updatedAt: string;
1409
+ user?: User$2;
1410
+ };
1411
+ type CommentProps$2 = {
1412
+ id: string;
1413
+ userId: string;
1414
+ postId: string;
1415
+ answerId: string;
1416
+ content: string;
1417
+ imageUrl: string;
1418
+ createdAt: string;
1419
+ updatedAt: string;
1420
+ user: User$2;
1421
+ reactions: CommentReactionsProps$2[];
1422
+ totalReactions?: number;
1423
+ answers: CommentProps$2[];
1424
+ totalAnswers: number;
1425
+ page?: {
1426
+ id: string;
1427
+ name: string;
1428
+ slug: string;
1429
+ sector: string;
1430
+ };
1431
+ };
1432
+
1433
+ interface IUserDraft {
1434
+ id: string;
1435
+ content: string;
1436
+ title: string;
1437
+ isArticle: boolean;
1438
+ isDraft: boolean;
1439
+ user: {
1440
+ name: string;
1441
+ slug: string;
1442
+ };
1443
+ }
1444
+
1445
+ type Profile$2 = {
1446
+ id: string;
1447
+ name: string;
1448
+ avatar: string;
1449
+ role?: string;
1450
+ isPage?: boolean;
1451
+ };
1452
+ type ArticleViewMode = "create" | "view";
1453
+ type ArticleStep = "create" | "preview" | "published";
1454
+ type ArticleMedia = {
1455
+ id: string;
1456
+ url: string;
1457
+ type: "image" | "video";
1458
+ file?: File;
1459
+ };
1460
+
1461
+ type ArticleState = {
1462
+ title: string;
1463
+ content: string;
1464
+ post: Post$2 | null;
1465
+ selectedProfile: Profile$2 | null;
1466
+ media: ArticleMedia[];
1467
+ uploadedMedia: string[];
1468
+ isUploading: boolean;
1469
+ selectedHashtags: string[];
1470
+ viewMode: ArticleViewMode;
1471
+ currentStep: ArticleStep;
1472
+ isModalOpen: boolean;
1473
+ isSaved: boolean;
1474
+ isDraft: boolean;
1475
+ isPublishing: boolean;
1476
+ isSavingDraft: boolean;
1477
+ lastSavedAt: Date | null;
1478
+ currentDraftId: string | null;
1479
+ setTitle: (title: string) => void;
1480
+ setContent: (content: string) => void;
1481
+ setPost: (post: Post$2 | null) => void;
1482
+ setSelectedProfile: (profile: Profile$2 | null) => void;
1483
+ addMedia: (media: ArticleMedia) => void;
1484
+ removeMedia: (id: string) => void;
1485
+ setIsUploading: (isUploading: boolean) => void;
1486
+ toggleHashtag: (hashtagId: string) => void;
1487
+ setSelectedHashtags: (hashtags: string[]) => void;
1488
+ loadDraft: (draft: IUserDraft) => void;
1489
+ clearDraft: () => void;
1490
+ setCurrentDraftId: (id: string | null) => void;
1491
+ setViewMode: (mode: ArticleViewMode) => void;
1492
+ setCurrentStep: (step: ArticleStep) => void;
1493
+ openModal: () => void;
1494
+ closeModal: () => void;
1495
+ setIsSaved: (isSaved: boolean) => void;
1496
+ setIsPublishing: (isPublishing: boolean) => void;
1497
+ setIsSavingDraft: (isSavingDraft: boolean) => void;
1498
+ markAsSaved: () => void;
1499
+ resetArticle: () => void;
1500
+ };
1501
+ declare const useArticleStore: zustand.UseBoundStore<zustand.StoreApi<ArticleState>>;
1502
+
1503
+ declare const useArticleNavigation: () => {
1504
+ viewMode: ArticleViewMode;
1505
+ currentStep: ArticleStep;
1506
+ isModalOpen: boolean;
1507
+ goToCreate: () => void;
1508
+ goToPreview: () => void;
1509
+ goToPublished: () => void;
1510
+ openModal: () => void;
1511
+ closeModal: () => void;
1512
+ resetAndClose: () => void;
1513
+ };
1514
+
1515
+ interface ArticleViewerProps {
1516
+ content: string;
1517
+ }
1518
+ declare function ArticleViewer({ content }: ArticleViewerProps): React__default.JSX.Element;
1519
+
1520
+ declare const PostCardArticle: ({ src, title, content, isCompact, classImage, fontSize }: {
1521
+ src?: string;
1522
+ title?: string;
1523
+ content?: string;
1524
+ classImage?: string;
1525
+ fontSize?: string;
1526
+ isCompact?: boolean;
1527
+ }) => React__default.JSX.Element;
1528
+
1529
+ type ModalState = {
1530
+ isOpen: boolean;
1531
+ modalId: string | null;
1532
+ openModal: () => void;
1533
+ closeModal: () => void;
1534
+ toggleModal: () => void;
1535
+ };
1536
+ declare const useModalArticleStore: zustand.UseBoundStore<zustand.StoreApi<ModalState>>;
1537
+
1538
+ declare function CreatePostCard(): React__default.JSX.Element;
1539
+
1540
+ type Profile$1 = {
1541
+ id: string;
1542
+ name: string;
1543
+ avatar: string;
1544
+ role?: string;
1545
+ isPage?: boolean;
1546
+ };
1547
+
1548
+ type ModalStep = 'main' | 'select-profile' | 'schedule' | 'scheduled-posts' | 'post-actions-menu' | 'edit-scheduled-post';
1549
+ interface CreatePostContentProps {
1550
+ readonly currentStep: ModalStep;
1551
+ readonly selectedProfile: Profile$1 | null;
1552
+ readonly scheduledDate: Date | null;
1553
+ readonly selectedPostForAction: string | null;
1554
+ readonly isSubmitting: boolean;
1555
+ readonly isLoading: boolean;
1556
+ readonly onProfileSelect: (profile: Profile$1) => void;
1557
+ readonly onGoToProfileSelection: () => void;
1558
+ readonly onGoToSchedule: () => void;
1559
+ readonly onScheduleSelect: (date: Date) => void;
1560
+ readonly onBackToMain: () => void;
1561
+ readonly onScheduleMore: () => void;
1562
+ readonly onPostActions: (postId: string) => void;
1563
+ readonly onEditScheduledPost: (postId: string) => void;
1564
+ readonly onDeleteScheduledPost: (postId?: string) => void;
1565
+ readonly onEditPostSubmit: (postId: string, updatedDate?: Date | null, shouldUpdateScheduledAt?: boolean) => void;
1566
+ readonly onSubmit: (type: 'REEL' | 'NORMAL') => void;
1567
+ readonly onClose?: () => void;
1568
+ readonly shouldLoadScheduledPosts?: boolean;
1569
+ readonly onPostDeleted?: () => void;
1570
+ readonly onPostUpdated?: () => void;
1571
+ readonly showScheduleOption?: boolean;
1572
+ }
1573
+ declare function CreatePostContent(props: CreatePostContentProps): React__default.JSX.Element;
1574
+
1575
+ type CreatePostFormProps = {
1576
+ readonly onSubmit: (data: {
1577
+ content: string;
1578
+ media: string[];
1579
+ }) => void;
1580
+ readonly onScheduleClick?: () => void;
1581
+ readonly scheduledDate?: Date | null;
1582
+ readonly showScheduleOption?: boolean;
1583
+ readonly onViewScheduledPosts?: () => void;
1584
+ };
1585
+ declare function CreatePostForm({ onSubmit, onScheduleClick, scheduledDate, showScheduleOption, onViewScheduledPosts, }: CreatePostFormProps): React__default.JSX.Element;
1586
+
1587
+ interface IMention {
1588
+ id: string;
1589
+ mentionedId: string;
1590
+ mentionType: string;
1591
+ mentionedCommunity?: {
1592
+ slug: string;
1593
+ name: string;
1594
+ id: string;
1595
+ image: string;
1596
+ };
1597
+ mentionedPage?: {
1598
+ name: string;
1599
+ slug: string;
1600
+ logo: string;
1601
+ id: string;
1602
+ };
1603
+ mentionedUser?: {
1604
+ id: string;
1605
+ name: string;
1606
+ slug: string;
1607
+ avatar: string;
1608
+ };
1609
+ }
1610
+
1611
+ interface CreatePostFormState {
1612
+ content: string;
1613
+ isUploading: boolean;
1614
+ hashtags?: string[];
1615
+ setHashtags: (value?: string[]) => void;
1616
+ mentions?: IMention[];
1617
+ setMentions: (mentions?: IMention[]) => void;
1618
+ mentionedUsers?: User$4[];
1619
+ setMentionedUsers: (users?: User$4[]) => void;
1620
+ uploadedMedia: string[];
1621
+ selectedFiles: File[];
1622
+ currentAssets: {
1623
+ id: string;
1624
+ url: string;
1625
+ }[];
1626
+ assetsToDelete: {
1627
+ id: string;
1628
+ url: string;
1629
+ }[];
1630
+ setCurrentAssets: (assets: {
1631
+ id: string;
1632
+ url: string;
1633
+ }[]) => void;
1634
+ setContent: (content: string) => void;
1635
+ handleMediaUpload: (files: FileList | null, ignore?: boolean) => void;
1636
+ removeMedia: (index: number) => void;
1637
+ replaceMedia: (index: number, file: File) => void;
1638
+ resetForm: () => void;
1639
+ resetFormContent: () => void;
1640
+ isValid: boolean;
1641
+ isCreatingThePost: boolean;
1642
+ setIsCreatingThePost: (isCreatingThePost: boolean) => void;
1643
+ uploadProgress: number;
1644
+ setUploadProgress: (progress: number) => void;
1645
+ isProcessingPost: boolean;
1646
+ setIsProcessingPost: (isProcessing: boolean) => void;
1647
+ progressText: string;
1648
+ setProgressText: (text: string) => void;
1649
+ }
1650
+ declare const useCreatePostFormStore: zustand.UseBoundStore<zustand.StoreApi<CreatePostFormState>>;
1651
+
1652
+ interface CreatePostModalProps {
1653
+ inline?: boolean;
1654
+ }
1655
+ declare function CreatePostModal({ inline }: CreatePostModalProps): React__default.JSX.Element;
1656
+
1657
+ type Profile = {
1658
+ id: string;
1659
+ name: string;
1660
+ avatar: string;
1661
+ role?: string;
1662
+ };
1663
+ type CreatePostModalFiltersProps = {
1664
+ readonly selectedProfile?: Profile | null;
1665
+ readonly onProfileSelectClick: () => void;
1666
+ };
1667
+ declare function CreatePostModalFilters({ selectedProfile, onProfileSelectClick, }: CreatePostModalFiltersProps): React__default.JSX.Element;
1668
+
1669
+ interface CreatePostReelFormProps {
1670
+ onSubmit: (data: {
1671
+ content: string;
1672
+ media: string[];
1673
+ }) => void;
1674
+ }
1675
+ declare function CreatePostReelForm({ onSubmit }: CreatePostReelFormProps): React__default.JSX.Element;
1676
+
1677
+ type CreatePostScheduleStepProps = {
1678
+ readonly onBack: () => void;
1679
+ readonly onScheduleSelect: (scheduledDate: Date) => void;
1680
+ readonly onClose?: () => void;
1681
+ readonly initialDate?: Date;
1682
+ readonly onViewScheduledPosts?: () => void;
1683
+ };
1684
+ declare function CreatePostScheduleStep({ onBack, onScheduleSelect, onClose, initialDate, onViewScheduledPosts, }: CreatePostScheduleStepProps): React__default.JSX.Element;
1685
+
1686
+ type CreatePostToolbarProps = {
1687
+ readonly onMediaSelect?: (files: FileList | null) => void;
1688
+ readonly isForReels?: boolean;
1689
+ readonly onScheduleClick?: () => void;
1690
+ readonly onMentionClick?: () => void;
1691
+ readonly showScheduleOption?: boolean;
1692
+ readonly hasMedia?: boolean;
1693
+ readonly onEmojiSelect?: (emoji: string) => void;
1694
+ readonly onViewScheduledPosts?: () => void;
1695
+ readonly onSubmit?: (type: 'REEL' | 'NORMAL') => void;
1696
+ readonly postType?: string;
1697
+ };
1698
+ declare function CreatePostToolbar({ onMediaSelect, isForReels, onScheduleClick, onMentionClick, hasMedia, onEmojiSelect, onViewScheduledPosts, onSubmit, postType, }: CreatePostToolbarProps): React__default.JSX.Element;
1699
+
1700
+ type User$1 = {
1701
+ id?: string;
1702
+ name?: string;
1703
+ slug?: string;
1704
+ about?: string;
1705
+ email?: string;
1706
+ phone?: string;
1707
+ isOpenToWork?: boolean;
1708
+ gender?: string;
1709
+ banner?: string;
1710
+ isContact?: boolean;
1711
+ isFollowed?: boolean;
1712
+ isFollowedBy?: boolean;
1713
+ birthDate?: string;
1714
+ nationality?: string;
1715
+ headline?: string;
1716
+ country?: string;
1717
+ city?: string;
1718
+ street?: string;
1719
+ countryCode?: string;
1720
+ profession?: string;
1721
+ addresses?: {
1722
+ country?: string;
1723
+ city?: string;
1724
+ address?: string;
1725
+ }[];
1726
+ address?: {
1727
+ country?: string;
1728
+ city?: string;
1729
+ address?: string;
1730
+ };
1731
+ avatar?: string;
1732
+ avatarDisplay?: string;
1733
+ provider?: string;
1734
+ role?: string;
1735
+ status?: string;
1736
+ createdAt?: string;
1737
+ updatedAt?: string;
1738
+ isPublic?: boolean;
1739
+ currentCompany?: string;
1740
+ person?: IPerson$1;
1741
+ link?: string;
1742
+ links?: string[];
1743
+ };
1744
+ interface IPerson$1 {
1745
+ gender?: string;
1746
+ birthDate?: Date;
1747
+ nationality?: string;
1748
+ maritalStatus?: string;
1749
+ salaryExpectation?: string;
1750
+ countryCode?: string;
1751
+ }
1752
+
1753
+ type PostAttachmentProps$1 = {
1754
+ title?: string;
1755
+ description?: string;
1756
+ imageUrl?: string;
1757
+ url?: string;
1758
+ type: string;
1759
+ };
1760
+ type Post$1 = {
1761
+ user: User$1;
1762
+ postType: "NORMAL" | "REEL" | "ARTICLE";
1763
+ id: string;
1764
+ createdAt: string;
1765
+ scheduledAt?: string;
1766
+ bio: string;
1767
+ content: string;
1768
+ totalShares: number;
1769
+ totalReactions?: number;
1770
+ totalComments?: number;
1771
+ attachment?: PostAttachmentProps$1;
1772
+ isFollowed?: boolean;
1773
+ isContact?: boolean;
1774
+ isArticle?: boolean;
1775
+ isDraft?: boolean;
1776
+ expiresAt?: string | null;
1777
+ link: {
1778
+ title: string;
1779
+ description: string;
1780
+ imageUrl: string;
1781
+ url: string;
1782
+ };
1783
+ images: PostAssetProps$1[];
1784
+ videos: PostAssetProps$1[];
1785
+ reactions: PostReactionsProps$1[];
1786
+ comments: CommentProps$1[];
1787
+ sharedPostId: string;
1788
+ pageId?: string;
1789
+ page?: {
1790
+ id?: string;
1791
+ name?: string;
1792
+ slug?: string;
1793
+ sector?: string;
1794
+ banner?: string;
1795
+ logo?: string;
1796
+ site?: string;
1797
+ };
1798
+ media?: unknown;
1799
+ linkPreview?: unknown;
1800
+ visibility?: string;
1801
+ sharedPost: Post$1;
1802
+ currentUserReaction?: string;
1803
+ title?: string;
1804
+ stats?: {
1805
+ reactionCount?: number;
1806
+ commentCount?: number;
1807
+ shareCount?: number;
1808
+ };
1809
+ sharedContext?: unknown;
1810
+ mention?: IMention[];
1811
+ community?: {
1812
+ id: string;
1813
+ visibility: string;
1814
+ slug: string;
1815
+ banner?: string;
1816
+ createdAt?: string;
1817
+ description?: string;
1818
+ image?: string;
1819
+ location?: string;
1820
+ name: string;
1821
+ owner: {
1822
+ id: string;
1823
+ name: string;
1824
+ slug: string;
1825
+ email?: string;
1826
+ };
1827
+ ownerId: string;
1828
+ members?: {
1829
+ userId: string;
1830
+ user: {
1831
+ id: string;
1832
+ name: string;
1833
+ slug: string;
1834
+ };
1835
+ }[];
1836
+ };
1837
+ userId?: string;
1838
+ sharedInCommunity?: {
1839
+ id: string;
1840
+ slug: string;
1841
+ visibility: string;
1842
+ name: string;
1843
+ banner?: string;
1844
+ image?: string;
1845
+ location?: string;
1846
+ ownerId: string;
1847
+ owner: {
1848
+ id: string;
1849
+ slug: string;
1850
+ name: string;
1851
+ };
1852
+ };
1853
+ communityId?: string;
1854
+ };
1855
+ type PostAssetProps$1 = {
1856
+ id: string;
1857
+ url: string;
1858
+ type?: "image" | "video" | "pdf";
1859
+ createdAt?: string;
1860
+ };
1861
+ type PostReactionsProps$1 = {
1862
+ id: string;
1863
+ userId: string;
1864
+ postId: string;
1865
+ reaction: "LIKE" | "LOVE" | "HAHA" | "WOW" | "SAD" | "ANGRY" | "AGREE" | "DISAGREE" | "NO_COMMENT" | "EUREKA" | "SUPPORT";
1866
+ createdAt: string;
1867
+ updatedAt: string;
1868
+ user: User$1;
1869
+ };
1870
+ type CommentReactionsProps$1 = {
1871
+ id: string;
1872
+ userId: string;
1873
+ commentId: string;
1874
+ reaction: "LIKE" | "LOVE" | "HAHA" | "WOW" | "SAD" | "ANGRY" | "AGREE" | "DISAGREE" | "EUREKA" | "NO_COMMENT" | "SUPPORT" | "DISLIKE";
1875
+ createdAt: string;
1876
+ updatedAt: string;
1877
+ user?: User$1;
1878
+ };
1879
+ type CommentProps$1 = {
1880
+ id: string;
1881
+ userId: string;
1882
+ postId: string;
1883
+ answerId: string;
1884
+ content: string;
1885
+ imageUrl: string;
1886
+ createdAt: string;
1887
+ updatedAt: string;
1888
+ user: User$1;
1889
+ reactions: CommentReactionsProps$1[];
1890
+ totalReactions?: number;
1891
+ answers: CommentProps$1[];
1892
+ totalAnswers: number;
1893
+ page?: {
1894
+ id: string;
1895
+ name: string;
1896
+ slug: string;
1897
+ sector: string;
1898
+ };
1899
+ };
1900
+
1901
+ type PostType = "text" | "media" | "job" | "reel" | "schedule" | null;
1902
+ type InitialStep = "main" | "schedule" | "scheduled-posts" | null;
1903
+ interface CreatePostState {
1904
+ isOpen: boolean;
1905
+ post: Post$1 | undefined;
1906
+ setPost: (post: Post$1 | undefined) => void;
1907
+ postType: PostType;
1908
+ initialStep: InitialStep;
1909
+ openModal: (type?: PostType, step?: InitialStep) => void;
1910
+ closeModal: (preserveFormState?: boolean) => void;
1911
+ operation: "create" | "update";
1912
+ setOperation: (operation: "create" | "update") => void;
1913
+ setInitialStep: (step: InitialStep) => void;
1914
+ }
1915
+ declare const useCreatePostStore: zustand.UseBoundStore<zustand.StoreApi<CreatePostState>>;
1916
+
1917
+ type TMentionType = "user" | "page" | "community";
1918
+ type TMentionItem = {
1919
+ id?: string;
1920
+ name?: string;
1921
+ slug?: string;
1922
+ logo?: string;
1923
+ image?: string;
1924
+ avatar?: string;
1925
+ headline?: string;
1926
+ type?: TMentionType;
1927
+ };
1928
+
1929
+ type MentionableItem$1 = {
1930
+ id?: string;
1931
+ name?: string;
1932
+ slug?: string;
1933
+ image?: string;
1934
+ type?: 'user' | 'page' | 'community';
1935
+ originalData?: TMentionItem;
1936
+ };
1937
+
1938
+ declare function injectMentionUIDs(text: string, mentionedItems: MentionableItem$1[]): string;
1939
+
1940
+ type MentionableItem = {
1941
+ id?: string;
1942
+ name?: string;
1943
+ slug?: string;
1944
+ image?: string;
1945
+ type?: "user" | "page" | "community";
1946
+ originalData?: TMentionItem;
1947
+ };
1948
+
1949
+ interface MentionableTextareaRef {
1950
+ insertMention: () => void;
1951
+ focus: () => void;
1952
+ getEditor: () => HTMLDivElement | null;
1953
+ }
1954
+ type MentionableTextareaProps = {
1955
+ value: string;
1956
+ onChange: (value: string) => void;
1957
+ placeholder?: string;
1958
+ className?: string;
1959
+ disabled?: boolean;
1960
+ onMentionsChange?: (mentions: IMention[]) => void;
1961
+ onKeyDown?: React__default.KeyboardEventHandler<HTMLDivElement>;
1962
+ minHeight?: number;
1963
+ maxHeight?: number;
1964
+ initialMentions?: MentionableItem[];
1965
+ };
1966
+ declare const MentionableTextarea: React__default.ForwardRefExoticComponent<MentionableTextareaProps & React__default.RefAttributes<MentionableTextareaRef>>;
1967
+
1968
+ type User = {
1969
+ id?: string;
1970
+ name?: string;
1971
+ slug?: string;
1972
+ about?: string;
1973
+ email?: string;
1974
+ phone?: string;
1975
+ isOpenToWork?: boolean;
1976
+ gender?: string;
1977
+ banner?: string;
1978
+ isContact?: boolean;
1979
+ isFollowed?: boolean;
1980
+ isFollowedBy?: boolean;
1981
+ birthDate?: string;
1982
+ nationality?: string;
1983
+ headline?: string;
1984
+ country?: string;
1985
+ city?: string;
1986
+ street?: string;
1987
+ countryCode?: string;
1988
+ profession?: string;
1989
+ addresses?: {
1990
+ country?: string;
1991
+ city?: string;
1992
+ address?: string;
1993
+ }[];
1994
+ address?: {
1995
+ country?: string;
1996
+ city?: string;
1997
+ address?: string;
1998
+ };
1999
+ avatar?: string;
2000
+ avatarDisplay?: string;
2001
+ provider?: string;
2002
+ role?: string;
2003
+ status?: string;
2004
+ createdAt?: string;
2005
+ updatedAt?: string;
2006
+ isPublic?: boolean;
2007
+ currentCompany?: string;
2008
+ person?: IPerson;
2009
+ link?: string;
2010
+ links?: string[];
2011
+ };
2012
+ interface IPerson {
2013
+ gender?: string;
2014
+ birthDate?: Date;
2015
+ nationality?: string;
2016
+ maritalStatus?: string;
2017
+ salaryExpectation?: string;
2018
+ countryCode?: string;
2019
+ }
2020
+ type PostAttachmentProps = {
2021
+ title?: string;
2022
+ description?: string;
2023
+ imageUrl?: string;
2024
+ url?: string;
2025
+ slug?: string;
2026
+ type: string;
2027
+ };
2028
+ type Post = {
2029
+ user: User;
2030
+ postType: "NORMAL" | "REEL";
2031
+ id: string;
2032
+ slug: string;
2033
+ createdAt: string;
2034
+ scheduledAt?: string;
2035
+ bio: string;
2036
+ content: string;
2037
+ totalShares: number;
2038
+ totalReactions?: number;
2039
+ totalComments?: number;
2040
+ attachment?: PostAttachmentProps;
2041
+ isFollowed?: boolean;
2042
+ isContact?: boolean;
2043
+ isArticle?: boolean;
2044
+ expiresAt?: string | null;
2045
+ link: {
2046
+ title: string;
2047
+ description: string;
2048
+ imageUrl: string;
2049
+ url: string;
2050
+ slug: string;
2051
+ };
2052
+ images: PostAssetProps[];
2053
+ videos: PostAssetProps[];
2054
+ reactions: PostReactionsProps[];
2055
+ comments: CommentProps[];
2056
+ sharedPostId: string;
2057
+ page?: {
2058
+ id?: string;
2059
+ name?: string;
2060
+ slug?: string;
2061
+ sector?: string;
2062
+ banner?: string;
2063
+ logo?: string;
2064
+ site?: string;
2065
+ };
2066
+ media?: unknown;
2067
+ linkPreview?: unknown;
2068
+ visibility?: string;
2069
+ sharedPost: Post;
2070
+ title?: string;
2071
+ stats?: {
2072
+ reactionCount?: number;
2073
+ commentCount?: number;
2074
+ shareCount?: number;
2075
+ };
2076
+ sharedContext?: unknown;
2077
+ mention?: {
2078
+ id: string;
2079
+ mentionedId: string;
2080
+ mentioned: User;
2081
+ }[];
2082
+ community?: {
2083
+ id: string;
2084
+ visibility: string;
2085
+ slug: string;
2086
+ banner?: string;
2087
+ createdAt?: string;
2088
+ description?: string;
2089
+ image?: string;
2090
+ location?: string;
2091
+ name: string;
2092
+ owner: {
2093
+ id: string;
2094
+ name: string;
2095
+ slug: string;
2096
+ email?: string;
2097
+ };
2098
+ ownerId: string;
2099
+ members?: {
2100
+ userId: string;
2101
+ user: {
2102
+ id: string;
2103
+ name: string;
2104
+ slug: string;
2105
+ };
2106
+ }[];
2107
+ };
2108
+ userId?: string;
2109
+ sharedInCommunity?: {
2110
+ id: string;
2111
+ slug: string;
2112
+ visibility: string;
2113
+ name: string;
2114
+ banner?: string;
2115
+ image?: string;
2116
+ location?: string;
2117
+ ownerId: string;
2118
+ owner: {
2119
+ id: string;
2120
+ slug: string;
2121
+ name: string;
2122
+ };
2123
+ };
2124
+ communityId?: string;
2125
+ };
2126
+ type PostAssetProps = {
2127
+ id: string;
2128
+ url: string;
2129
+ type?: "image" | "video" | "pdf";
2130
+ createdAt?: string;
2131
+ };
2132
+ type PostReactionsProps = {
2133
+ id: string;
2134
+ userId: string;
2135
+ postId: string;
2136
+ reaction: "LIKE" | "LOVE" | "HAHA" | "WOW" | "SAD" | "ANGRY";
2137
+ createdAt: string;
2138
+ updatedAt: string;
2139
+ user: User;
2140
+ };
2141
+ type CommentReactionsProps = {
2142
+ id: string;
2143
+ userId: string;
2144
+ commentId: string;
2145
+ reaction: "LIKE" | "LOVE" | "HAHA" | "AGREE" | "DISLIKE" | "EUREKA" | "NO_COMMENT" | "SUPPORT";
2146
+ createdAt: string;
2147
+ updatedAt: string;
2148
+ user?: User;
2149
+ };
2150
+ type CommentProps = {
2151
+ id: string;
2152
+ userId: string;
2153
+ postId: string;
2154
+ answerId: string;
2155
+ content: string;
2156
+ imageUrl: string;
2157
+ createdAt: string;
2158
+ updatedAt: string;
2159
+ user: User;
2160
+ reactions: CommentReactionsProps[];
2161
+ totalReactions?: number;
2162
+ answers: CommentProps[];
2163
+ totalAnswers: number;
2164
+ page?: {
2165
+ id: string;
2166
+ name: string;
2167
+ slug: string;
2168
+ sector: string;
2169
+ };
2170
+ };
2171
+
2172
+ interface RepostFlowTriggerProps {
2173
+ post: Post;
2174
+ className?: string;
2175
+ }
2176
+ declare function RepostFlowTrigger({ post, className }: RepostFlowTriggerProps): React__default.JSX.Element;
2177
+
2178
+ interface ShareFlowTriggerProps {
2179
+ post: Post;
2180
+ className?: string;
2181
+ }
2182
+ declare function ShareFlowTrigger({ post, className }: ShareFlowTriggerProps): React__default.JSX.Element;
2183
+
2184
+ interface SavedItemsStoreProps {
2185
+ isOpen: boolean;
2186
+ openModal: () => void;
2187
+ closeModal: () => void;
2188
+ toggleModal: () => void;
2189
+ }
2190
+ declare const useSavedItemsStore: zustand.UseBoundStore<zustand.StoreApi<SavedItemsStoreProps>>;
2191
+
2192
+ declare function GradientModal({ onClose, children, isOpen, className, contentClassName, showGradient, }: {
2193
+ onClose: () => void;
2194
+ children: React__default.ReactNode;
2195
+ isOpen: boolean;
2196
+ className?: string;
2197
+ contentClassName?: string;
2198
+ showGradient?: boolean;
2199
+ }): React__default.JSX.Element;
2200
+
2201
+ type OportunityType = "jobs" | "candidancies" | null;
2202
+ interface OportunitiesState {
2203
+ openType: OportunityType;
2204
+ setOpenType: (type: OportunityType) => void;
2205
+ reset: () => void;
2206
+ }
2207
+ declare const useOportunitiesStore: zustand.UseBoundStore<zustand.StoreApi<OportunitiesState>>;
2208
+
2209
+ interface ICreateCompanyModalProps {
2210
+ isOpen: boolean;
2211
+ onClose: () => void;
2212
+ }
2213
+
2214
+ declare function CreateCompany({ isOpen, onClose }: ICreateCompanyModalProps): React__default.JSX.Element;
2215
+
2216
+ declare function PagesFeedTrigger({ onClick }: {
2217
+ onClick?: (e: React__default.MouseEvent) => void;
2218
+ }): React__default.JSX.Element;
2219
+
2220
+ declare function Header({ className }: {
2221
+ className?: string;
2222
+ }): React__default.JSX.Element;
2223
+
2224
+ interface CandidaciesTriggerState {
2225
+ isCandidaciesOpen: boolean;
2226
+ openCandidacies: () => void;
2227
+ closeCandidacies: () => void;
2228
+ toggleCandidacies: () => void;
2229
+ }
2230
+ declare const useCandidaciesTriggerStore: zustand.UseBoundStore<zustand.StoreApi<CandidaciesTriggerState>>;
2231
+
2232
+ interface JobTriggerState {
2233
+ isJobOpen: boolean;
2234
+ openJob: () => void;
2235
+ closeJob: () => void;
2236
+ toggleJob: () => void;
2237
+ }
2238
+ declare const useJobTriggerStore: zustand.UseBoundStore<Omit<zustand.StoreApi<JobTriggerState>, "setState" | "persist"> & {
2239
+ setState(partial: JobTriggerState | Partial<JobTriggerState> | ((state: JobTriggerState) => JobTriggerState | Partial<JobTriggerState>), replace?: false | undefined): unknown;
2240
+ setState(state: JobTriggerState | ((state: JobTriggerState) => JobTriggerState), replace: true): unknown;
2241
+ persist: {
2242
+ setOptions: (options: Partial<zustand_middleware.PersistOptions<JobTriggerState, unknown, unknown>>) => void;
2243
+ clearStorage: () => void;
2244
+ rehydrate: () => Promise<void> | void;
2245
+ hasHydrated: () => boolean;
2246
+ onHydrate: (fn: (state: JobTriggerState) => void) => () => void;
2247
+ onFinishHydration: (fn: (state: JobTriggerState) => void) => () => void;
2248
+ getOptions: () => Partial<zustand_middleware.PersistOptions<JobTriggerState, unknown, unknown>>;
2249
+ };
2250
+ }>;
2251
+
2252
+ type TLocale = "pt" | "en" | "fr";
2253
+ type ToastVariant = "error" | "warning" | "info";
2254
+ interface IMirantesErrorHandlerConfig {
2255
+ onRedirect?: (path: string) => void;
2256
+ onLogout?: () => void;
2257
+ onRetry?: () => void;
2258
+ onCriticalError?: (title: string, message: string) => void;
2259
+ locale?: TLocale;
2260
+ }
2261
+
2262
+ interface MirantesErrorBoundaryProps {
2263
+ children: React__default.ReactNode;
2264
+ locale?: TLocale;
2265
+ fallback?: React__default.ReactNode | ((error: Error, reset: () => void) => React__default.ReactNode);
2266
+ onError?: (error: Error, info: React__default.ErrorInfo) => void;
2267
+ }
2268
+ interface MirantesErrorBoundaryState {
2269
+ hasError: boolean;
2270
+ error: Error | null;
2271
+ }
2272
+ declare class MirantesErrorBoundary extends React__default.Component<MirantesErrorBoundaryProps, MirantesErrorBoundaryState> {
2273
+ constructor(props: MirantesErrorBoundaryProps);
2274
+ static getDerivedStateFromError(error: Error): MirantesErrorBoundaryState;
2275
+ componentDidCatch(error: Error, info: React__default.ErrorInfo): void;
2276
+ handleReset(): void;
2277
+ render(): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | React__default.JSX.Element | null | undefined;
2278
+ }
2279
+
2280
+ declare function setErrorConfig(newConfig: IMirantesErrorHandlerConfig): void;
2281
+ declare function getErrorConfig(): IMirantesErrorHandlerConfig | null;
2282
+ declare function clearErrorConfig(): void;
2283
+
2284
+ declare function handleError(error: unknown, toastFunctions?: {
2285
+ errorToast: (props: {
2286
+ title: string;
2287
+ message?: string;
2288
+ actionLabel?: string;
2289
+ onAction?: () => void;
2290
+ }) => void;
2291
+ warningToast: (props: {
2292
+ title: string;
2293
+ message?: string;
2294
+ }) => void;
2295
+ infoToast: (props: {
2296
+ title: string;
2297
+ message?: string;
2298
+ }) => void;
2299
+ }): void;
2300
+ declare function handleAxiosError(error: any, toastFunctions?: any): void;
2301
+ declare function handleGraphQLError(error: any, toastFunctions?: any): void;
2302
+
2303
+ declare function useErrorHandler(): {
2304
+ handleError: (error: unknown) => void;
2305
+ handleAxiosError: (error: any) => void;
2306
+ handleGraphQLError: (error: any) => void;
2307
+ };
2308
+ declare function useAxiosErrorInterceptor(axiosInstance?: AxiosInstance): void;
2309
+
2310
+ interface MirantesChatButtonProps {
2311
+ forMobile?: boolean;
2312
+ chatForPage?: boolean;
2313
+ }
2314
+ declare function MirantesChatButton({ forMobile, chatForPage, }: MirantesChatButtonProps): React__default.JSX.Element;
2315
+
2316
+ declare function useOpenChat(): {
2317
+ isChatVisible: boolean;
2318
+ isToSendMessageToPage: boolean;
2319
+ toggleChat: () => void;
2320
+ openChat: (sendMessageToPage?: boolean) => void;
2321
+ closeChat: () => void;
2322
+ };
2323
+
2324
+ interface IndexProps {
2325
+ chatForPage?: boolean;
2326
+ isCompactMode?: boolean;
2327
+ }
2328
+ declare const Index: ({ chatForPage, isCompactMode }: IndexProps) => React__default.JSX.Element;
2329
+
2330
+ declare const MirantesPDFViewer: ({ url, className, }: {
2331
+ url?: string;
2332
+ className?: string;
2333
+ }) => React__default.JSX.Element;
2334
+
2335
+ interface CalendarProps {
2336
+ locale?: "pt" | "fr" | "en";
2337
+ onMarkAsUnavailable?: () => void;
2338
+ isModalOpen?: boolean;
2339
+ onClose?: () => void;
2340
+ calendarCardClassName?: string;
2341
+ }
2342
+ declare function Calendar({ onMarkAsUnavailable, isModalOpen, onClose, calendarCardClassName, }: CalendarProps): React__default.JSX.Element;
2343
+
2344
+ interface PageFloatFooterProps {
2345
+ /**
2346
+ * Callback chamado quando o botão de adicionar é clicado.
2347
+ * Se fornecido, será usado em vez do comportamento padrão.
2348
+ */
2349
+ onAddClick?: () => void;
2350
+ }
2351
+ declare function PageFloatFooter({ onAddClick }: PageFloatFooterProps): React__default.JSX.Element;
2352
+
2353
+ interface ControlButtonsProps {
2354
+ onPrevious: () => void;
2355
+ onNext: () => void;
2356
+ canGoPrevious: boolean;
2357
+ canGoNext: boolean;
2358
+ }
2359
+ declare const ControlButtons: ({ onPrevious, onNext, canGoPrevious, canGoNext }: ControlButtonsProps) => React__default.JSX.Element;
2360
+
2361
+ interface PdfFooterProps {
2362
+ currentPage: number;
2363
+ numPages: number;
2364
+ pdfUrl: string;
2365
+ isHovered: boolean;
2366
+ onToggleFullscreen?: () => void;
2367
+ variant?: 'default' | 'fullscreen';
2368
+ zoom?: number;
2369
+ onZoomIn?: () => void;
2370
+ onZoomOut?: () => void;
2371
+ }
2372
+ declare const PdfFooter: ({ currentPage, numPages, pdfUrl, isHovered, onToggleFullscreen, variant, zoom, onZoomIn, onZoomOut }: PdfFooterProps) => React__default.JSX.Element;
2373
+
2374
+ interface PdfFullscreenViewProps {
2375
+ pdfUrl: string;
2376
+ pdfUrlWithPage: string;
2377
+ currentPage: number;
2378
+ numPages: number;
2379
+ pdfName: string;
2380
+ zoom: number;
2381
+ onClose: () => void;
2382
+ onDownload: () => void;
2383
+ onOpenAccessibility: () => void;
2384
+ onZoomIn: () => void;
2385
+ onZoomOut: () => void;
2386
+ onPreviousPage: () => void;
2387
+ onNextPage: () => void;
2388
+ canGoPrevious: boolean;
2389
+ canGoNext: boolean;
2390
+ }
2391
+ declare const PdfFullscreenView: ({ pdfUrl, pdfUrlWithPage, currentPage, numPages, pdfName, zoom, onClose, onDownload, onOpenAccessibility, onZoomIn, onZoomOut, onPreviousPage, onNextPage, canGoPrevious, canGoNext, }: PdfFullscreenViewProps) => React__default.ReactPortal | null;
2392
+
2393
+ interface PdfReaderProps {
2394
+ pdfUrl?: string;
2395
+ totalPages?: number;
2396
+ pdfName?: string;
2397
+ className?: string;
2398
+ onMaximizeClicked?: () => void;
2399
+ }
2400
+ declare const PdfReader: ({ pdfUrl, totalPages: initialTotalPages, pdfName: initialPdfName, className, onMaximizeClicked }: PdfReaderProps) => React__default.JSX.Element;
2401
+
2402
+ interface PdfReaderHeaderProps {
2403
+ pdfName: string;
2404
+ currentPage: number;
2405
+ numPages: number;
2406
+ isHovered: boolean;
2407
+ variant?: 'default' | 'fullscreen';
2408
+ onOpenAccessibility?: () => void;
2409
+ onDownload?: () => void;
2410
+ onClose?: () => void;
2411
+ }
2412
+ declare const PdfReaderHeader: ({ pdfName, currentPage, numPages, isHovered, variant, onOpenAccessibility, onDownload, onClose }: PdfReaderHeaderProps) => React__default.JSX.Element;
2413
+
2414
+ interface ProgressBarProps {
2415
+ currentPage: number;
2416
+ totalPages: number;
2417
+ }
2418
+ declare const ProgressBar: ({ currentPage, totalPages }: ProgressBarProps) => React__default.JSX.Element;
2419
+
2420
+ declare function OpenClipsButton(): React__default.JSX.Element;
2421
+
2422
+ declare function PostTriggerModal(props: any): React__default.JSX.Element | null;
2423
+
2424
+ declare function PostBackgroundManager({ displayMode, }: {
2425
+ displayMode?: "inline" | "floating";
2426
+ }): React__default.JSX.Element;
2427
+
2428
+ type TActions = "media" | "clips" | "saved-items" | "articles" | "mention" | "create-a-job" | "schedule-a-post";
2429
+
2430
+ declare function PostTrigger({ community, type: initialType, restrictProfileSelection, optimisticUpdateType, hiddenOptions, onClickAction, processModeDisplay, typeRender, }: {
2431
+ processModeDisplay?: "floating" | "inline";
2432
+ typeRender?: {
2433
+ render?: "input" | "button";
2434
+ buttonClassName?: string;
2435
+ buttonText?: string;
2436
+ };
2437
+ type?: "page" | "user" | "community";
2438
+ restrictProfileSelection?: boolean;
2439
+ optimisticUpdateType: "profile" | "pages" | "community" | "feed" | "feed-with-go";
2440
+ hiddenOptions?: TActions[];
2441
+ onClickAction: (action: "clips" | "saved-items" | "articles") => void;
2442
+ community?: {
2443
+ id?: string;
2444
+ name?: string;
2445
+ logo?: string;
2446
+ sector?: string;
2447
+ };
2448
+ }): React__default.JSX.Element;
2449
+
2450
+ declare const useApiCheckRater: ({ userId, pageId, communityId, forAPage, inView, }: {
2451
+ userId?: string;
2452
+ pageId?: string;
2453
+ communityId?: string;
2454
+ forAPage?: boolean;
2455
+ inView?: boolean;
2456
+ }) => {
2457
+ hasRated: boolean;
2458
+ isCheckingRater: boolean;
2459
+ error: Error | null;
2460
+ };
2461
+
2462
+ type AddRatingProps = {
2463
+ enableTitle?: boolean;
2464
+ variantStars?: "large" | "small" | "medium";
2465
+ starSize?: {
2466
+ width: number;
2467
+ height: number;
2468
+ };
2469
+ forAPage?: boolean;
2470
+ receiverPageId?: string;
2471
+ receiverUserId?: string;
2472
+ receiverCommunityId?: string;
2473
+ className?: string;
2474
+ isCommunity?: boolean;
2475
+ variant?: "default" | "feed" | "only-one-card";
2476
+ userSlug?: string;
2477
+ pageSlug?: string;
2478
+ communitySlug?: string;
2479
+ align?: "left" | "center" | "right";
2480
+ };
2481
+ declare function AddRating({ enableTitle, variantStars, starSize, forAPage, receiverPageId, receiverUserId, receiverCommunityId, className, isCommunity, variant, userSlug, pageSlug, communitySlug, align, }: AddRatingProps): React__default.JSX.Element;
2482
+
2483
+ type AvatarRatingBadgeProps = {
2484
+ name?: string;
2485
+ src?: string;
2486
+ rating: number;
2487
+ asPage?: boolean;
2488
+ isCommunity?: boolean;
2489
+ className?: string;
2490
+ slug?: string;
2491
+ };
2492
+ declare function AvatarRatingBadge({ name, asPage, src, rating, isCommunity, className, slug, }: AvatarRatingBadgeProps): React__default.JSX.Element;
2493
+
2494
+ declare function RatingReviewsList({ variant, forPage, receiverPageId, receiverUserId, receiverCommunityId, inlinePreview, onOpenAllRatings, externalError, }: {
2495
+ variant?: "maximized" | "minimized";
2496
+ forPage?: boolean;
2497
+ receiverUserId?: string;
2498
+ receiverPageId?: string;
2499
+ receiverCommunityId?: string;
2500
+ inlinePreview?: boolean;
2501
+ onOpenAllRatings?: () => void;
2502
+ externalError?: unknown;
2503
+ }): React__default.JSX.Element | null;
2504
+
2505
+ interface IRatingsCardProps {
2506
+ isCurrentPageOrProfile?: boolean;
2507
+ userId?: string;
2508
+ pageId?: string;
2509
+ communityId?: string;
2510
+ forAPage?: boolean;
2511
+ currentUserId?: string;
2512
+ pageSlug?: string;
2513
+ userSlug?: string;
2514
+ communitySlug?: string;
2515
+ }
2516
+ type TRatingUserCard = {
2517
+ user: {
2518
+ name: string;
2519
+ profession: string;
2520
+ avatar?: string;
2521
+ isOwner?: boolean;
2522
+ slug?: string;
2523
+ };
2524
+ anonymous?: boolean;
2525
+ rating: number;
2526
+ userRating: number;
2527
+ comment: string;
2528
+ createdAt: string | Date;
2529
+ };
2530
+
2531
+ declare function RatingUserCard({ user, rating, userRating, comment, createdAt, anonymous, }: TRatingUserCard): React__default.JSX.Element;
2532
+
2533
+ interface RattingSuggestionCardProps {
2534
+ asPage?: boolean;
2535
+ page?: {
2536
+ slug?: string;
2537
+ id?: string;
2538
+ sector?: string;
2539
+ logo?: string;
2540
+ rating?: number;
2541
+ totalRatings?: number;
2542
+ };
2543
+ user?: {
2544
+ avatar?: string;
2545
+ name?: string;
2546
+ id?: string;
2547
+ headline?: string;
2548
+ slug?: string;
2549
+ rating?: number;
2550
+ totalRatings?: number;
2551
+ };
2552
+ renderFollowButton?: ReactNode;
2553
+ averageRatingScore?: number;
2554
+ }
2555
+ declare function RattingSuggestionCard({ asPage, page, user, renderFollowButton, averageRatingScore, }: RattingSuggestionCardProps): React__default.JSX.Element;
2556
+
2557
+ declare function RatingsSummary({ variant, asPage, receiverUserId, receiverPageId, receiverCommunityId }: {
2558
+ variant?: "maximized" | "minimized";
2559
+ asPage?: boolean;
2560
+ receiverUserId?: string;
2561
+ receiverPageId?: string;
2562
+ receiverCommunityId?: string;
2563
+ }): React__default.JSX.Element;
2564
+
2565
+ interface ShareProfileDivProps extends RattingSuggestionCardProps {
2566
+ className?: string;
2567
+ }
2568
+ declare function ShareProfile({ asPage, page, user, className, }: ShareProfileDivProps): React__default.JSX.Element;
2569
+
2570
+ interface ShareProfileButtonProps {
2571
+ onClick: () => void;
2572
+ }
2573
+ declare function ShareProfileButton({ onClick }: ShareProfileButtonProps): React__default.JSX.Element;
2574
+
2575
+ interface ShareProfileModalProps extends RattingSuggestionCardProps {
2576
+ isOpen: boolean;
2577
+ onClose: () => void;
2578
+ }
2579
+ declare function ShareProfileModal({ asPage, page, user, isOpen, onClose, }: ShareProfileModalProps): React__default.JSX.Element;
2580
+
2581
+ declare function RatingsCard({ isCurrentPageOrProfile, pageId, userId, communityId, variant, forAPage, currentUserId, className, userSlug, pageSlug, communitySlug, }: IRatingsCardProps & {
2582
+ variant?: "maximized" | "minimized";
2583
+ className?: string;
2584
+ userSlug?: string;
2585
+ pageSlug?: string;
2586
+ communitySlug?: string;
2587
+ }): React__default.JSX.Element;
2588
+
2589
+ type TReaction = "AGREE" | "SUPPORT" | "EUREKA" | "NO_COMMENT" | "DISAGREE";
2590
+ type TReactionsFor = "feed" | "comments" | "profile" | "pages" | "communities";
2591
+ type TReactionPostSnapshot = {
2592
+ id?: string;
2593
+ totalReactions?: number;
2594
+ currentUserReaction?: string | null;
2595
+ myReaction?: string | null;
2596
+ reactions?: Array<{
2597
+ reaction?: string;
2598
+ userId?: string;
2599
+ }>;
2600
+ metrics?: {
2601
+ reactions?: Array<{
2602
+ type?: string;
2603
+ count?: number;
2604
+ }>;
2605
+ };
2606
+ };
2607
+ type TReactionsButtonProps = {
2608
+ className?: string;
2609
+ currentReaction?: TReaction | null;
2610
+ totalReactions?: number;
2611
+ topReactions?: TReaction[];
2612
+ /** When set (e.g. feed post), totals and top badges are derived from this object and stay in sync after optimistic updates. */
2613
+ post?: TReactionPostSnapshot;
2614
+ reactionsFor?: TReactionsFor;
2615
+ isGettingReactions?: boolean;
2616
+ postId?: string;
2617
+ commentId?: string;
2618
+ /** Profile feed cache (`postsByUser`) when `reactionsFor` is `"profile"`. */
2619
+ profileUserId?: string;
2620
+ /** Page posts cache (`post-page`) when `reactionsFor` is `"pages"`. */
2621
+ pageId?: string;
2622
+ };
2623
+
2624
+ declare function ReactionButton({ reactionsFor, currentReaction, isGettingReactions, topReactions, totalReactions, post, postId, commentId, profileUserId, pageId, className, }: TReactionsButtonProps): React__default.JSX.Element;
2625
+
2626
+ declare function getPostReactionSummary(post: TReactionPostSnapshot, options?: {
2627
+ fallbackTop?: TReaction[];
2628
+ fallbackTotal?: number;
2629
+ userId?: string;
2630
+ }): {
2631
+ totalReactions: number;
2632
+ topReactions: TReaction[];
2633
+ currentReaction: TReaction | null;
2634
+ };
2635
+ declare function applyOptimisticReactionToSnapshot(snapshot: TReactionPostSnapshot, postId: string, reaction: TReaction, userId: string, userInfo: {
2636
+ id: string;
2637
+ name: string;
2638
+ email: string;
2639
+ avatar: string;
2640
+ slug: string;
2641
+ headline: string;
2642
+ }): TReactionPostSnapshot;
2643
+
2644
+ type ReactionType = {
2645
+ emoji: ReactNode;
2646
+ id: string;
2647
+ label: string;
2648
+ };
2649
+
2650
+ type ReactionMetric = {
2651
+ type?: string;
2652
+ count?: number;
2653
+ };
2654
+ type ReactPostButtonProps = {
2655
+ post: Post$2;
2656
+ hideLabel?: boolean;
2657
+ className?: string;
2658
+ orientation?: "vertical" | "horizontal";
2659
+ compact?: boolean;
2660
+ currentReaction?: string | null;
2661
+ totalReactions?: number;
2662
+ reactions?: Post$2["reactions"];
2663
+ optimisticReactions?: PostReactionsProps$2[];
2664
+ topReactions?: ReactionType[];
2665
+ metrics?: {
2666
+ reactions?: ReactionMetric[];
2667
+ } | ReactionMetric[];
2668
+ };
2669
+ declare function ReactPostButton({ post, hideLabel, className, orientation, compact, currentReaction: currentReactionOverride, totalReactions: totalReactionsOverride, reactions: reactionsOverride, optimisticReactions: optimisticReactionsOverride, topReactions: topReactionsOverride, metrics, }: ReactPostButtonProps): JSX.Element;
2670
+
2671
+ type DrawerSide = 'bottom' | 'right';
2672
+ interface ResponsiveDrawerProps {
2673
+ isOpen: boolean;
2674
+ onClose: () => void;
2675
+ children: React__default.ReactNode;
2676
+ className?: string;
2677
+ fullWidth?: boolean;
2678
+ title?: string;
2679
+ header?: React__default.ReactNode;
2680
+ footer?: React__default.ReactNode;
2681
+ side?: DrawerSide;
2682
+ }
2683
+ declare const ResponsiveDrawer: React__default.FC<ResponsiveDrawerProps>;
2684
+
2685
+ declare function Spinner({ className }: {
2686
+ className?: string;
2687
+ }): React__default.JSX.Element;
2688
+
2689
+ interface SalaryInputWithButtonProps {
2690
+ label?: string;
2691
+ value?: {
2692
+ amount: string;
2693
+ currency: string;
2694
+ };
2695
+ onChange?: (val: {
2696
+ amount: string;
2697
+ currency: string;
2698
+ }) => void;
2699
+ onGenerate?: () => void;
2700
+ placeholder?: string;
2701
+ disabled?: boolean;
2702
+ className?: string;
2703
+ buttonLabel?: string;
2704
+ }
2705
+ declare function SalaryInputWithButton({ label, value, onChange, onGenerate, placeholder, disabled, className, buttonLabel, }: SalaryInputWithButtonProps): React__default.JSX.Element;
2706
+
2707
+ interface SharePostModalProps {
2708
+ isOpen: boolean;
2709
+ onClose: () => void;
2710
+ post: Post;
2711
+ isProfileLink?: boolean;
2712
+ variant?: "share" | "repost";
2713
+ postCardComponent?: React__default.ReactNode | JSX.Element;
2714
+ }
2715
+ declare const SharePostModal: ({ isOpen, onClose, post, variant, isProfileLink, postCardComponent, }: SharePostModalProps) => JSX.Element;
2716
+
2717
+ declare function getInitials(fullName: string): string;
2718
+
2719
+ declare function joinUrlWithPathAndQuery(baseUrl: string, path: string, query?: Record<string, string>): string;
2720
+
2721
+ declare function broadcastLogout(): void;
2722
+ declare function onLogout(callback: () => void): void;
2723
+ declare function closeLogoutChannel(): void;
2724
+
2725
+ declare function stringToObj<T>(inputString: string, separator: string): T | undefined;
2726
+
2727
+ type MobileWorkspaceBarProps = {
2728
+ onCreatePost?: () => void;
2729
+ onCreateReel?: () => void;
2730
+ onCreateJob?: () => void;
2731
+ onJobsClick?: () => void;
2732
+ };
2733
+ declare function MobileWorkspaceBar({ onCreateJob, }: MobileWorkspaceBarProps): React__default.JSX.Element;
2734
+
2735
+ declare function WorkspacePanel(): React__default.JSX.Element;
2736
+
2737
+ export { ActivateAccountModal, AddRating, AddressAutocompleteInput, AnimatedModal, ArticleContent, ArticleViewer, AutoComponent, AutoDownloadBanner, AvatarRatingBadge, BaseInput, Button, ChatContacts, ChatListWrapper, ChatView, ChatViewDesktopPage, CheckBoxInput, closeLogoutChannel as CloseLogoutChannel, ContactsModal, ControlButtons, CountryDisplay, CountryInput, CreateCompany, CreatePostCard, CreatePostContent, CreatePostForm, CreatePostModal, CreatePostModalFilters, CreatePostReelForm, CreatePostScheduleStep, CreatePostToolbar, CustomDateInput, CustomDrawer, CustomDropdown, MirantesModal as CustomMirantesModal, CustomSelectInput, DateInput, DownloadMobileVersionBanner, DownloadModalTrigger, EmojiPickerButton, GradientModal, Header, type IMirantesErrorHandlerConfig, MentionableTextarea, MessageButton, MessagesButtonFromPage, MirantesButton, Index as MirantesChatApp, MirantesChatButton, MirantesErrorBoundary, MirantesFoundationProvider, MirantesPDFViewer, ResponsiveDrawer as MirantesResponsiveDrawer, MirantesSheets, MobileWorkspaceBar, NoRecruitmentResponsiveIlustration, onLogout as Onlogout, OpenClipsButton, PageChatContent, PageChatContentHeader, PageChatInput, PageChatList, PageChatListWrapper, PageChatUserSuggestions, PageFloatFooter, PageMessageWrapper, PagesFeedTrigger, PdfFooter, PdfFullscreenView, PdfReader, PdfReaderHeader, PostBackgroundManager, PostCardArticle, PostTrigger, PostTriggerModal, ProgressBar, RadioButtonInput, RatingReviewsList, RatingUserCard, RatingsCard, RatingsSummary, RattingSuggestionCard, ReactPostButton, ReactionButton, RepostFlowTrigger, ResponsiveDrawer$1 as ResponsiveDrawer, SalaryInputWithButton, Calendar as ScheduleCalendar, ShareFlowTrigger, SharePostModal, ShareProfile, ShareProfileButton, ShareProfileModal, Spinner, type TReactionPostSnapshot, type ToastVariant, TripleInputDate, PostBackgroundManager as UploadProgressManager, WorkspacePanel, applyOptimisticReactionToSnapshot, broadcastLogout, clearErrorConfig, clearSettingsCookie, clearUserSession, closeLogoutChannel, createPersistentState, dispatchLogoutEvent, getErrorConfig, getInitials, getPostReactionSummary, getSettingsFromCookie, handleAxiosError, handleError, handleGraphQLError, injectMentionUIDs, joinUrlWithPathAndQuery, onLogout, setErrorConfig, stringToObj, useApiCheckRater, useApiGetContacts, useApiGetPage, useApiLogout, useArticleNavigation, useArticleStore, useAssetVersions, useAutoDisplay, useAxiosErrorInterceptor, useBestAssetVersion, useCandidaciesTriggerStore, useCommunityTriggerStore, useCreatePostFormStore, useCreatePostStore, useErrorHandler, useJobTriggerStore, useLoadSettings, useLogout, useMessageAppStore, useMirantesFoundation, useMirantesToast, useModalArticleStore, useModalStore, useOpenChat, useOportunitiesStore, usePeriodicDownloadBanner, usePersistentUIState, useRegisterTracking, useRestorePendingChat, useSavedItemsStore, useSetChatVisibility, useSignedUrl, useUploadAsset, useUploadAssetsBulk };