@qtalo/qt-ui-library 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,9 +2,9 @@ import { ButtonHTMLAttributes } from 'react';
2
2
  import { ClassValue } from 'clsx';
3
3
  import { ComponentPropsWithoutRef } from 'react';
4
4
  import { Context } from 'react';
5
+ import { CSSProperties } from 'react';
5
6
  import { ElementType } from 'react';
6
7
  import { JSX } from 'react/jsx-runtime';
7
- import { JSX as JSX_2 } from 'react';
8
8
  import { ReactElement } from 'react';
9
9
  import { ReactNode } from 'react';
10
10
  import { ReactPortal } from 'react';
@@ -37,12 +37,17 @@ declare type AccordionItemProps = {
37
37
  } & ComponentPropsWithoutRef<"div">;
38
38
 
39
39
  declare type AccordionProps = {
40
- children: ReactNode;
40
+ children: ReactNode | ((state: AccordionState) => ReactNode);
41
41
  type?: "single" | "multiple";
42
42
  defaultValue?: string | string[];
43
43
  className?: string;
44
44
  };
45
45
 
46
+ declare type AccordionState = {
47
+ openItems: Set<string>;
48
+ toggleItem: (value: string) => void;
49
+ };
50
+
46
51
  export declare function AccordionTrigger({ value, children, className, asChild, onClick, ...props }: AccordionTriggerProps): JSX.Element;
47
52
 
48
53
  declare type AccordionTriggerProps = {
@@ -50,7 +55,7 @@ declare type AccordionTriggerProps = {
50
55
  children: ReactNode;
51
56
  className?: string;
52
57
  asChild?: boolean;
53
- } & ComponentPropsWithoutRef<"button">;
58
+ } & ComponentPropsWithoutRef<"div">;
54
59
 
55
60
  export declare function AccountIcon(props: IconProps): JSX.Element;
56
61
 
@@ -174,6 +179,7 @@ xs: string;
174
179
  sm: string;
175
180
  md: string;
176
181
  lg: string;
182
+ xl: string;
177
183
  };
178
184
  }, undefined, "flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none", {
179
185
  size: {
@@ -181,6 +187,7 @@ xs: string;
181
187
  sm: string;
182
188
  md: string;
183
189
  lg: string;
190
+ xl: string;
184
191
  };
185
192
  }, undefined, TVReturnType< {
186
193
  size: {
@@ -188,6 +195,7 @@ xs: string;
188
195
  sm: string;
189
196
  md: string;
190
197
  lg: string;
198
+ xl: string;
191
199
  };
192
200
  }, undefined, "flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none", unknown, unknown, undefined>>;
193
201
 
@@ -200,6 +208,19 @@ export declare type BadgeProps = React.HTMLAttributes<HTMLDivElement> & {
200
208
  className?: string;
201
209
  };
202
210
 
211
+ /**
212
+ * Base event detail type.
213
+ * Base fields shared by all event types (email, message, etc.).
214
+ */
215
+ export declare type BaseEventDetail = {
216
+ id?: string;
217
+ icon: ReactElement<IconProps>;
218
+ from: string;
219
+ timestamp: string;
220
+ subject: string;
221
+ isPriority: boolean;
222
+ };
223
+
203
224
  export declare function BulkActions({ totalItems, selectedItems, onSelectAll, actions, defaultDensity, onDensityChange, className, }: BulkActionsProps): JSX.Element;
204
225
 
205
226
  declare type BulkActionsProps = {
@@ -225,6 +246,12 @@ declare type BulkActionsProps = {
225
246
  className?: string;
226
247
  };
227
248
 
249
+ export declare function BulkActionsSkeleton({ className }: BulkActionsSkeletonProps): JSX.Element;
250
+
251
+ export declare type BulkActionsSkeletonProps = {
252
+ className?: string;
253
+ };
254
+
228
255
  export declare function Button({ className, children, ...props }: ButtonProps): JSX.Element;
229
256
 
230
257
  export declare type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
@@ -240,6 +267,12 @@ export declare type CalendarDay = {
240
267
  isCurrentMonth: boolean;
241
268
  };
242
269
 
270
+ export declare type CalendarDetail = {
271
+ summary?: string;
272
+ priorityText?: string;
273
+ body: string;
274
+ };
275
+
243
276
  export declare function CalendarIcon(props: IconProps): JSX.Element;
244
277
 
245
278
  export declare const capitalize: (s: string) => string;
@@ -350,6 +383,14 @@ export declare function CopyIcon(props: IconProps): JSX.Element;
350
383
 
351
384
  export declare function DarkIcon(props: IconProps): JSX.Element;
352
385
 
386
+ declare type DateFormatOptions = {
387
+ todayAsText?: boolean;
388
+ showWeekday?: boolean;
389
+ longMonth?: boolean;
390
+ withOrdinal?: boolean;
391
+ includeTime?: boolean;
392
+ };
393
+
353
394
  export declare function DatePicker({ mode, value, defaultValue, onChange, disabled, className, }: DatePickerProps): JSX.Element;
354
395
 
355
396
  declare type DatePickerProps = {
@@ -442,6 +483,161 @@ export declare type DropdownProps = {
442
483
  disabled?: boolean;
443
484
  };
444
485
 
486
+ /**
487
+ * Email detail type.
488
+ * Detail payload for email events.
489
+ * Represents the content rendered by the email detail component.
490
+ */
491
+ export declare type EmailDetail = {
492
+ summary?: string;
493
+ priorityText?: string;
494
+ body: string;
495
+ };
496
+
497
+ export declare const EVENT_CARD_HEIGHT_SIZE: {
498
+ normal: {
499
+ style: string;
500
+ value: number;
501
+ };
502
+ compact: {
503
+ style: string;
504
+ value: number;
505
+ };
506
+ };
507
+
508
+ export declare type EventActions = Partial<Record<EventActionType, ActionConfig>>;
509
+
510
+ export declare type EventActionType = "fire" | "done" | "link";
511
+
512
+ export declare function EventCard({ icon, sender, title, content, timestamp, workspace, read, selected, onSelect, checked, onCheckedChange, statusBadges, actions, density, className, style, }: EventCardProps): JSX.Element;
513
+
514
+ export declare type EventCardProps = {
515
+ icon: ReactNode;
516
+ sender: string;
517
+ title: string;
518
+ content: string;
519
+ timestamp: string;
520
+ workspace: string;
521
+ read?: boolean;
522
+ selected?: boolean;
523
+ onSelect?: () => void;
524
+ checked?: boolean;
525
+ onCheckedChange?: (checked: boolean) => void;
526
+ statusBadges?: EventStatusBadges;
527
+ actions?: EventActions;
528
+ density?: Density;
529
+ className?: string;
530
+ style?: React.CSSProperties;
531
+ };
532
+
533
+ export declare function EventCardSkeleton({ density, className, style, }: EventCardSkeletonProps): JSX.Element;
534
+
535
+ export declare type EventCardSkeletonProps = {
536
+ density?: Density;
537
+ className?: string;
538
+ style?: CSSProperties;
539
+ };
540
+
541
+ export declare function EventDetail({ events }: EventDetailProps): JSX.Element | null;
542
+
543
+ export declare function EventDetailContentCalendar({ detail: { summary, body, priorityText }, className, }: EventDetailContentCalendarProps): JSX.Element;
544
+
545
+ export declare type EventDetailContentCalendarProps = {
546
+ detail: EmailDetail;
547
+ className?: string;
548
+ };
549
+
550
+ export declare function EventDetailContentEmail({ detail: { summary, body, priorityText }, className, }: EventDetailContentEmailProps): JSX.Element;
551
+
552
+ export declare type EventDetailContentEmailProps = {
553
+ detail: EmailDetail;
554
+ className?: string;
555
+ };
556
+
557
+ export declare function EventDetailContentHeader({ summary, priorityText, children, className, }: EventDetailContentHeaderProps): JSX.Element;
558
+
559
+ export declare type EventDetailContentHeaderProps = {
560
+ summary?: string;
561
+ priorityText?: string;
562
+ className?: string;
563
+ children: ReactNode;
564
+ };
565
+
566
+ export declare function EventDetailContentMessage({ detail: { groups, summary, priorityText }, className, }: EventDetailContentMessageProps): JSX.Element;
567
+
568
+ export declare type EventDetailContentMessageProps = {
569
+ detail: MessageDetail;
570
+ className?: string;
571
+ };
572
+
573
+ export declare function EventDetailContentTicket({ detail: { summary, body, priorityText }, className, }: EventDetailContentTicketProps): JSX.Element;
574
+
575
+ export declare type EventDetailContentTicketProps = {
576
+ detail: EmailDetail;
577
+ className?: string;
578
+ };
579
+
580
+ export declare function EventDetailHeader({ icon, subject, from, timestamp, isPriority, isOpen, isFirstEvent, isSingleEvent, className, }: EventDetailHeaderProps): JSX.Element;
581
+
582
+ export declare type EventDetailHeaderProps = {
583
+ icon: ReactElement<IconProps>;
584
+ subject: string;
585
+ from: string;
586
+ timestamp: string;
587
+ isPriority: boolean;
588
+ isOpen: boolean;
589
+ isFirstEvent: boolean;
590
+ isSingleEvent: boolean;
591
+ className?: string;
592
+ };
593
+
594
+ /**
595
+ * Event detail item type.
596
+ * Discriminated union representing the supported event detail variants.
597
+ * The `type` field determines the shape of `detail`.
598
+ */
599
+ export declare type EventDetailItem = (BaseEventDetail & {
600
+ type: "email";
601
+ detail: EmailDetail;
602
+ }) | (BaseEventDetail & {
603
+ type: "message";
604
+ detail: MessageDetail;
605
+ }) | (BaseEventDetail & {
606
+ type: "ticket";
607
+ detail: TicketDetail;
608
+ }) | (BaseEventDetail & {
609
+ type: "calendar";
610
+ detail: CalendarDetail;
611
+ });
612
+
613
+ export declare function EventDetailPriority({ priorityText, }: EventDetailPriorityProps): JSX.Element;
614
+
615
+ export declare type EventDetailPriorityProps = {
616
+ priorityText: string;
617
+ };
618
+
619
+ export declare type EventDetailProps = {
620
+ events: EventDetailItem[];
621
+ };
622
+
623
+ export declare function EventDetailSkeleton({ className }: EventDetailSkeletonProps): JSX.Element;
624
+
625
+ export declare type EventDetailSkeletonProps = {
626
+ className?: string;
627
+ };
628
+
629
+ export declare function EventDetailSummary({ summary }: EventDetailSummaryProps): JSX.Element;
630
+
631
+ export declare type EventDetailSummaryProps = {
632
+ summary: string;
633
+ };
634
+
635
+ export declare type EventStatusBadges = Partial<Record<EventStatusBadgeType, StatusBadgeConfig>>;
636
+
637
+ export declare type EventStatusBadgeType = "fire" | "insight" | "done";
638
+
639
+ export declare type EventType = "email" | "message" | "ticket" | "calendar";
640
+
445
641
  export declare function ExternalLinkIcon(props: IconProps): JSX.Element;
446
642
 
447
643
  declare const FILTER_BUTTON_META: {
@@ -474,6 +670,13 @@ declare type FilterBarProps = {
474
670
  className?: string;
475
671
  };
476
672
 
673
+ export declare function FilterBarSkeleton({ itemCount, className, }: FilterBarSkeletonProps): JSX.Element;
674
+
675
+ export declare type FilterBarSkeletonProps = {
676
+ itemCount?: number;
677
+ className?: string;
678
+ };
679
+
477
680
  export declare function FilterButton({ variant, label, count, selected, icon, classNames, disabled, ...props }: FilterButtonProps): JSX.Element;
478
681
 
479
682
  declare type FilterButtonClassNames = Partial<{
@@ -509,6 +712,8 @@ export declare function formatDate(date: Date | null): string;
509
712
  */
510
713
  export declare function formatDateRange(startDate: Date | null, endDate: Date | null): string;
511
714
 
715
+ export declare function formatTimestamp(iso: string, options?: DateFormatOptions): string;
716
+
512
717
  /**
513
718
  * Generate a full calendar grid with days from previous, current, and next month
514
719
  * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)
@@ -563,6 +768,8 @@ declare type IconCountButtonClassNames = Partial<{
563
768
  count: string;
564
769
  }>;
565
770
 
771
+ declare type IconCountButtonOrientation = "vertical" | "horizontal";
772
+
566
773
  export declare type IconCountButtonProps = IconCountButtonVariant & Omit<ButtonProps, "children" | "className"> & {
567
774
  icon: ReactElement<IconProps>;
568
775
  label: string;
@@ -571,6 +778,13 @@ export declare type IconCountButtonProps = IconCountButtonVariant & Omit<ButtonP
571
778
  classNames?: IconCountButtonClassNames;
572
779
  };
573
780
 
781
+ export declare function IconCountButtonSkeleton({ orientation, className, }: IconCountButtonSkeletonProps): JSX.Element;
782
+
783
+ export declare type IconCountButtonSkeletonProps = {
784
+ orientation?: IconCountButtonOrientation;
785
+ className?: string;
786
+ };
787
+
574
788
  declare const iconCountButtonStyles: TVReturnType< {
575
789
  variant: {
576
790
  primary: {};
@@ -689,13 +903,23 @@ export declare function IntegrationBar({ orientation, children, onAddMore, class
689
903
 
690
904
  declare type IntegrationBarOrientation = "horizontal" | "vertical";
691
905
 
906
+ declare type IntegrationBarOrientation_2 = "horizontal" | "vertical";
907
+
692
908
  declare type IntegrationBarProps = {
693
- orientation?: IntegrationBarOrientation;
909
+ orientation?: IntegrationBarOrientation_2;
694
910
  children: ReactElement<IconCountButtonProps>[];
695
911
  onAddMore: () => void;
696
912
  className?: string;
697
913
  };
698
914
 
915
+ export declare function IntegrationBarSkeleton({ orientation, itemCount, className, }: IntegrationBarSkeletonProps): JSX.Element;
916
+
917
+ export declare type IntegrationBarSkeletonProps = {
918
+ orientation?: IntegrationBarOrientation;
919
+ itemCount?: number;
920
+ className?: string;
921
+ };
922
+
699
923
  /**
700
924
  * Check if date1 is before date2 (ignoring time)
701
925
  */
@@ -724,12 +948,63 @@ declare type Listener = (toasts: ToastItem[]) => void;
724
948
 
725
949
  export declare function LogoIcon(props: IconProps): JSX.Element;
726
950
 
951
+ /**
952
+ * Message type.
953
+ * Represents an individual message inside a conversation.
954
+ */
955
+ export declare type Message = {
956
+ id: string;
957
+ author: string;
958
+ timestamp: string;
959
+ body: string;
960
+ replies?: MessageReply[];
961
+ onExternalLinkClick?: () => void;
962
+ onMarkAsFireClick?: () => void;
963
+ };
964
+
965
+ /**
966
+ * Message detail payload.
967
+ * Detail payload for message events.
968
+ * Represents a conversation composed of grouped messages.
969
+ */
970
+ export declare type MessageDetail = {
971
+ groups: MessageGroup[];
972
+ summary?: string;
973
+ priorityText?: string;
974
+ };
975
+
976
+ /**
977
+ * Message group type.
978
+ * Group of messages, typically grouped by date or logical segment.
979
+ * Some groups may be marked as priority and support navigation.
980
+ */
981
+ export declare type MessageGroup = {
982
+ id: string;
983
+ timestamp: string;
984
+ messages: Message[];
985
+ isPriority?: boolean;
986
+ priorityText?: string;
987
+ };
988
+
989
+ /**
990
+ * Message reply type.
991
+ * Represents a single reply within a threaded message.
992
+ */
993
+ export declare type MessageReply = {
994
+ id: string;
995
+ author: string;
996
+ timestamp: string;
997
+ body: string;
998
+ };
999
+
727
1000
  export declare function MinusIcon(props: IconProps): JSX.Element;
728
1001
 
729
1002
  export declare function MoreIcon(props: IconProps): JSX.Element;
730
1003
 
731
1004
  export declare function NormalDensityIcon(props: IconProps): JSX.Element;
732
1005
 
1006
+ export declare function normalizeContent(content: string): string;
1007
+
733
1008
  export declare function NotFireIcon(props: IconProps): JSX.Element;
734
1009
 
735
1010
  export declare function OutlookCalendarIcon(props: IconProps): JSX.Element;
@@ -743,50 +1018,28 @@ export declare function parseDate(dateString: string): Date | null;
743
1018
 
744
1019
  export declare function pickColorFromPalette<T>(value: string, palette: readonly T[]): T;
745
1020
 
746
- export declare function Pressable({ as: Component, disabled, onPress, className, children, }: PressableProps): JSX.Element;
1021
+ export declare function Pressable<T extends ElementType = "div">({ as, disabled, onPress, className, children, ...props }: PressableProps<T>): JSX.Element;
747
1022
 
748
- declare type PressableProps = {
749
- as?: keyof JSX_2.IntrinsicElements;
1023
+ declare type PressableOwnProps = {
750
1024
  disabled?: boolean;
751
1025
  onPress?: () => void;
752
1026
  className?: string;
753
1027
  children?: ReactNode;
754
1028
  };
755
1029
 
756
- export declare const PREVIEW_CARD_HEIGHT_SIZE: {
757
- normal: number;
758
- compact: number;
759
- };
760
-
761
- export declare type PreviewActions = Partial<Record<PreviewActionType, ActionConfig>>;
1030
+ declare type PressableProps<T extends ElementType = "div"> = PressableOwnProps & {
1031
+ as?: T;
1032
+ } & Omit<ComponentPropsWithoutRef<T>, keyof PressableOwnProps | "as">;
762
1033
 
763
- export declare type PreviewActionType = "fire" | "done" | "link";
1034
+ export declare function ReadIcon(props: IconProps): JSX.Element;
764
1035
 
765
- export declare function PreviewCard({ icon, sender, title, content, timestamp, workspace, read, selected, onSelect, checked, onCheckedChange, statuses, actions, density, }: PreviewCardProps): JSX.Element;
1036
+ export declare function RichContent({ content, className }: RichContentProps): JSX.Element;
766
1037
 
767
- export declare type PreviewCardProps = {
768
- icon: ReactNode;
769
- sender: string;
770
- title: string;
1038
+ export declare type RichContentProps = {
771
1039
  content: string;
772
- timestamp: string;
773
- workspace: string;
774
- read?: boolean;
775
- selected?: boolean;
776
- onSelect?: () => void;
777
- checked?: boolean;
778
- onCheckedChange?: (checked: boolean) => void;
779
- statuses?: PreviewStatuses;
780
- actions?: PreviewActions;
781
- density?: Density;
1040
+ className?: string;
782
1041
  };
783
1042
 
784
- export declare type PreviewStatuses = Partial<Record<PreviewStatusType, StatusConfig>>;
785
-
786
- export declare type PreviewStatusType = "fire" | "insight" | "done";
787
-
788
- export declare function ReadIcon(props: IconProps): JSX.Element;
789
-
790
1043
  export declare function SearchIcon(props: IconProps): JSX.Element;
791
1044
 
792
1045
  export declare function SearchInput({ value, defaultValue, placeholder, onChange, onClear, disabled, className, }: SearchInputProps): JSX.Element;
@@ -811,6 +1064,11 @@ export declare function SlackIcon(props: IconProps): JSX.Element;
811
1064
 
812
1065
  export declare function StatusBadge({ className, label, status, onAction, density, }: StatusBadgeProps): JSX.Element;
813
1066
 
1067
+ declare type StatusBadgeConfig = {
1068
+ label?: string;
1069
+ onClick?: () => void;
1070
+ };
1071
+
814
1072
  export declare type StatusBadgeProps = Omit<BadgeProps, "icon" | "action" | "label"> & Required<VariantProps<typeof statusBadgeStyles>> & {
815
1073
  label?: ReactNode;
816
1074
  onAction?: () => void;
@@ -873,11 +1131,6 @@ root: string;
873
1131
  text: string;
874
1132
  }, undefined, unknown, unknown, undefined>>;
875
1133
 
876
- declare type StatusConfig = {
877
- label?: string;
878
- onAction?: () => void;
879
- };
880
-
881
1134
  /**
882
1135
  * Prevents click and keyboard events from bubbling to parent components
883
1136
  * (e.g. Pressable, Card, ListRow).
@@ -896,6 +1149,12 @@ export declare function SystemIcon(props: IconProps): JSX.Element;
896
1149
 
897
1150
  export declare function TeamsIcon(props: IconProps): JSX.Element;
898
1151
 
1152
+ export declare type TicketDetail = {
1153
+ summary?: string;
1154
+ priorityText?: string;
1155
+ body: string;
1156
+ };
1157
+
899
1158
  export declare function toast(content: ReactNode | ShowToastOptions, options?: Omit<ShowToastOptions, "content">): {
900
1159
  id: `${string}-${string}-${string}-${string}-${string}`;
901
1160
  dismiss: () => void;