@qtalo/qt-ui-library 0.1.1

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,943 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ import { ClassValue } from 'clsx';
3
+ import { ComponentPropsWithoutRef } from 'react';
4
+ import { Context } from 'react';
5
+ import { ElementType } from 'react';
6
+ import { JSX } from 'react/jsx-runtime';
7
+ import { JSX as JSX_2 } from 'react';
8
+ import { ReactElement } from 'react';
9
+ import { ReactNode } from 'react';
10
+ import { ReactPortal } from 'react';
11
+ import { SVGProps } from 'react';
12
+ import { TVReturnType } from 'tailwind-variants';
13
+ import { VariantProps } from 'tailwind-variants';
14
+
15
+ export declare function Accordion({ children, type, defaultValue, className, }: AccordionProps): JSX.Element;
16
+
17
+ export declare function AccordionContent({ value, children, className, ...props }: AccordionContentProps): JSX.Element | null;
18
+
19
+ declare type AccordionContentProps = {
20
+ value: string;
21
+ children: ReactNode;
22
+ className?: string;
23
+ } & ComponentPropsWithoutRef<"div">;
24
+
25
+ declare type AccordionContextValue = {
26
+ openItems: Set<string>;
27
+ toggleItem: (value: string) => void;
28
+ type: "single" | "multiple";
29
+ };
30
+
31
+ export declare function AccordionItem({ value, children, className, ...props }: AccordionItemProps): JSX.Element;
32
+
33
+ declare type AccordionItemProps = {
34
+ value: string;
35
+ children: ReactNode;
36
+ className?: string;
37
+ } & ComponentPropsWithoutRef<"div">;
38
+
39
+ declare type AccordionProps = {
40
+ children: ReactNode;
41
+ type?: "single" | "multiple";
42
+ defaultValue?: string | string[];
43
+ className?: string;
44
+ };
45
+
46
+ export declare function AccordionTrigger({ value, children, className, asChild, onClick, ...props }: AccordionTriggerProps): JSX.Element;
47
+
48
+ declare type AccordionTriggerProps = {
49
+ value: string;
50
+ children: ReactNode;
51
+ className?: string;
52
+ asChild?: boolean;
53
+ } & ComponentPropsWithoutRef<"button">;
54
+
55
+ export declare function AccountIcon(props: IconProps): JSX.Element;
56
+
57
+ export declare function ActionMenu({ trigger, children, className, ...props }: ActionMenuProps): JSX.Element;
58
+
59
+ export declare function ActionMenuItem({ icon, label, className, selected, ...props }: ActionMenuItemProps): JSX.Element;
60
+
61
+ declare type ActionMenuItemProps = DropdownMenuItemProps & {
62
+ icon?: ReactElement<IconProps>;
63
+ label: string;
64
+ selected?: boolean;
65
+ };
66
+
67
+ declare type ActionMenuProps = DropdownMenuProps;
68
+
69
+ export declare function AddIcon(props: IconProps): JSX.Element;
70
+
71
+ export declare function AirtableIcon(props: IconProps): JSX.Element;
72
+
73
+ declare type ArrowDirection = "up" | "down" | "left" | "right";
74
+
75
+ export declare function ArrowIcon({ direction, className, ...props }: ArrowIconProps): JSX.Element;
76
+
77
+ declare type ArrowIconProps = IconProps & {
78
+ direction?: ArrowDirection;
79
+ };
80
+
81
+ export declare function AsanaIcon(props: IconProps): JSX.Element;
82
+
83
+ export declare function Avatar({ name, size, className }: AvatarProps): JSX.Element;
84
+
85
+ export declare const AVATAR_COLOR: {
86
+ readonly amber: {
87
+ readonly bg: "bg-amber-200";
88
+ readonly text: "text-amber-700";
89
+ };
90
+ readonly blue: {
91
+ readonly bg: "bg-blue-200";
92
+ readonly text: "text-blue-700";
93
+ };
94
+ readonly cyan: {
95
+ readonly bg: "bg-cyan-200";
96
+ readonly text: "text-cyan-700";
97
+ };
98
+ readonly emerald: {
99
+ readonly bg: "bg-emerald-200";
100
+ readonly text: "text-emerald-700";
101
+ };
102
+ readonly fuchsia: {
103
+ readonly bg: "bg-fuchsia-200";
104
+ readonly text: "text-fuchsia-700";
105
+ };
106
+ readonly green: {
107
+ readonly bg: "bg-green-200";
108
+ readonly text: "text-green-700";
109
+ };
110
+ readonly indigo: {
111
+ readonly bg: "bg-indigo-200";
112
+ readonly text: "text-indigo-700";
113
+ };
114
+ readonly lime: {
115
+ readonly bg: "bg-lime-200";
116
+ readonly text: "text-lime-700";
117
+ };
118
+ readonly orange: {
119
+ readonly bg: "bg-orange-200";
120
+ readonly text: "text-orange-700";
121
+ };
122
+ readonly pink: {
123
+ readonly bg: "bg-pink-200";
124
+ readonly text: "text-pink-700";
125
+ };
126
+ readonly purple: {
127
+ readonly bg: "bg-purple-200";
128
+ readonly text: "text-purple-700";
129
+ };
130
+ readonly rose: {
131
+ readonly bg: "bg-rose-200";
132
+ readonly text: "text-rose-700";
133
+ };
134
+ readonly sky: {
135
+ readonly bg: "bg-sky-200";
136
+ readonly text: "text-sky-700";
137
+ };
138
+ readonly slate: {
139
+ readonly bg: "bg-slate-200";
140
+ readonly text: "text-slate-700";
141
+ };
142
+ readonly stone: {
143
+ readonly bg: "bg-stone-200";
144
+ readonly text: "text-stone-700";
145
+ };
146
+ readonly teal: {
147
+ readonly bg: "bg-teal-200";
148
+ readonly text: "text-teal-700";
149
+ };
150
+ readonly violet: {
151
+ readonly bg: "bg-violet-200";
152
+ readonly text: "text-violet-700";
153
+ };
154
+ };
155
+
156
+ export declare const AVATAR_COLOR_KEYS: AvatarColorKey[];
157
+
158
+ export declare type AvatarColor = (typeof AVATAR_COLOR)[AvatarColorKey];
159
+
160
+ export declare type AvatarColorKey = keyof typeof AVATAR_COLOR;
161
+
162
+ declare type AvatarProps = {
163
+ name: string;
164
+ className?: string;
165
+ } & VariantProps<typeof avatarStyles>;
166
+
167
+ declare const avatarStyles: TVReturnType< {
168
+ size: {
169
+ xs: string;
170
+ sm: string;
171
+ md: string;
172
+ lg: string;
173
+ };
174
+ }, undefined, "flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none", {
175
+ size: {
176
+ xs: string;
177
+ sm: string;
178
+ md: string;
179
+ lg: string;
180
+ };
181
+ }, undefined, TVReturnType< {
182
+ size: {
183
+ xs: string;
184
+ sm: string;
185
+ md: string;
186
+ lg: string;
187
+ };
188
+ }, undefined, "flex shrink-0 items-center justify-center rounded-full leading-none font-semibold select-none", unknown, unknown, undefined>>;
189
+
190
+ export declare function Badge({ icon, label, action, className }: BadgeProps): JSX.Element;
191
+
192
+ export declare type BadgeProps = {
193
+ icon?: ReactElement<typeof Icon>;
194
+ label: ReactNode;
195
+ action?: ReactElement<typeof Button>;
196
+ className?: string;
197
+ };
198
+
199
+ export declare function BulkActions({ totalItems, selectedItems, onSelectAll, actions, defaultDensity, onDensityChange, className, }: BulkActionsProps): JSX.Element;
200
+
201
+ declare type BulkActionsProps = {
202
+ totalItems: number;
203
+ selectedItems: number;
204
+ onSelectAll: (select: boolean) => void;
205
+ actions: {
206
+ fire: {
207
+ on: () => void;
208
+ off: () => void;
209
+ };
210
+ done: {
211
+ on: () => void;
212
+ off: () => void;
213
+ };
214
+ read: {
215
+ on: () => void;
216
+ off: () => void;
217
+ };
218
+ };
219
+ defaultDensity?: Density;
220
+ onDensityChange: (density: Density) => void;
221
+ className?: string;
222
+ };
223
+
224
+ export declare function Button({ className, children, ...props }: ButtonProps): JSX.Element;
225
+
226
+ export declare type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
227
+ className?: string;
228
+ };
229
+
230
+ /**
231
+ * Calendar day metadata
232
+ */
233
+ export declare type CalendarDay = {
234
+ date: Date;
235
+ day: number;
236
+ isCurrentMonth: boolean;
237
+ };
238
+
239
+ export declare function CalendarIcon(props: IconProps): JSX.Element;
240
+
241
+ export declare const capitalize: (s: string) => string;
242
+
243
+ export declare function Card<T extends ElementType = "div">({ as, children, className, ...props }: CardProps<T>): JSX.Element;
244
+
245
+ export declare function CardContent({ children, className }: CardContentProps): JSX.Element;
246
+
247
+ declare type CardContentProps = {
248
+ children: ReactNode;
249
+ className?: string;
250
+ };
251
+
252
+ export declare function CardFooter({ children, className }: CardFooterProps): JSX.Element;
253
+
254
+ declare type CardFooterProps = {
255
+ children: ReactNode;
256
+ className?: string;
257
+ };
258
+
259
+ export declare function CardHeader({ children, className }: CardHeaderProps): JSX.Element;
260
+
261
+ declare type CardHeaderProps = {
262
+ children: ReactNode;
263
+ className?: string;
264
+ };
265
+
266
+ export declare function CardLayout({ children, className }: CardLayoutProps): JSX.Element;
267
+
268
+ declare type CardLayoutProps = {
269
+ children: ReactNode;
270
+ className?: string;
271
+ };
272
+
273
+ declare type CardOwnProps = {
274
+ children: ReactNode;
275
+ className?: string;
276
+ };
277
+
278
+ declare type CardProps<T extends ElementType = "div"> = CardOwnProps & {
279
+ as?: T;
280
+ } & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps | "as">;
281
+
282
+ export declare function CardSidebar({ children, className }: CardSidebarProps): JSX.Element;
283
+
284
+ declare type CardSidebarProps = {
285
+ children: ReactNode;
286
+ className?: string;
287
+ };
288
+
289
+ export declare function CardTitle({ children, className }: CardTitleProps): JSX.Element;
290
+
291
+ declare type CardTitleProps = {
292
+ children: ReactNode;
293
+ className?: string;
294
+ };
295
+
296
+ export declare function Checkbox({ checked, defaultChecked, icon, indeterminate, indeterminateIcon, onChange, disabled, children, className, }: CheckboxProps): JSX.Element;
297
+
298
+ export declare function CheckboxIcon(props: IconProps): JSX.Element;
299
+
300
+ declare type CheckboxProps = {
301
+ checked?: boolean;
302
+ defaultChecked?: boolean;
303
+ disabled?: boolean;
304
+ indeterminate?: boolean;
305
+ onChange?: (checked: boolean) => void;
306
+ className?: string;
307
+ children?: React.ReactNode;
308
+ icon?: React.ReactNode;
309
+ indeterminateIcon?: React.ReactNode;
310
+ };
311
+
312
+ export declare function CheckCircleEmptyIcon(props: IconProps): JSX.Element;
313
+
314
+ export declare function CheckCircleIcon(props: IconProps): JSX.Element;
315
+
316
+ export declare function ClickUpIcon(props: IconProps): JSX.Element;
317
+
318
+ export declare function CloseIcon(props: IconProps): JSX.Element;
319
+
320
+ export declare function cn(...inputs: ClassValue[]): string;
321
+
322
+ /**
323
+ * Brand color tokens
324
+ *
325
+ * ⚠️ IMPORTANT: These values MUST match the CSS custom properties in src/styles/tailwind.css
326
+ *
327
+ * The single source of truth is src/styles/tailwind.css (@theme directive).
328
+ * These TypeScript tokens are provided for programmatic access in components.
329
+ *
330
+ * When updating colors:
331
+ * 1. Update the value in src/styles/tailwind.css first
332
+ * 2. Then update the corresponding value here to keep them in sync
333
+ *
334
+ * Usage:
335
+ * - For TailwindCSS classes: Use bg-brand-primary, bg-brand-secondary, etc. (defined in tailwind.css)
336
+ * - For programmatic access: Import and use these tokens
337
+ */
338
+ export declare const colors: {
339
+ readonly brandPrimary: "#6558fd";
340
+ readonly brandSecondary: "#ceff1a";
341
+ };
342
+
343
+ export declare function CompactDensityIcon(props: IconProps): JSX.Element;
344
+
345
+ export declare function CopyIcon(props: IconProps): JSX.Element;
346
+
347
+ export declare function DarkIcon(props: IconProps): JSX.Element;
348
+
349
+ export declare function DatePicker({ mode, value, defaultValue, onChange, disabled, className, }: DatePickerProps): JSX.Element;
350
+
351
+ declare type DatePickerProps = {
352
+ mode?: "single" | "range";
353
+ value?: Date | null | DateRange;
354
+ defaultValue?: Date | null | DateRange;
355
+ onChange?: (date: Date | null | DateRange) => void;
356
+ placeholder?: string;
357
+ disabled?: boolean;
358
+ className?: string;
359
+ };
360
+
361
+ declare type DateRange = {
362
+ startDate: Date | null;
363
+ endDate: Date | null;
364
+ };
365
+
366
+ declare type Density = "normal" | "compact";
367
+
368
+ export declare function Divider({ className, ...variants }: DividerProps): JSX.Element;
369
+
370
+ declare type DividerProps = DividerVariants & {
371
+ className?: string;
372
+ };
373
+
374
+ declare const dividerStyles: TVReturnType< {
375
+ orientation: {
376
+ horizontal: string;
377
+ vertical: string;
378
+ };
379
+ inset: {
380
+ none: string;
381
+ sm: string;
382
+ md: string;
383
+ lg: string;
384
+ };
385
+ }, undefined, "bg-neutral-400-variant-4", {
386
+ orientation: {
387
+ horizontal: string;
388
+ vertical: string;
389
+ };
390
+ inset: {
391
+ none: string;
392
+ sm: string;
393
+ md: string;
394
+ lg: string;
395
+ };
396
+ }, undefined, TVReturnType< {
397
+ orientation: {
398
+ horizontal: string;
399
+ vertical: string;
400
+ };
401
+ inset: {
402
+ none: string;
403
+ sm: string;
404
+ md: string;
405
+ lg: string;
406
+ };
407
+ }, undefined, "bg-neutral-400-variant-4", unknown, unknown, undefined>>;
408
+
409
+ declare type DividerVariants = VariantProps<typeof dividerStyles>;
410
+
411
+ export declare function Dropdown({ trigger, children, align, disabled, }: DropdownProps): JSX.Element;
412
+
413
+ declare type DropdownAlign = "start" | "end";
414
+
415
+ export declare const DropdownContext: Context<DropdownContextValue | null>;
416
+
417
+ declare type DropdownContextValue = {
418
+ close: () => void;
419
+ };
420
+
421
+ export declare function DropdownMenu({ trigger, children, className, ...props }: DropdownMenuProps): JSX.Element;
422
+
423
+ export declare function DropdownMenuItem(props: DropdownMenuItemProps): JSX.Element;
424
+
425
+ export declare type DropdownMenuItemProps = ButtonProps & {
426
+ closeOnClick?: boolean;
427
+ };
428
+
429
+ export declare type DropdownMenuProps = DropdownProps & {
430
+ children: ReactElement<DropdownMenuItemProps> | ReactElement<DropdownMenuItemProps>[];
431
+ className?: string;
432
+ };
433
+
434
+ export declare type DropdownProps = {
435
+ trigger: ReactNode;
436
+ children: ReactNode;
437
+ align?: DropdownAlign;
438
+ disabled?: boolean;
439
+ };
440
+
441
+ export declare function ExternalLinkIcon(props: IconProps): JSX.Element;
442
+
443
+ declare const FILTER_BUTTON_META: {
444
+ readonly fire: {
445
+ readonly icon: typeof FireIcon;
446
+ readonly label: "Fire";
447
+ readonly iconColor: "text-tertiary-500";
448
+ };
449
+ readonly unread: {
450
+ readonly icon: typeof UnreadIcon;
451
+ readonly label: "Unread";
452
+ readonly iconColor: "text-primary-500";
453
+ };
454
+ readonly insight: {
455
+ readonly icon: typeof InsightIcon;
456
+ readonly label: "Insights";
457
+ readonly iconColor: "text-primary-600";
458
+ };
459
+ readonly done: {
460
+ readonly icon: typeof CheckCircleIcon;
461
+ readonly label: "Done";
462
+ readonly iconColor: "text-success-base";
463
+ };
464
+ };
465
+
466
+ export declare function FilterBar({ children, className }: FilterBarProps): JSX.Element;
467
+
468
+ declare type FilterBarProps = {
469
+ children: ReactElement<FilterButtonProps>[];
470
+ className?: string;
471
+ };
472
+
473
+ export declare function FilterButton({ variant, label, count, selected, icon, classNames, disabled, ...props }: FilterButtonProps): JSX.Element;
474
+
475
+ declare type FilterButtonClassNames = Partial<{
476
+ root: string;
477
+ icon: string;
478
+ label: string;
479
+ count: string;
480
+ }>;
481
+
482
+ export declare type FilterButtonProps = Omit<ButtonProps, "children" | "className"> & {
483
+ variant?: FilterButtonVariant;
484
+ label?: string;
485
+ count?: number;
486
+ selected?: boolean;
487
+ icon?: ReactElement<IconProps>;
488
+ classNames?: FilterButtonClassNames;
489
+ };
490
+
491
+ declare type FilterButtonVariant = keyof typeof FILTER_BUTTON_META | "custom";
492
+
493
+ export declare function FireIcon(props: IconProps): JSX.Element;
494
+
495
+ /**
496
+ * Format a date to "Dec 3, 2025" format
497
+ */
498
+ export declare function formatDate(date: Date | null): string;
499
+
500
+ /**
501
+ * Format a date or date range for display
502
+ * Single day: "Dec 3, 2025"
503
+ * Same year range: "Jan 5 - Jan 17, 2026"
504
+ * Different years: "Nov 5, 2025 - Jan 17, 2026"
505
+ */
506
+ export declare function formatDateRange(startDate: Date | null, endDate: Date | null): string;
507
+
508
+ /**
509
+ * Generate a full calendar grid with days from previous, current, and next month
510
+ * Returns a flat array of calendar days that always fills complete weeks (multiple of 7)
511
+ * The first column is always Monday
512
+ */
513
+ export declare function generateCalendarDays(year: number, month: number): CalendarDay[];
514
+
515
+ /**
516
+ * Calendar utility functions using native Date API
517
+ */
518
+ /**
519
+ * Get the number of days in a given month
520
+ */
521
+ export declare function getDaysInMonth(year: number, month: number): number;
522
+
523
+ /**
524
+ * Get the first day of the month (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
525
+ * Returns 0-6 where 0 is Sunday
526
+ */
527
+ export declare function getFirstDayOfMonth(year: number, month: number): number;
528
+
529
+ export declare function getInitials(value: string): string;
530
+
531
+ /**
532
+ * Get month name
533
+ */
534
+ export declare function getMonthName(month: number): string;
535
+
536
+ /**
537
+ * Get weekday labels
538
+ */
539
+ export declare function getWeekdays(): readonly string[];
540
+
541
+ export declare function GmailIcon(props: IconProps): JSX.Element;
542
+
543
+ export declare function GoogleCalendarIcon(props: IconProps): JSX.Element;
544
+
545
+ export declare function Icon({ size, className, viewBox, children, ...props }: IconProps): JSX.Element;
546
+
547
+ export declare function IconButton({ icon, ...props }: IconButtonProps): JSX.Element;
548
+
549
+ export declare type IconButtonProps = Omit<ButtonProps, "children"> & {
550
+ icon: ReactElement<IconProps>;
551
+ };
552
+
553
+ export declare function IconCountButton({ icon, label, count, variant, orientation, status, alwaysShowCount, classNames, ...props }: IconCountButtonProps): JSX.Element;
554
+
555
+ declare type IconCountButtonClassNames = Partial<{
556
+ root: string;
557
+ bubble: string;
558
+ label: string;
559
+ count: string;
560
+ }>;
561
+
562
+ export declare type IconCountButtonProps = IconCountButtonVariant & Omit<ButtonProps, "children" | "className"> & {
563
+ icon: ReactElement<IconProps>;
564
+ label: string;
565
+ count?: number;
566
+ alwaysShowCount?: boolean;
567
+ classNames?: IconCountButtonClassNames;
568
+ };
569
+
570
+ declare const iconCountButtonStyles: TVReturnType< {
571
+ variant: {
572
+ primary: {};
573
+ secondary: {};
574
+ minimal: {
575
+ bubble: string;
576
+ label: string;
577
+ };
578
+ };
579
+ status: {
580
+ active: {};
581
+ inactive: {};
582
+ };
583
+ orientation: {
584
+ vertical: {
585
+ root: string;
586
+ label: string;
587
+ };
588
+ horizontal: {
589
+ root: string;
590
+ label: string;
591
+ };
592
+ };
593
+ }, {
594
+ root: string;
595
+ bubble: string;
596
+ label: string;
597
+ count: string;
598
+ icon: string;
599
+ }, undefined, {
600
+ variant: {
601
+ primary: {};
602
+ secondary: {};
603
+ minimal: {
604
+ bubble: string;
605
+ label: string;
606
+ };
607
+ };
608
+ status: {
609
+ active: {};
610
+ inactive: {};
611
+ };
612
+ orientation: {
613
+ vertical: {
614
+ root: string;
615
+ label: string;
616
+ };
617
+ horizontal: {
618
+ root: string;
619
+ label: string;
620
+ };
621
+ };
622
+ }, {
623
+ root: string;
624
+ bubble: string;
625
+ label: string;
626
+ count: string;
627
+ icon: string;
628
+ }, TVReturnType< {
629
+ variant: {
630
+ primary: {};
631
+ secondary: {};
632
+ minimal: {
633
+ bubble: string;
634
+ label: string;
635
+ };
636
+ };
637
+ status: {
638
+ active: {};
639
+ inactive: {};
640
+ };
641
+ orientation: {
642
+ vertical: {
643
+ root: string;
644
+ label: string;
645
+ };
646
+ horizontal: {
647
+ root: string;
648
+ label: string;
649
+ };
650
+ };
651
+ }, {
652
+ root: string;
653
+ bubble: string;
654
+ label: string;
655
+ count: string;
656
+ icon: string;
657
+ }, undefined, unknown, unknown, undefined>>;
658
+
659
+ declare type IconCountButtonVariant = VariantProps<typeof iconCountButtonStyles>;
660
+
661
+ export declare type IconProps = SVGProps<SVGSVGElement> & {
662
+ size?: number;
663
+ };
664
+
665
+ export declare function InfoTooltip({ className, ...props }: InfoTooltipProps): JSX.Element;
666
+
667
+ export declare type InfoTooltipProps = TooltipProps;
668
+
669
+ export declare function Input({ type, value, defaultValue, disabled, error, placeholder, onChange, className, }: InputProps): JSX.Element;
670
+
671
+ declare type InputProps = {
672
+ type?: "text" | "email" | "password";
673
+ value?: string;
674
+ defaultValue?: string;
675
+ disabled?: boolean;
676
+ error?: boolean;
677
+ placeholder?: string;
678
+ onChange?: (value: string) => void;
679
+ className?: string;
680
+ };
681
+
682
+ export declare function InsightIcon(props: IconProps): JSX.Element;
683
+
684
+ export declare function IntegrationBar({ orientation, children, onAddMore, className, }: IntegrationBarProps): JSX.Element;
685
+
686
+ declare type IntegrationBarOrientation = "horizontal" | "vertical";
687
+
688
+ declare type IntegrationBarProps = {
689
+ orientation?: IntegrationBarOrientation;
690
+ children: ReactElement<IconCountButtonProps>[];
691
+ onAddMore: () => void;
692
+ className?: string;
693
+ };
694
+
695
+ /**
696
+ * Check if date1 is before date2 (ignoring time)
697
+ */
698
+ export declare function isDateBefore(date1: Date, date2: Date): boolean;
699
+
700
+ /**
701
+ * Check if a date is within a range (inclusive)
702
+ */
703
+ export declare function isDateInRange(date: Date, startDate: Date | null, endDate: Date | null): boolean;
704
+
705
+ /**
706
+ * Check if two dates are the same day
707
+ */
708
+ export declare function isSameDay(date1: Date | null, date2: Date | null): boolean;
709
+
710
+ /**
711
+ * Check if a date is today
712
+ */
713
+ export declare function isToday(date: Date): boolean;
714
+
715
+ export declare function JiraIcon(props: IconProps): JSX.Element;
716
+
717
+ export declare function LightIcon(props: IconProps): JSX.Element;
718
+
719
+ declare type Listener = (toasts: ToastItem[]) => void;
720
+
721
+ export declare function LogoIcon(props: IconProps): JSX.Element;
722
+
723
+ export declare function MinusIcon(props: IconProps): JSX.Element;
724
+
725
+ export declare function MoreIcon(props: IconProps): JSX.Element;
726
+
727
+ export declare function NormalDensityIcon(props: IconProps): JSX.Element;
728
+
729
+ export declare function NotFireIcon(props: IconProps): JSX.Element;
730
+
731
+ export declare function OutlookCalendarIcon(props: IconProps): JSX.Element;
732
+
733
+ export declare function OutlookIcon(props: IconProps): JSX.Element;
734
+
735
+ /**
736
+ * Parse MM/DD/YYYY format to Date
737
+ */
738
+ export declare function parseDate(dateString: string): Date | null;
739
+
740
+ export declare function pickColorFromPalette<T>(value: string, palette: readonly T[]): T;
741
+
742
+ export declare function Pressable({ as: Component, disabled, onPress, className, children, }: PressableProps): JSX.Element;
743
+
744
+ declare type PressableProps = {
745
+ as?: keyof JSX_2.IntrinsicElements;
746
+ disabled?: boolean;
747
+ onPress?: () => void;
748
+ className?: string;
749
+ children?: React.ReactNode;
750
+ };
751
+
752
+ export declare type PreviewActions = Partial<Record<PreviewActionType, {
753
+ onClick: () => void;
754
+ }>>;
755
+
756
+ export declare type PreviewActionType = "fire" | "done" | "link";
757
+
758
+ export declare function PreviewCard({ icon, sender, title, content, timestamp, workspace, read, selected, onSelect, checked, onCheckedChange, statuses, actions, }: PreviewCardProps): JSX.Element;
759
+
760
+ export declare type PreviewCardProps = {
761
+ icon: ReactNode;
762
+ sender: string;
763
+ title: string;
764
+ content: string;
765
+ timestamp: string;
766
+ workspace: string;
767
+ read?: boolean;
768
+ selected?: boolean;
769
+ onSelect?: () => void;
770
+ checked?: boolean;
771
+ onCheckedChange?: (checked: boolean) => void;
772
+ statuses?: PreviewStatuses;
773
+ actions?: PreviewActions;
774
+ };
775
+
776
+ export declare type PreviewStatuses = Partial<Record<PreviewStatusType, {
777
+ label?: string;
778
+ onAction?: () => void;
779
+ }>>;
780
+
781
+ export declare type PreviewStatusType = "fire" | "insight" | "done";
782
+
783
+ export declare function ReadIcon(props: IconProps): JSX.Element;
784
+
785
+ export declare function SearchIcon(props: IconProps): JSX.Element;
786
+
787
+ export declare function SearchInput({ value, defaultValue, placeholder, onChange, onClear, disabled, className, }: SearchInputProps): JSX.Element;
788
+
789
+ declare type SearchInputProps = {
790
+ value?: string;
791
+ defaultValue?: string;
792
+ placeholder?: string;
793
+ onChange?: (value: string) => void;
794
+ onClear?: () => void;
795
+ disabled?: boolean;
796
+ className?: string;
797
+ };
798
+
799
+ export declare type ShowToastOptions = {
800
+ content: ReactNode;
801
+ duration?: number;
802
+ position?: ToastPosition;
803
+ };
804
+
805
+ export declare function SlackIcon(props: IconProps): JSX.Element;
806
+
807
+ export declare function StatusBadge({ className, label, status, onAction, }: StatusBadgeProps): JSX.Element;
808
+
809
+ export declare type StatusBadgeProps = Omit<BadgeProps, "icon" | "action" | "label"> & Required<VariantProps<typeof statusBadgeStyles>> & {
810
+ label?: ReactNode;
811
+ onAction?: () => void;
812
+ };
813
+
814
+ declare const statusBadgeStyles: TVReturnType< {
815
+ status: {
816
+ fire: {
817
+ root: string;
818
+ text: string;
819
+ };
820
+ insight: {
821
+ root: string;
822
+ text: string;
823
+ };
824
+ done: {
825
+ root: string;
826
+ text: string;
827
+ };
828
+ };
829
+ }, {
830
+ root: string;
831
+ text: string;
832
+ }, undefined, {
833
+ status: {
834
+ fire: {
835
+ root: string;
836
+ text: string;
837
+ };
838
+ insight: {
839
+ root: string;
840
+ text: string;
841
+ };
842
+ done: {
843
+ root: string;
844
+ text: string;
845
+ };
846
+ };
847
+ }, {
848
+ root: string;
849
+ text: string;
850
+ }, TVReturnType< {
851
+ status: {
852
+ fire: {
853
+ root: string;
854
+ text: string;
855
+ };
856
+ insight: {
857
+ root: string;
858
+ text: string;
859
+ };
860
+ done: {
861
+ root: string;
862
+ text: string;
863
+ };
864
+ };
865
+ }, {
866
+ root: string;
867
+ text: string;
868
+ }, undefined, unknown, unknown, undefined>>;
869
+
870
+ /**
871
+ * Prevents click and keyboard events from bubbling to parent components
872
+ * (e.g. Pressable, Card, ListRow).
873
+ */
874
+ export declare function StopPropagation({ children }: StopPropagationProps): JSX.Element;
875
+
876
+ declare type StopPropagationProps = {
877
+ children: ReactNode;
878
+ };
879
+
880
+ export declare function stringHash(input: string): number;
881
+
882
+ export declare function SummaryIcon(props: IconProps): JSX.Element;
883
+
884
+ export declare function SystemIcon(props: IconProps): JSX.Element;
885
+
886
+ export declare function TeamsIcon(props: IconProps): JSX.Element;
887
+
888
+ export declare function toast(content: ReactNode | ShowToastOptions, options?: Omit<ShowToastOptions, "content">): {
889
+ id: `${string}-${string}-${string}-${string}-${string}`;
890
+ dismiss: () => void;
891
+ };
892
+
893
+ export declare function Toaster(): ReactPortal;
894
+
895
+ export declare type ToastItem = {
896
+ id: string;
897
+ content: ReactNode;
898
+ position: ToastPosition;
899
+ duration: number;
900
+ };
901
+
902
+ export declare type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
903
+
904
+ export declare const toastStore: {
905
+ subscribe(listener: Listener): () => void;
906
+ add(toast: ToastItem): void;
907
+ remove(id: string): void;
908
+ };
909
+
910
+ /**
911
+ * Convert day of week from Sunday-based (0-6) to Monday-based (0-6)
912
+ * Sunday (0) becomes 6, Monday (1) becomes 0, etc.
913
+ */
914
+ export declare function toMondayBased(dayOfWeek: number): number;
915
+
916
+ export declare function Tooltip({ children, content, position, delay, className, }: TooltipProps): JSX.Element;
917
+
918
+ export declare type TooltipPosition = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
919
+
920
+ export declare type TooltipProps = {
921
+ children: ReactNode;
922
+ content: ReactNode;
923
+ position?: TooltipPosition;
924
+ delay?: number;
925
+ className?: string;
926
+ };
927
+
928
+ export declare function UnreadIcon(props: IconProps): JSX.Element;
929
+
930
+ export declare function useAccordion(): AccordionContextValue;
931
+
932
+ export declare function useDropdown(): DropdownContextValue;
933
+
934
+ export declare function useLongPress(onLongPress: () => void, onClick: () => void, delay?: number): {
935
+ onMouseDown: () => void;
936
+ onMouseUp: () => void;
937
+ onMouseLeave: () => void;
938
+ onTouchStart: () => void;
939
+ onTouchEnd: () => void;
940
+ onClick: () => void;
941
+ };
942
+
943
+ export { }