@freedom-code-compliance/fcc-redesign 0.1.50 → 0.1.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts ADDED
@@ -0,0 +1,725 @@
1
+ import type { CSSProperties, ReactNode } from 'react'
2
+ import type { ComponentPropsWithoutRef, ComponentType, JSX } from 'react'
3
+
4
+ type FCCAnyComponent = ComponentType<Record<string, unknown>>
5
+
6
+ export type FCCChatTab = 'hubs' | 'tickets' | 'dms'
7
+ export type FCCChatViewport = 'mobile' | 'smallDesktop' | 'bigDesktop'
8
+
9
+ export interface FCCChatSelection<Item = FCCChatHubItem | FCCChatTicketItem | FCCChatDMItem> {
10
+ tab: FCCChatTab
11
+ kind: FCCChatTab
12
+ id: string
13
+ item: Item
14
+ }
15
+
16
+ export interface FCCChatAvatarGroupItem {
17
+ id?: string
18
+ name?: string
19
+ avatarUrl?: string
20
+ avatarText?: string
21
+ presenceStatus?: 'available' | 'plan_review' | 'unavailable' | 'offline_insp' | 'offline'
22
+ }
23
+
24
+ export interface FCCChatBaseItem {
25
+ id: string
26
+ title: ReactNode
27
+ name?: ReactNode
28
+ subtitle?: ReactNode
29
+ description?: ReactNode
30
+ meta?: ReactNode
31
+ time?: ReactNode
32
+ countLabel?: ReactNode
33
+ messageCount?: number
34
+ replyCount?: number
35
+ subscribed?: boolean
36
+ unread?: boolean
37
+ group?: 'open' | 'resolved' | string
38
+ isClosed?: boolean
39
+ isResolved?: boolean
40
+ dotColor?: string
41
+ statusLabel?: ReactNode
42
+ badge?: ReactNode
43
+ avatar?: ReactNode
44
+ avatarUrl?: string
45
+ avatarGroup?: FCCChatAvatarGroupItem[]
46
+ avatarText?: string
47
+ avatarStyle?: CSSProperties
48
+ presenceStatus?: 'available' | 'plan_review' | 'unavailable' | 'offline_insp' | 'offline'
49
+ }
50
+
51
+ export interface FCCChatHubItem extends FCCChatBaseItem {}
52
+ export interface FCCChatTicketItem extends FCCChatBaseItem {}
53
+ export interface FCCChatDMItem extends FCCChatBaseItem {}
54
+
55
+ export interface FCCChatFilterState {
56
+ search?: string
57
+ mode?: 'subscribed' | 'all'
58
+ sortBy?: 'last_activity' | 'created_at' | 'title'
59
+ ticketSortBy?: 'last_activity' | 'created_at' | 'title'
60
+ status?: '' | 'open' | 'resolved'
61
+ ticketStatus?: '' | 'open' | 'resolved'
62
+ searchByTab?: Partial<Record<FCCChatTab, string>>
63
+ modeByTab?: Partial<Record<FCCChatTab, 'subscribed' | 'all'>>
64
+ }
65
+
66
+ export interface FCCChatAttachment {
67
+ id?: string
68
+ name?: string
69
+ url?: string
70
+ thumbnailUrl?: string
71
+ alt?: string
72
+ [key: string]: unknown
73
+ }
74
+
75
+ export interface FCCChatReaction {
76
+ emoji?: ReactNode
77
+ label?: ReactNode
78
+ count?: ReactNode
79
+ }
80
+
81
+ export interface FCCChatAuthor {
82
+ id?: string
83
+ name?: string
84
+ avatar?: ReactNode
85
+ avatarUrl?: string
86
+ avatarText?: string
87
+ avatarStyle?: CSSProperties
88
+ presenceStatus?: 'available' | 'plan_review' | 'unavailable' | 'offline_insp' | 'offline'
89
+ }
90
+
91
+ export interface FCCChatMessage {
92
+ id?: string
93
+ type?: 'message' | 'divider'
94
+ label?: ReactNode
95
+ from?: string
96
+ isOwn?: boolean
97
+ author?: FCCChatAuthor
98
+ authorName?: ReactNode
99
+ time?: ReactNode
100
+ body?: ReactNode
101
+ text?: ReactNode
102
+ attachments?: FCCChatAttachment[]
103
+ attachmentLayout?: 'default' | 'ticket' | 'hub'
104
+ reactions?: FCCChatReaction[]
105
+ hideReplyAction?: boolean
106
+ hideQuoteReplyAction?: boolean
107
+ onReaction?: (message: FCCChatMessage) => void
108
+ onReply?: (message: FCCChatMessage) => void
109
+ onQuoteReply?: (message: FCCChatMessage) => void
110
+ onMoreActions?: (message: FCCChatMessage) => void
111
+ onCopy?: (message: FCCChatMessage) => void
112
+ [key: string]: unknown
113
+ }
114
+
115
+ export interface FCCChatHubUpdate extends FCCChatMessage {
116
+ author?: FCCChatAuthor
117
+ }
118
+
119
+ export interface FCCChatDetailModel {
120
+ id: string
121
+ kind: FCCChatTab
122
+ title?: ReactNode
123
+ subtitle?: ReactNode
124
+ projectId?: string
125
+ participantCount?: number
126
+ tags?: Array<string | { label: ReactNode }>
127
+ actions?: ReactNode
128
+ status?: string
129
+ statusSteps?: string[]
130
+ messages?: FCCChatMessage[]
131
+ updates?: FCCChatHubUpdate[]
132
+ hubAction?: ReactNode
133
+ onOpenProject?: (projectId?: string) => void
134
+ onSelectUpdate?: (update: FCCChatHubUpdate) => void
135
+ onMessageReaction?: (message: FCCChatMessage) => void
136
+ onMessageReply?: (message: FCCChatMessage) => void
137
+ onMessageQuoteReply?: (message: FCCChatMessage) => void
138
+ onMessageMoreActions?: (message: FCCChatMessage) => void
139
+ onMessageCopy?: (message: FCCChatMessage) => void
140
+ composerPlaceholder?: string
141
+ onSubmit?: (value: string) => void
142
+ composer?: FCCChatComposerProps
143
+ [key: string]: unknown
144
+ }
145
+
146
+ export interface FCCChatDetailSlotProps {
147
+ detail: FCCChatDetailModel
148
+ onCloseDetail?: () => void
149
+ }
150
+
151
+ export type FCCChatHubDetailSlotProps = FCCChatDetailSlotProps
152
+ export type FCCChatTicketDetailSlotProps = FCCChatDetailSlotProps
153
+ export type FCCChatDMDetailSlotProps = FCCChatDetailSlotProps
154
+
155
+ export interface FCCChatComposerSlotProps {
156
+ detail: FCCChatDetailModel
157
+ }
158
+
159
+ export interface FCCChatSidebarSlots {
160
+ headerActions?: ReactNode
161
+ hubsToolbarActions?: ReactNode
162
+ ticketsToolbarActions?: ReactNode
163
+ dmsToolbarActions?: ReactNode
164
+ renderHubDetail?: (hub: FCCChatHubDetailSlotProps) => ReactNode
165
+ renderTicketDetail?: (ticket: FCCChatTicketDetailSlotProps) => ReactNode
166
+ renderDMDetail?: (dm: FCCChatDMDetailSlotProps) => ReactNode
167
+ renderComposer?: (props: FCCChatComposerSlotProps) => ReactNode
168
+ renderMessageAttachment?: (attachment: FCCChatAttachment) => ReactNode
169
+ renderInlineReply?: (message: FCCChatMessage) => ReactNode
170
+ footerAction?: ReactNode
171
+ }
172
+
173
+ export interface FCCChatSidebarProps extends Omit<ComponentPropsWithoutRef<'section'>, 'title' | 'onSelect'> {
174
+ open: boolean
175
+ activeTab: FCCChatTab
176
+ onTabChange: (tab: FCCChatTab) => void
177
+ onClose: () => void
178
+ title?: ReactNode
179
+ scopedTitle?: ReactNode
180
+ hubs: FCCChatHubItem[]
181
+ tickets: FCCChatTicketItem[]
182
+ dms: FCCChatDMItem[]
183
+ selectedId?: string | null
184
+ detailOpen: boolean
185
+ onSelectItem: (item: FCCChatSelection) => void
186
+ onCloseDetail: () => void
187
+ loading?: Partial<Record<FCCChatTab | 'detail', boolean>>
188
+ error?: Partial<Record<FCCChatTab | 'detail', ReactNode>>
189
+ filters?: FCCChatFilterState
190
+ onFiltersChange?: (filters: FCCChatFilterState) => void
191
+ detail: FCCChatDetailModel | null
192
+ newTicket?: FCCChatNewTicketFormProps & {
193
+ onOpen?: () => void
194
+ onCreated?: (values: FCCChatNewTicketFormValues) => void
195
+ onError?: (error: unknown, values: FCCChatNewTicketFormValues) => void
196
+ }
197
+ newDM?: FCCChatNewDMModalProps & {
198
+ onOpen?: () => void
199
+ onCreated?: (users: FCCChatNewDMUser[], ids: string[]) => void
200
+ onError?: (error: unknown, users: FCCChatNewDMUser[], ids: string[]) => void
201
+ }
202
+ composer?: FCCChatComposerProps & {
203
+ onStartHubUpdate?: () => void
204
+ }
205
+ slots?: FCCChatSidebarSlots
206
+ mobilePortalTargetSelector?: string | null
207
+ }
208
+
209
+ export interface FCCChatMessageListProps {
210
+ messages?: FCCChatMessage[]
211
+ renderMessageAttachment?: (attachment: FCCChatAttachment) => ReactNode
212
+ renderInlineReply?: (message: FCCChatMessage) => ReactNode
213
+ emptyLabel?: ReactNode
214
+ attachmentLayout?: 'default' | 'ticket' | 'hub'
215
+ onMessageReaction?: (message: FCCChatMessage) => void
216
+ onMessageReply?: (message: FCCChatMessage) => void
217
+ onMessageQuoteReply?: (message: FCCChatMessage) => void
218
+ onMessageMoreActions?: (message: FCCChatMessage) => void
219
+ onMessageCopy?: (message: FCCChatMessage) => void
220
+ }
221
+
222
+ export interface FCCChatComposerFrameProps {
223
+ placeholder?: string
224
+ value?: string
225
+ onChange?: (value: string) => void
226
+ onSubmit?: (value: string) => void
227
+ disabled?: boolean
228
+ leadingAction?: ReactNode
229
+ sendLabel?: string
230
+ children?: ReactNode
231
+ }
232
+
233
+ export interface FCCChatComposerSubmitMeta {
234
+ attachments?: FCCChatAttachment[]
235
+ quote?: FCCChatMessage | Record<string, unknown>
236
+ }
237
+
238
+ export interface FCCChatComposerProps {
239
+ placeholder?: string
240
+ value?: string
241
+ onChange?: (value: string) => void
242
+ onSubmit?: (value: string, meta: FCCChatComposerSubmitMeta) => void | Promise<void>
243
+ disabled?: boolean
244
+ attachments?: FCCChatAttachment[]
245
+ onAttach?: (files: File[]) => void
246
+ onRemoveAttachment?: (attachment: FCCChatAttachment, index: number) => void
247
+ quote?: FCCChatMessage | Record<string, unknown>
248
+ onCancelQuote?: () => void
249
+ mentionSuggestions?: FCCChatAvatarGroupItem[]
250
+ departmentSuggestions?: FCCChatAvatarGroupItem[]
251
+ leadingAction?: ReactNode
252
+ sendLabel?: string
253
+ className?: string
254
+ }
255
+
256
+ export interface FCCChatNewTicketFormValues {
257
+ projectId?: string
258
+ projectName?: ReactNode
259
+ departmentCode?: string
260
+ targetType?: string
261
+ title: string
262
+ message?: string
263
+ visibility?: 'internal' | 'public' | string
264
+ files?: File[]
265
+ }
266
+
267
+ export interface FCCChatOption {
268
+ id?: string
269
+ value?: string
270
+ label?: ReactNode
271
+ name?: ReactNode
272
+ title?: ReactNode
273
+ [key: string]: unknown
274
+ }
275
+
276
+ export interface FCCChatNewTicketFormProps {
277
+ title?: ReactNode
278
+ description?: ReactNode
279
+ projects?: FCCChatOption[]
280
+ departments?: FCCChatOption[]
281
+ targetTypes?: FCCChatOption[]
282
+ defaultProjectId?: string
283
+ defaultProjectName?: ReactNode
284
+ lockProject?: boolean
285
+ initialValues?: Partial<FCCChatNewTicketFormValues>
286
+ files?: File[]
287
+ onFilesChange?: (files: File[]) => void
288
+ onAttach?: (files: File[]) => void
289
+ onRemoveFile?: (file: File, index: number) => void
290
+ attachmentAccept?: string
291
+ attachLabel?: ReactNode
292
+ projectLabel?: ReactNode
293
+ departmentLabel?: ReactNode
294
+ targetLabel?: ReactNode
295
+ titleLabel?: ReactNode
296
+ messageLabel?: ReactNode
297
+ titlePlaceholder?: string
298
+ messagePlaceholder?: string
299
+ onSearchProjects?: (query: string) => void
300
+ onSubmit?: (values: FCCChatNewTicketFormValues) => void | Promise<void>
301
+ onClose?: () => void
302
+ isSubmitting?: boolean
303
+ submitLabel?: ReactNode
304
+ }
305
+
306
+ export interface FCCChatNewDMUser extends FCCChatAvatarGroupItem {
307
+ value?: string
308
+ label?: ReactNode
309
+ email?: ReactNode
310
+ role?: ReactNode
311
+ subtitle?: ReactNode
312
+ [key: string]: unknown
313
+ }
314
+
315
+ export interface FCCChatNewDMModalProps {
316
+ open?: boolean
317
+ title?: ReactNode
318
+ users?: FCCChatNewDMUser[]
319
+ selectedUserIds?: string[]
320
+ onSelectedUserIdsChange?: (ids: string[]) => void
321
+ onSearchUsers?: (query: string) => void
322
+ onCreateDM?: (users: FCCChatNewDMUser[], ids: string[]) => void | Promise<void>
323
+ onClose?: () => void
324
+ isSubmitting?: boolean
325
+ emptyLabel?: ReactNode
326
+ }
327
+
328
+ export interface FCCChatHubFeedProps {
329
+ updates?: FCCChatHubUpdate[]
330
+ onSelectUpdate?: (update: FCCChatHubUpdate) => void
331
+ action?: ReactNode
332
+ renderMessageAttachment?: (attachment: FCCChatAttachment) => ReactNode
333
+ renderInlineReply?: (message: FCCChatMessage) => ReactNode
334
+ }
335
+
336
+ export interface FCCChatTicketStatusTrackerProps {
337
+ steps?: string[]
338
+ current?: string
339
+ }
340
+
341
+ export function FCCChatSidebar(props: FCCChatSidebarProps): JSX.Element
342
+ export function FCCChatMessageList(props: FCCChatMessageListProps): JSX.Element
343
+ export function FCCChatComposer(props: FCCChatComposerProps): JSX.Element
344
+ export function FCCChatComposerFrame(props: FCCChatComposerFrameProps): JSX.Element
345
+ export function FCCChatNewTicketForm(props: FCCChatNewTicketFormProps): JSX.Element
346
+ export function FCCChatNewDMModal(props: FCCChatNewDMModalProps): JSX.Element | null
347
+ export function FCCChatHubFeed(props: FCCChatHubFeedProps): JSX.Element
348
+ export function FCCChatTicketStatusTracker(props: FCCChatTicketStatusTrackerProps): JSX.Element
349
+
350
+ export const FCC_CHAT_TABS: Array<{ id: FCCChatTab; label: string }>
351
+ export const FCC_CHAT_WIDTHS: {
352
+ rail: number
353
+ detail: number
354
+ small: number
355
+ mobile: '100%'
356
+ }
357
+ export const FCC_CHAT_BREAKPOINTS: {
358
+ mobile: number
359
+ smallDesktop: number
360
+ }
361
+
362
+ export type FCCCallsSidePanelTab = 'dial' | 'calls' | 'voicemail'
363
+
364
+ export interface FCCCallsDepartmentOption {
365
+ value: string
366
+ label: ReactNode
367
+ }
368
+
369
+ export interface FCCCallsPerson {
370
+ name?: string
371
+ number?: string
372
+ avatarUrl?: string
373
+ [key: string]: unknown
374
+ }
375
+
376
+ export interface FCCCallsTicket {
377
+ number?: string
378
+ department?: string
379
+ [key: string]: unknown
380
+ }
381
+
382
+ export interface FCCCallsHistoryItem {
383
+ id: string
384
+ caller?: FCCCallsPerson
385
+ direction?: 'inbound' | 'outbound' | string
386
+ outcome?: 'completed' | 'voicemail' | 'missed' | 'transferred' | 'callback' | string
387
+ startedAt?: string
388
+ durationSec?: number
389
+ department?: string
390
+ phoneNumber?: string
391
+ number?: string
392
+ ticket?: FCCCallsTicket | null
393
+ [key: string]: unknown
394
+ }
395
+
396
+ export interface FCCCallsQueueItem {
397
+ id: string
398
+ caller?: FCCCallsPerson
399
+ status?: 'open' | 'resolved' | 'called_back' | string
400
+ assignedTo?: { userId?: string; [key: string]: unknown } | null
401
+ department?: string
402
+ ticket?: FCCCallsTicket | null
403
+ [key: string]: unknown
404
+ }
405
+
406
+ export interface FCCCallsVoicemailItem extends FCCCallsQueueItem {
407
+ transcript?: ReactNode
408
+ receivedAt?: string
409
+ durationSec?: number
410
+ }
411
+
412
+ export interface FCCCallsCallbackItem extends FCCCallsQueueItem {
413
+ reason?: ReactNode
414
+ createdAt?: string
415
+ slaDeadlineAt?: string
416
+ }
417
+
418
+ export interface FCCCallsSidePanelProps {
419
+ activeTab?: FCCCallsSidePanelTab
420
+ callbacks?: FCCCallsCallbackItem[]
421
+ className?: string
422
+ currentUserId?: string | null
423
+ defaultDepartment?: string
424
+ defaultDialValue?: string
425
+ defaultTab?: FCCCallsSidePanelTab
426
+ departments?: FCCCallsDepartmentOption[]
427
+ departmentValue?: string
428
+ dialDisabled?: boolean
429
+ dialValue?: string
430
+ headerActions?: ReactNode
431
+ history?: FCCCallsHistoryItem[]
432
+ isDialing?: boolean
433
+ newCount?: number
434
+ onClaimCallback?: (callback: FCCCallsCallbackItem) => void
435
+ onClaimVoicemail?: (voicemail: FCCCallsVoicemailItem) => void
436
+ onClose?: () => void
437
+ onCompleteCallback?: (callback: FCCCallsCallbackItem) => void
438
+ onDepartmentChange?: (department: string) => void
439
+ onDial?: (number: string) => void
440
+ onDialValueChange?: (number: string) => void
441
+ onExpand?: () => void
442
+ onMore?: () => void
443
+ onOpenTicket?: (item: FCCCallsHistoryItem | FCCCallsVoicemailItem | FCCCallsCallbackItem) => void
444
+ onRedial?: (call: FCCCallsHistoryItem) => void
445
+ onResolveVoicemail?: (voicemail: FCCCallsVoicemailItem) => void
446
+ onReviewVoicemail?: (voicemail: FCCCallsVoicemailItem) => void
447
+ onSelectCall?: (call: FCCCallsHistoryItem) => void
448
+ onTabChange?: (tab: FCCCallsSidePanelTab) => void
449
+ recentLimit?: number
450
+ showMoreAction?: boolean
451
+ title?: ReactNode
452
+ voicemails?: FCCCallsVoicemailItem[]
453
+ }
454
+
455
+ export function FCCCallsSidePanel(props: FCCCallsSidePanelProps): JSX.Element
456
+
457
+ export const FCCDesignProvider: FCCAnyComponent
458
+ export const ThemeProvider: FCCAnyComponent
459
+ export function useTheme(): unknown
460
+ export const FCCAppShell: FCCAnyComponent
461
+ export const FCCAppShellContext: unknown
462
+ export function useFCCAppShell(): unknown
463
+ export const FCCSidebar: FCCAnyComponent
464
+ export const FCCMainWindow: FCCAnyComponent
465
+ export const FCCWorkspaceHeader: FCCAnyComponent
466
+ export const FCCBreadcrumbs: FCCAnyComponent
467
+ export const FCCHeaderStatus: FCCAnyComponent
468
+ export const FCCBrandLogo: FCCAnyComponent
469
+ export const FCCThemeToggle: FCCAnyComponent
470
+ export const FCCSidePanel: FCCAnyComponent
471
+ export const FCCSidePanelHeader: FCCAnyComponent
472
+ export const FCCSidePanelBody: FCCAnyComponent
473
+ export const FCCSidePanelTabs: FCCAnyComponent
474
+ export const FCCSidePanelSearch: FCCAnyComponent
475
+ export const FCCSidePanelGroupLabel: FCCAnyComponent
476
+ export const FCCSidePanelItem: FCCAnyComponent
477
+ export const FCCSidePanelCard: FCCAnyComponent
478
+ export const FCCSidePanelContact: FCCAnyComponent
479
+ export const FCCSidePanelAction: FCCAnyComponent
480
+ export const FCCSidePanelChatWrap: FCCAnyComponent
481
+ export const FCCSidePanelConversation: FCCAnyComponent
482
+ export const FCCSidePanelMessage: FCCAnyComponent
483
+ export const FCCDetailsPanel: FCCAnyComponent
484
+ export const FCCFullPagePanel: FCCAnyComponent
485
+ export const FCCFullPagePanelHeader: FCCAnyComponent
486
+ export const FCCFullPagePanelHeaderRevealZone: FCCAnyComponent
487
+ export const FCCFullPagePanelSubHeader: FCCAnyComponent
488
+ export const FCCFullPagePanelToolbar: FCCAnyComponent
489
+ export const FCCFullPagePanelBody: FCCAnyComponent
490
+ export const FCCFullPagePanelMain: FCCAnyComponent
491
+ export const FCCFullPagePanelSidebar: FCCAnyComponent
492
+ export const FCCFullPagePanelResizableSidebar: FCCAnyComponent
493
+ export const FCCFullPagePanelBottomControls: FCCAnyComponent
494
+ export const FCCFullPagePanelFooter: FCCAnyComponent
495
+ export const FCCFullPagePanelSidebarFooter: FCCAnyComponent
496
+ export const Accordion: FCCAnyComponent
497
+ export const AccordionItem: FCCAnyComponent
498
+ export const AppLoader: FCCAnyComponent
499
+ export const Spinner: FCCAnyComponent
500
+ export const FCCLoader: FCCAnyComponent
501
+ export const Avatar: FCCAnyComponent
502
+ export const Badge: FCCAnyComponent
503
+ export const Button: FCCAnyComponent
504
+ export const Card: FCCAnyComponent
505
+ export const CardHeader: FCCAnyComponent
506
+ export const CardTitle: FCCAnyComponent
507
+ export const CardDescription: FCCAnyComponent
508
+ export const CardContent: FCCAnyComponent
509
+ export const CardFooter: FCCAnyComponent
510
+ export const CardLayer: FCCAnyComponent
511
+ export const CardHoverActions: FCCAnyComponent
512
+ export const CardHoverAction: FCCAnyComponent
513
+ export const Dialog: FCCAnyComponent
514
+ export const DialogHeader: FCCAnyComponent
515
+ export const DialogTitle: FCCAnyComponent
516
+ export const DialogDescription: FCCAnyComponent
517
+ export const DialogBody: FCCAnyComponent
518
+ export const DialogFooter: FCCAnyComponent
519
+ export const Input: FCCAnyComponent
520
+ export const DropdownMenu: FCCAnyComponent
521
+ export const DropdownMenuItem: FCCAnyComponent
522
+ export const DropdownMenuCheckboxItem: FCCAnyComponent
523
+ export const DropdownMenuLabel: FCCAnyComponent
524
+ export const DropdownMenuSeparator: FCCAnyComponent
525
+ export const SearchableSelect: FCCAnyComponent
526
+ export const Sheet: FCCAnyComponent
527
+ export const SheetFooter: FCCAnyComponent
528
+ export const StatusMetric: FCCAnyComponent
529
+ export const Switch: FCCAnyComponent
530
+ export const Tabs: FCCAnyComponent
531
+ export const TabsList: FCCAnyComponent
532
+ export const TabsTrigger: FCCAnyComponent
533
+ export const TabsContent: FCCAnyComponent
534
+ export const Textarea: FCCAnyComponent
535
+ export const ToastProvider: FCCAnyComponent
536
+ export function useToast(): unknown
537
+ export const Tooltip: FCCAnyComponent
538
+ export const ViewModeToggle: FCCAnyComponent
539
+ export const DEFAULT_VIEW_MODE_OPTIONS: unknown
540
+ export const DEFAULT_ICON_BY_VALUE: unknown
541
+ export const WorkspaceTabs: FCCAnyComponent
542
+ export const Callbar: FCCAnyComponent
543
+ export const CallCard: FCCAnyComponent
544
+ export const CallControlsBar: FCCAnyComponent
545
+ export const PresenceDot: FCCAnyComponent
546
+ export const PresenceAvatar: FCCAnyComponent
547
+ export const TicketLinkChip: FCCAnyComponent
548
+ export const QueueItem: FCCAnyComponent
549
+ export const ActivityFeed: FCCAnyComponent
550
+ export const CommandBar: FCCAnyComponent
551
+ export const DataTable: FCCAnyComponent
552
+ export const FilterBar: FCCAnyComponent
553
+ export const KanbanBoard: FCCAnyComponent
554
+ export const KanbanColumn: FCCAnyComponent
555
+ export const KanbanCard: FCCAnyComponent
556
+ export const TableBoard: FCCAnyComponent
557
+ export const TableBoardGroup: FCCAnyComponent
558
+ export const TableBoardRow: FCCAnyComponent
559
+ export const KPICard: FCCAnyComponent
560
+ export const StatCard: FCCAnyComponent
561
+ export const NotificationsPanel: FCCAnyComponent
562
+
563
+ export interface FCCNotificationSidePanelItem {
564
+ id: string
565
+ title?: ReactNode
566
+ body?: ReactNode
567
+ message?: ReactNode
568
+ text?: ReactNode
569
+ detail?: ReactNode
570
+ actorName?: string
571
+ userName?: string
572
+ user?: string
573
+ requesterName?: string
574
+ senderName?: string
575
+ avatarUrl?: string | null
576
+ actorAvatarUrl?: string | null
577
+ userAvatar?: string | null
578
+ imageUrl?: string | null
579
+ avatarInitials?: string
580
+ initials?: string
581
+ timestamp?: string | number | Date | null
582
+ createdAt?: string | number | Date | null
583
+ date?: string | number | Date | null
584
+ timeStamp?: string | number | Date | null
585
+ timeLabel?: ReactNode
586
+ time?: ReactNode
587
+ isRead?: boolean
588
+ read?: boolean
589
+ readAt?: string | null
590
+ groupKey?: 'today' | 'yesterday' | 'thisWeek' | 'older' | string
591
+ [key: string]: unknown
592
+ }
593
+
594
+ export interface FCCNotificationSidePanelProps {
595
+ notifications?: FCCNotificationSidePanelItem[]
596
+ loading?: boolean
597
+ title?: ReactNode
598
+ statusLabel?: ReactNode
599
+ emptyTitle?: ReactNode
600
+ emptyUnreadTitle?: ReactNode
601
+ emptyDescription?: ReactNode
602
+ markAllReadLabel?: ReactNode
603
+ closeLabel?: string
604
+ activeFilter?: 'all' | 'unread' | string
605
+ defaultFilter?: 'all' | 'unread' | string
606
+ onFilterChange?: (filter: string) => void
607
+ onNotificationClick?: (notification: FCCNotificationSidePanelItem) => void
608
+ onMarkRead?: (id: string, notification: FCCNotificationSidePanelItem) => void
609
+ onMarkAllRead?: () => void
610
+ onClose?: () => void
611
+ renderNotification?: (
612
+ notification: FCCNotificationSidePanelItem,
613
+ helpers: { onClick: () => void; defaultNode: ReactNode },
614
+ ) => ReactNode
615
+ showCloseButton?: boolean
616
+ showMarkAllRead?: boolean
617
+ className?: string
618
+ }
619
+
620
+ export const FCCNotificationSidePanel: ComponentType<FCCNotificationSidePanelProps>
621
+
622
+ export type FCCIconName =
623
+ | 'inbox'
624
+ | 'issues'
625
+ | 'reviews'
626
+ | 'pulse'
627
+ | 'initiatives'
628
+ | 'projects'
629
+ | 'more'
630
+ | 'search'
631
+ | 'edit'
632
+ | 'chevronDown'
633
+ | 'chevronUp'
634
+ | 'chevron-down'
635
+ | 'chevron-up'
636
+ | 'star'
637
+ | 'statusInProgress'
638
+ | 'statusDone'
639
+ | 'statusTodo'
640
+ | 'statusBacklog'
641
+ | 'statusCancelled'
642
+ | 'status-in-progress'
643
+ | 'status-done'
644
+ | 'status-todo'
645
+ | 'status-backlog'
646
+ | 'status-cancelled'
647
+ | 'priorityUrgent'
648
+ | 'priorityHigh'
649
+ | 'priorityMedium'
650
+ | 'priorityLow'
651
+ | 'priority-urgent'
652
+ | 'priority-high'
653
+ | 'priority-medium'
654
+ | 'priority-low'
655
+ | 'link'
656
+ | 'trash'
657
+ | 'settings'
658
+ | 'close'
659
+ | 'check'
660
+ | 'copy'
661
+ | 'bell'
662
+ | 'calendar'
663
+ | 'filter'
664
+ | 'user'
665
+ | 'label'
666
+
667
+ export interface FCCIconProps extends ComponentPropsWithoutRef<'svg'> {
668
+ size?: number | string
669
+ title?: string
670
+ }
671
+
672
+ export interface FCCIconWrapperProps extends FCCIconProps {
673
+ name?: FCCIconName | string
674
+ icon?: ComponentType<FCCIconProps & Record<string, unknown>>
675
+ color?: string
676
+ }
677
+
678
+ export interface FCCHeaderIconButtonProps extends ComponentPropsWithoutRef<'button'> {
679
+ icon?: ReactNode | ComponentType<FCCIconProps & Record<string, unknown>>
680
+ iconName?: FCCIconName | string
681
+ iconSize?: number | string
682
+ label: string
683
+ active?: boolean
684
+ badge?: ReactNode
685
+ badgeLabel?: string
686
+ badgeClassName?: string
687
+ }
688
+
689
+ export const FCC_ICON_MAP: Readonly<Record<string, ComponentType<FCCIconProps>>>
690
+ export const FCC_ICON_ALIASES: Readonly<Record<string, string>>
691
+ export function resolveFCCIconComponent(name?: FCCIconName | string): ComponentType<FCCIconProps> | null
692
+ export function FCCIcon(props?: FCCIconWrapperProps): JSX.Element | null
693
+ export const FCCHeaderIconButton: ComponentType<FCCHeaderIconButtonProps>
694
+ export function InboxIcon(props?: FCCIconProps): JSX.Element
695
+ export function IssuesIcon(props?: FCCIconProps): JSX.Element
696
+ export function ReviewsIcon(props?: FCCIconProps): JSX.Element
697
+ export function PulseIcon(props?: FCCIconProps): JSX.Element
698
+ export function InitiativesIcon(props?: FCCIconProps): JSX.Element
699
+ export function ProjectsIcon(props?: FCCIconProps): JSX.Element
700
+ export function MoreIcon(props?: FCCIconProps): JSX.Element
701
+ export function SearchIcon(props?: FCCIconProps): JSX.Element
702
+ export function EditIcon(props?: FCCIconProps): JSX.Element
703
+ export function ChevronDown(props?: FCCIconProps): JSX.Element
704
+ export function ChevronUp(props?: FCCIconProps): JSX.Element
705
+ export function StarIcon(props?: FCCIconProps): JSX.Element
706
+ export function StatusInProgress(props?: FCCIconProps): JSX.Element
707
+ export function StatusDone(props?: FCCIconProps): JSX.Element
708
+ export function StatusTodo(props?: FCCIconProps): JSX.Element
709
+ export function StatusBacklog(props?: FCCIconProps): JSX.Element
710
+ export function StatusCancelled(props?: FCCIconProps): JSX.Element
711
+ export function PriorityUrgent(props?: FCCIconProps): JSX.Element
712
+ export function PriorityHigh(props?: FCCIconProps): JSX.Element
713
+ export function PriorityMedium(props?: FCCIconProps): JSX.Element
714
+ export function PriorityLow(props?: FCCIconProps): JSX.Element
715
+ export function LinkIcon(props?: FCCIconProps): JSX.Element
716
+ export function TrashIcon(props?: FCCIconProps): JSX.Element
717
+ export function SettingsIcon(props?: FCCIconProps): JSX.Element
718
+ export function CloseIcon(props?: FCCIconProps): JSX.Element
719
+ export function CheckIcon(props?: FCCIconProps): JSX.Element
720
+ export function CopyIcon(props?: FCCIconProps): JSX.Element
721
+ export function BellIcon(props?: FCCIconProps): JSX.Element
722
+ export function CalendarIcon(props?: FCCIconProps): JSX.Element
723
+ export function FilterIcon(props?: FCCIconProps): JSX.Element
724
+ export function UserIcon(props?: FCCIconProps): JSX.Element
725
+ export function LabelIcon(props?: FCCIconProps): JSX.Element