organify-ui 0.2.0 → 0.2.2

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.
Files changed (40) hide show
  1. package/dist/chat-mock-data-DST5Tn_H.d.ts +339 -0
  2. package/dist/chunk-2Y3W6JSG.js +4143 -0
  3. package/dist/chunk-2Y3W6JSG.js.map +1 -0
  4. package/dist/{chunk-7GFTSEVQ.js → chunk-5L6BWKVA.js} +2 -3
  5. package/dist/chunk-5L6BWKVA.js.map +1 -0
  6. package/dist/{chunk-YIVDY4T6.js → chunk-AHMA7OV3.js} +69 -4
  7. package/dist/chunk-AHMA7OV3.js.map +1 -0
  8. package/dist/chunk-B3N3YGMA.js +456 -0
  9. package/dist/chunk-B3N3YGMA.js.map +1 -0
  10. package/dist/chunk-DW4ZGEBH.js +930 -0
  11. package/dist/chunk-DW4ZGEBH.js.map +1 -0
  12. package/dist/{chunk-FWI3KZVO.js → chunk-FQA33MF4.js} +2 -4
  13. package/dist/chunk-FQA33MF4.js.map +1 -0
  14. package/dist/chunk-WONVWB5R.js +271 -0
  15. package/dist/chunk-WONVWB5R.js.map +1 -0
  16. package/dist/components/chat/index.d.ts +55 -0
  17. package/dist/components/chat/index.js +5 -0
  18. package/dist/components/chat/index.js.map +1 -0
  19. package/dist/components/notifications/index.d.ts +204 -0
  20. package/dist/components/notifications/index.js +5 -0
  21. package/dist/components/notifications/index.js.map +1 -0
  22. package/dist/i18n/index.js +1 -1
  23. package/dist/icons/index.d.ts +10 -1
  24. package/dist/icons/index.js +1 -1
  25. package/dist/index.d.ts +1018 -38
  26. package/dist/index.js +7858 -892
  27. package/dist/index.js.map +1 -1
  28. package/dist/providers/theme-provider.js +1 -1
  29. package/dist/tailwind-preset.d.ts +1 -2
  30. package/dist/tailwind-preset.js +102 -16
  31. package/dist/tailwind-preset.js.map +1 -1
  32. package/dist/tokens/index.d.ts +131 -69
  33. package/dist/tokens/index.js +1 -1
  34. package/package.json +25 -3
  35. package/src/globals.css +591 -257
  36. package/dist/chunk-7GFTSEVQ.js.map +0 -1
  37. package/dist/chunk-FWI3KZVO.js.map +0 -1
  38. package/dist/chunk-WPZJKIZT.js +0 -248
  39. package/dist/chunk-WPZJKIZT.js.map +0 -1
  40. package/dist/chunk-YIVDY4T6.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -8,9 +8,24 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
8
8
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
9
9
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
10
10
  import * as ProgressPrimitive from '@radix-ui/react-progress';
11
- export { IconProps, OrgAI, OrgActivity, OrgArrowLeft, OrgArrowRight, OrgAttachment, OrgBell, OrgBoard, OrgCalendar, OrgChart, OrgCheck, OrgChevronDown, OrgChevronLeft, OrgChevronRight, OrgChevronUp, OrgClock, OrgClose, OrgComment, OrgCopy, OrgDiamond, OrgDownload, OrgEdit, OrgEye, OrgEyeOff, OrgFile, OrgFilter, OrgFlag, OrgFolder, OrgGauge, OrgGlobe, OrgGrid, OrgHeart, OrgHome, OrgIntegration, OrgLink, OrgList, OrgLock, OrgLogo, OrgLogout, OrgMenu, OrgMoon, OrgPlus, OrgReport, OrgRocket, OrgSearch, OrgSettings, OrgShield, OrgSort, OrgSprint, OrgStar, OrgSun, OrgTag, OrgTarget, OrgTeam, OrgTrash, OrgUnlock, OrgUpload, OrgUser, OrgWordmark, OrgWorkflow, OrgZap } from './icons/index.js';
11
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
12
+ import { DialogProps } from '@radix-ui/react-dialog';
13
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
14
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
15
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
16
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
17
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
18
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
19
+ import * as vaul from 'vaul';
20
+ import { Drawer as Drawer$1 } from 'vaul';
21
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
22
+ import { Command as Command$1 } from 'cmdk';
23
+ import { Toaster as Toaster$1 } from 'sonner';
24
+ export { IconProps, OrgAI, OrgActivity, OrgArrowLeft, OrgArrowRight, OrgAttachment, OrgBell, OrgBoard, OrgCalendar, OrgChart, OrgCheck, OrgCheckCircle, OrgChevronDown, OrgChevronLeft, OrgChevronRight, OrgChevronUp, OrgClock, OrgClose, OrgComment, OrgCopy, OrgCreditCard, OrgDiamond, OrgDoor, OrgDownload, OrgEdit, OrgError, OrgEye, OrgEyeOff, OrgFile, OrgFilter, OrgFlag, OrgFolder, OrgGauge, OrgGlobe, OrgGrid, OrgHeart, OrgHome, OrgInfo, OrgIntegration, OrgLink, OrgList, OrgLock, OrgLogo, OrgLogout, OrgMail, OrgMention, OrgMenu, OrgMoon, OrgPlus, OrgReport, OrgRocket, OrgSearch, OrgSettings, OrgShield, OrgSort, OrgSprint, OrgStar, OrgSun, OrgTag, OrgTarget, OrgTeam, OrgTrash, OrgUnlock, OrgUpload, OrgUser, OrgWarning, OrgWave, OrgWordmark, OrgWorkflow, OrgZap } from './icons/index.js';
12
25
  export { Theme, ThemeProvider, ThemeProviderProps, useTheme } from './providers/theme-provider.js';
13
26
  export { I18nProvider, I18nProviderProps, Locale, TranslationKey, createTranslator, useI18n } from './i18n/index.js';
27
+ export { b as ChatConfig, c as ChatEvents, d as ChatMention, C as ChatMessage, e as ChatMessages, f as ChatPermissions, g as ChatReaction, h as ChatRoom, i as ChatRoomMember, j as ChatSidebar, k as ChatUser, l as CreateRoomDialog, m as MOCK_PROJECTS, n as MOCK_USERS, o as MemberRole, O as OrganifyChat, r as OrganifyChatProps, R as RoomManagementPanel, s as RoomType, t as RoomVisibility, T as TypingIndicatorMock, u as generateAutoReplies, v as getMockMentionOptions, w as getRoomPermissions, x as typingIndicator, y as useChat } from './chat-mock-data-DST5Tn_H.js';
28
+ export { Notification, NotificationBell, NotificationBellProps, NotificationItem, NotificationItemProps, NotificationList, NotificationListProps, NotificationMetadata, NotificationPreferenceChannel, NotificationPreferences, NotificationPriority, NotificationType, OrganifyNotifications, OrganifyNotificationsProps, PresenceAvatarStack, PresenceAvatarStackProps, PresenceIndicator, PresenceIndicatorProps, PresenceStatus, PresenceUser, UserPresence, useNotifications, usePresence } from './components/notifications/index.js';
14
29
 
15
30
  /**
16
31
  * Merge Tailwind CSS classes with clsx — the standard shadcn pattern.
@@ -18,12 +33,10 @@ export { I18nProvider, I18nProviderProps, Locale, TranslationKey, createTranslat
18
33
  declare function cn(...inputs: ClassValue[]): string;
19
34
 
20
35
  /**
21
- * Button — Geometric Tactile Actions
36
+ * Button — Organic Squircle Actions
22
37
  *
23
- * Two primary shapes from the design system:
24
- * - `glass-primary`: clip-path polygon, filled primary bg
25
- * - `glass-outline`: inverse clip-path, transparent + border
26
- * - Standard variants: default, secondary, ghost, destructive, link
38
+ * Organic Design System smooth squircle shapes, organic easing.
39
+ * Theme-aware: uses CSS variables for theme switching.
27
40
  */
28
41
  declare const buttonVariants: (props?: ({
29
42
  variant?: "default" | "link" | "secondary" | "ghost" | "destructive" | "outline" | "cream" | "cream-secondary" | null | undefined;
@@ -36,10 +49,10 @@ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, Var
36
49
  declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
37
50
 
38
51
  /**
39
- * Input — Glass geometric input field
52
+ * Input — Organic Glass input field
40
53
  *
41
- * From the design system: bg-white/5 backdrop-blur, geometric clip-path corner,
42
- * floating label support, error state with red accent.
54
+ * Theme-aware: uses CSS variables for backgrounds and borders.
55
+ * Squircle radius, organic easing, focus glow.
43
56
  */
44
57
  declare const inputVariants: (props?: ({
45
58
  variant?: "default" | "flat" | "cream" | "rounded" | "error" | null | undefined;
@@ -53,9 +66,10 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, '
53
66
  declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
54
67
 
55
68
  /**
56
- * Select — Glass geometric select
69
+ * Select — Organic glass select
57
70
  *
58
- * Wraps Radix Select with Organify glass styling.
71
+ * Wraps Radix Select with Organify organic glass styling.
72
+ * Theme-aware: uses CSS variables for theme switching.
59
73
  */
60
74
  declare const Select: React.FC<SelectPrimitive.SelectProps>;
61
75
  declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -71,9 +85,9 @@ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimit
71
85
  declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
72
86
 
73
87
  /**
74
- * Toggle / Switch — Glass toggle with geometric styling
88
+ * Toggle / Switch — Glass toggle with organic styling
75
89
  *
76
- * From the HTML: clip-path container, primary accent when checked.
90
+ * Organic squircle container, primary accent when checked.
77
91
  */
78
92
  interface ToggleProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {
79
93
  label?: string;
@@ -84,7 +98,8 @@ declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAtt
84
98
  /**
85
99
  * Badge — Status badges & context indicators
86
100
  *
87
- * Standard rectangular badges + status flow indicators.
101
+ * Organic Design System smooth pill shapes.
102
+ * Theme-aware: uses CSS variables for theme switching.
88
103
  */
89
104
  declare const badgeVariants: (props?: ({
90
105
  variant?: "default" | "error" | "primary" | "success" | "warning" | "info" | "in-flow" | "deep-work" | "high-energy" | "cream-default" | "cream-primary" | null | undefined;
@@ -102,6 +117,7 @@ declare function Badge({ className, variant, dot, dotColor, children, ...props }
102
117
  *
103
118
  * From the Brand Assets HTML: asymmetric shapes with gradient backgrounds,
104
119
  * geometric corner accents, status dot indicators.
120
+ * Theme-aware: uses CSS variables for theme switching.
105
121
  */
106
122
  declare const avatarVariants: (props?: ({
107
123
  shape?: "circle" | "square" | "asym-1" | "asym-2" | "geo" | "geo-inv" | null | undefined;
@@ -119,10 +135,37 @@ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAtt
119
135
  declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
120
136
  declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
121
137
 
138
+ interface UserAvatarProps extends Omit<AvatarProps, 'gradient'> {
139
+ /** User display name — used for initials fallback */
140
+ name: string;
141
+ /** Image URL (optional) */
142
+ src?: string | null;
143
+ /** User email (shown on hover) */
144
+ email?: string;
145
+ /** User role (shown on hover) */
146
+ role?: string;
147
+ /** Whether to show hover card with user info */
148
+ showHoverInfo?: boolean;
149
+ /** Custom fallback content (overrides initials) */
150
+ fallback?: React.ReactNode;
151
+ /** Extra info lines for hover card */
152
+ extraInfo?: {
153
+ label: string;
154
+ value: string;
155
+ }[];
156
+ /** Click handler */
157
+ onClick?: () => void;
158
+ }
159
+ declare function UserAvatar({ name, src, email, role, showHoverInfo, fallback, extraInfo, onClick, className, size, shape, status, ...props }: UserAvatarProps): react_jsx_runtime.JSX.Element;
160
+ declare namespace UserAvatar {
161
+ var displayName: string;
162
+ }
163
+
122
164
  /**
123
- * Tooltip — Glass panel tooltip
165
+ * Tooltip — Organic glass tooltip
124
166
  *
125
- * From the design system: glass background, arrow, clean typography.
167
+ * Theme-aware: uses CSS variables for theme switching.
168
+ * Squircle shape with glass backdrop.
126
169
  */
127
170
  declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
128
171
  declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
@@ -183,12 +226,14 @@ declare function OrgLoader({ size, caption, overlay, className, ...props }: OrgL
183
226
  declare function OrgLoaderInline({ className, ...props }: React.SVGProps<SVGSVGElement>): react_jsx_runtime.JSX.Element;
184
227
 
185
228
  /**
186
- * Alert — Asymmetric alerts with floating icon wrapper
229
+ * Alert — Organic Glass Alert
187
230
  *
188
- * From the Feedback & Messaging HTML:
189
- * - border-l-4 with semantic color
190
- * - floating icon wrapper that rotates slightly and straightens on hover
191
- * - glass background
231
+ * Design language matching organic design system:
232
+ * - Squircle rounding
233
+ * - Glass backdrop with blur
234
+ * - border-l-4 semantic color accent
235
+ * - Floating icon wrapper with slight rotation
236
+ * - Theme-aware borders using CSS variables
192
237
  */
193
238
  declare const alertVariants: (props?: ({
194
239
  variant?: "error" | "success" | "warning" | "info" | null | undefined;
@@ -211,25 +256,34 @@ interface AlertProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<
211
256
  declare function Alert({ className, variant, title, description, icon, onClose, action, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
212
257
 
213
258
  /**
214
- * Toast — Asymmetric Glow Toasts
259
+ * Toast — Organic Glass Toast
215
260
  *
216
- * From the Feedback HTML:
217
- * - Glass panel with rounded corners
218
- * - Asymmetric glow shadow behind (offset, blurred)
219
- * - Optional progress bar, avatar, close button
220
- *
221
- * NOTE: This is the visual component only.
222
- * For a full toast system, pair with Sonner or a toast context.
261
+ * Design language matching organic design system:
262
+ * - Squircle rounding
263
+ * - Glass backdrop with blur
264
+ * - Theme-aware borders using CSS variables
265
+ * - Colored left accent border for variant indication
266
+ * - Auto-dismiss with optional progress bar
223
267
  */
224
- interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {
225
- /** Glow color class, e.g. 'bg-blue-500/30' */
226
- glowColor?: string;
227
- /** Glow offset direction */
228
- glowDirection?: 'right' | 'left';
268
+ declare const toastVariants: (props?: ({
269
+ variant?: "default" | "error" | "success" | "warning" | "info" | null | undefined;
270
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
271
+ interface ToastProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof toastVariants> {
229
272
  /** Close handler */
230
273
  onClose?: () => void;
274
+ /** Custom icon element (overrides default variant icon) */
275
+ icon?: React.ReactNode;
276
+ /** Title text */
277
+ title?: string;
278
+ /** Description text */
279
+ description?: string;
280
+ /** Action button */
281
+ action?: {
282
+ label: string;
283
+ onClick: () => void;
284
+ };
231
285
  }
232
- declare function Toast({ className, glowColor, glowDirection, onClose, children, ...props }: ToastProps): react_jsx_runtime.JSX.Element;
286
+ declare function Toast({ className, variant, onClose, icon, title, description, action, children, ...props }: ToastProps): react_jsx_runtime.JSX.Element;
233
287
  /**
234
288
  * ToastProgress — Progress bar inside a toast
235
289
  */
@@ -262,6 +316,67 @@ interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
262
316
  }
263
317
  declare function EmptyState({ className, icon, title, description, actionLabel, onAction, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
264
318
 
319
+ declare function useMediaQuery(query: string): boolean;
320
+ interface TaskDetailPanelProps {
321
+ /** Whether the panel is open */
322
+ open: boolean;
323
+ /** Callback when open state changes */
324
+ onOpenChange: (open: boolean) => void;
325
+ /** Task title (shown in header) */
326
+ title?: string;
327
+ /** Task subtitle / number */
328
+ subtitle?: string;
329
+ /** Panel content */
330
+ children: React.ReactNode;
331
+ /** Desktop breakpoint query */
332
+ desktopQuery?: string;
333
+ /** Loading state — shows skeleton content instead of children */
334
+ loading?: boolean;
335
+ /** Error state — shows error fallback instead of children */
336
+ error?: string | null;
337
+ /** Empty state — shows empty fallback instead of children */
338
+ empty?: boolean;
339
+ /** Custom loading skeleton (default: built-in skeleton) */
340
+ loadingSkeleton?: React.ReactNode;
341
+ /** Custom empty state content */
342
+ emptyContent?: React.ReactNode;
343
+ /** Retry callback for error state */
344
+ onRetry?: () => void;
345
+ }
346
+ declare function TaskDetailPanel({ open, onOpenChange, title, subtitle, children, desktopQuery, loading, error, empty, loadingSkeleton, emptyContent, onRetry, }: TaskDetailPanelProps): react_jsx_runtime.JSX.Element;
347
+ declare namespace TaskDetailPanel {
348
+ var displayName: string;
349
+ }
350
+
351
+ declare function BoardSkeleton({ className, columns }: {
352
+ className?: string;
353
+ columns?: number;
354
+ }): react_jsx_runtime.JSX.Element;
355
+ declare function TaskListSkeleton({ className, rows }: {
356
+ className?: string;
357
+ rows?: number;
358
+ }): react_jsx_runtime.JSX.Element;
359
+ declare function ProjectListSkeleton({ className, items }: {
360
+ className?: string;
361
+ items?: number;
362
+ }): react_jsx_runtime.JSX.Element;
363
+ declare function SprintSkeleton({ className }: {
364
+ className?: string;
365
+ }): react_jsx_runtime.JSX.Element;
366
+ declare function DashboardSkeleton({ className }: {
367
+ className?: string;
368
+ }): react_jsx_runtime.JSX.Element;
369
+ declare function MemberListSkeleton({ className, rows }: {
370
+ className?: string;
371
+ rows?: number;
372
+ }): react_jsx_runtime.JSX.Element;
373
+ declare function ChatSkeleton({ className }: {
374
+ className?: string;
375
+ }): react_jsx_runtime.JSX.Element;
376
+ declare function SettingsSkeleton({ className }: {
377
+ className?: string;
378
+ }): react_jsx_runtime.JSX.Element;
379
+
265
380
  /**
266
381
  * GlassPanel — Core layout container
267
382
  *
@@ -311,6 +426,71 @@ interface DockButtonProps {
311
426
  }
312
427
  declare function DockButton({ item }: DockButtonProps): react_jsx_runtime.JSX.Element;
313
428
 
429
+ interface SidebarNavItem {
430
+ id: string;
431
+ icon: React.ReactNode;
432
+ label: string;
433
+ href?: string;
434
+ onClick?: () => void;
435
+ active?: boolean;
436
+ badge?: number | string;
437
+ disabled?: boolean;
438
+ }
439
+ interface SidebarNavSeparator {
440
+ type: 'separator';
441
+ label?: string;
442
+ }
443
+ type SidebarNavEntry = SidebarNavItem | SidebarNavSeparator;
444
+ interface DockSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
445
+ /** Navigation items */
446
+ items: SidebarNavEntry[];
447
+ /** Bottom-pinned items (e.g., settings, profile) */
448
+ bottomItems?: SidebarNavEntry[];
449
+ /** Header slot (e.g., logo or workspace avatar) */
450
+ header?: React.ReactNode;
451
+ /** Whether the sidebar is expanded */
452
+ expanded?: boolean;
453
+ /** Callback when expanded state changes */
454
+ onExpandedChange?: (expanded: boolean) => void;
455
+ /** Render custom link element (for Next.js Link etc.) */
456
+ renderLink?: (props: {
457
+ href: string;
458
+ children: React.ReactNode;
459
+ className: string;
460
+ onClick?: () => void;
461
+ }) => React.ReactNode;
462
+ }
463
+ declare function DockSidebar({ items, bottomItems, header, expanded, onExpandedChange, renderLink, className, ...props }: DockSidebarProps): react_jsx_runtime.JSX.Element;
464
+ declare namespace DockSidebar {
465
+ var displayName: string;
466
+ }
467
+ declare function SidebarEntry({ entry, expanded, renderLink, }: {
468
+ entry: SidebarNavEntry;
469
+ expanded: boolean;
470
+ renderLink?: DockSidebarProps['renderLink'];
471
+ }): react_jsx_runtime.JSX.Element;
472
+ declare function SidebarButton({ item, expanded, renderLink, }: {
473
+ item: SidebarNavItem;
474
+ expanded: boolean;
475
+ renderLink?: DockSidebarProps['renderLink'];
476
+ }): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
477
+
478
+ interface WorkspaceSwitcherProps {
479
+ /** Whether the sidebar is collapsed (icon-only mode) */
480
+ compact?: boolean;
481
+ /** Callback when user submits the create workspace form */
482
+ onCreateWorkspace?: (data: {
483
+ name: string;
484
+ description: string;
485
+ }) => void | Promise<void>;
486
+ /** Additional CSS class */
487
+ className?: string;
488
+ }
489
+ declare function WorkspaceSwitcher({ compact, onCreateWorkspace, className }: WorkspaceSwitcherProps): react_jsx_runtime.JSX.Element;
490
+ declare namespace WorkspaceSwitcher {
491
+ var displayName: string;
492
+ }
493
+
314
494
  /**
315
495
  * Logo — Organify geometric diamond logo
316
496
  *
@@ -372,6 +552,13 @@ interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement>, VariantP
372
552
  }
373
553
  declare function MetricCard({ value, label, subtitle, icon, progress, trend, badge, variant, className, ...props }: MetricCardProps): react_jsx_runtime.JSX.Element;
374
554
 
555
+ declare function MetricCardSkeleton({ className }: {
556
+ className?: string;
557
+ }): react_jsx_runtime.JSX.Element;
558
+ declare namespace MetricCardSkeleton {
559
+ var displayName: string;
560
+ }
561
+
375
562
  /**
376
563
  * Stepper — Horizontal workflow steps with connecting line
377
564
  *
@@ -384,7 +571,7 @@ interface StepperStep {
384
571
  description?: string;
385
572
  icon?: React.ReactNode;
386
573
  }
387
- type StepStatus = 'completed' | 'active' | 'pending';
574
+ type StepStatus = 'completed' | 'active' | 'pending' | 'error';
388
575
  interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {
389
576
  steps: StepperStep[];
390
577
  /** Index of the currently active step (0-based) */
@@ -393,8 +580,10 @@ interface StepperProps extends React.HTMLAttributes<HTMLDivElement> {
393
580
  orientation?: 'horizontal' | 'vertical';
394
581
  /** Cream light theme */
395
582
  variant?: 'default' | 'cream';
583
+ /** Indices of steps in error state */
584
+ errorSteps?: number[];
396
585
  }
397
- declare function Stepper({ steps, activeStep, orientation, variant, className, ...props }: StepperProps): react_jsx_runtime.JSX.Element;
586
+ declare function Stepper({ steps, activeStep, orientation, variant, errorSteps, className, ...props }: StepperProps): react_jsx_runtime.JSX.Element;
398
587
  declare function StepCircle({ status, icon, index, variant, }: {
399
588
  status: StepStatus;
400
589
  icon?: React.ReactNode;
@@ -427,4 +616,795 @@ interface StatusPillProps extends React.HTMLAttributes<HTMLSpanElement>, Variant
427
616
  }
428
617
  declare function StatusPill({ variant, size, glow, dot, pulse, icon, children, className, ...props }: StatusPillProps): react_jsx_runtime.JSX.Element;
429
618
 
430
- export { Alert, type AlertProps, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, Dock, DockButton, type DockEntry, type DockItem, type DockProps, EmptyState, type EmptyStateProps, GeometricIcon, type GeometricIconProps, GlassPanel, type GlassPanelProps, Input, type InputProps, Logo, type LogoProps, MetricCard, type MetricCardProps, OrgLoader, OrgLoaderInline, type OrgLoaderProps, Progress, type ProgressProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Skeleton, SkeletonCard, type SkeletonProps, StatusPill, type StatusPillProps, StepCircle, StepConnector, type StepStatus, Stepper, type StepperProps, type StepperStep, Toast, ToastProgress, type ToastProps, Toggle, type ToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, geometricIconVariants, glassPanelVariants, inputVariants, metricCardVariants, orgLoaderVariants, statusPillVariants };
619
+ interface CommentAuthor {
620
+ id: string;
621
+ displayName: string;
622
+ avatarUrl: string | null;
623
+ }
624
+ interface CommentReaction {
625
+ emoji: string;
626
+ userId: string;
627
+ displayName?: string;
628
+ }
629
+ interface Comment {
630
+ id: string;
631
+ content: string;
632
+ author: CommentAuthor;
633
+ parentId: string | null;
634
+ replies?: Comment[];
635
+ replyCount: number;
636
+ reactions: CommentReaction[];
637
+ createdAt: string;
638
+ updatedAt: string | null;
639
+ edited: boolean;
640
+ /** Optimistic UI status */
641
+ _status?: 'pending' | 'sent' | 'error';
642
+ }
643
+ interface CommentThreadProps {
644
+ /** Entity type (task, project, sprint, etc.) */
645
+ entityType: string;
646
+ /** Entity ID to comment on */
647
+ entityId: string;
648
+ /**
649
+ * Current user info — if not provided, pulled from OrganifyProvider.
650
+ */
651
+ currentUser?: CommentAuthor;
652
+ /** Pre-loaded comments (if not provided, auto-fetched from API) */
653
+ comments?: Comment[];
654
+ /** Callback to fetch comments (if not provided, uses OrganifyProvider API) */
655
+ onFetch?: (entityType: string, entityId: string) => Promise<Comment[]>;
656
+ /** Callback to add a comment (if not provided, uses OrganifyProvider API) */
657
+ onAdd?: (input: {
658
+ entityType: string;
659
+ entityId: string;
660
+ content: string;
661
+ parentId?: string;
662
+ }) => Promise<Comment>;
663
+ /** Callback to edit a comment (if not provided, uses OrganifyProvider API) */
664
+ onEdit?: (commentId: string, content: string) => Promise<Comment>;
665
+ /** Callback to delete a comment (if not provided, uses OrganifyProvider API) */
666
+ onDelete?: (commentId: string) => Promise<void>;
667
+ /** Callback to toggle reaction */
668
+ onReact?: (commentId: string, emoji: string) => Promise<void>;
669
+ /** Max visible comments before "show more" */
670
+ maxVisible?: number;
671
+ /** CSS class */
672
+ className?: string;
673
+ }
674
+
675
+ type TaskStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'BLOCKED' | 'REVIEW';
676
+ type TaskPriority = 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT';
677
+ interface TaskLabel {
678
+ id: string;
679
+ name: string;
680
+ color: string;
681
+ }
682
+ interface TaskAssignee {
683
+ id: string;
684
+ name: string;
685
+ avatarUrl?: string;
686
+ }
687
+ interface TaskSubtask {
688
+ id: string;
689
+ title: string;
690
+ completed: boolean;
691
+ }
692
+ interface TaskDetailData {
693
+ id: string;
694
+ title: string;
695
+ description?: string;
696
+ number?: number;
697
+ status: TaskStatus;
698
+ priority: TaskPriority;
699
+ labels: TaskLabel[];
700
+ assignees: TaskAssignee[];
701
+ dueDate?: string;
702
+ startDate?: string;
703
+ storyPoints?: number;
704
+ subtaskCount?: number;
705
+ subtaskDone?: number;
706
+ commentCount?: number;
707
+ attachmentCount?: number;
708
+ subtasks?: TaskSubtask[];
709
+ }
710
+ interface TaskDetailSheetProps {
711
+ task: TaskDetailData | null;
712
+ open: boolean;
713
+ onOpenChange: (open: boolean) => void;
714
+ onUpdate?: (taskId: string, updates: Partial<TaskDetailData>) => Promise<void>;
715
+ onAddLabel?: (taskId: string) => void;
716
+ onRemoveLabel?: (taskId: string, labelId: string) => void;
717
+ onToggleLabel?: (taskId: string, label: TaskLabel) => void;
718
+ onCreateLabel?: (name: string, color: string) => Promise<TaskLabel>;
719
+ availableLabels?: TaskLabel[];
720
+ onAddAssignee?: (taskId: string) => void;
721
+ onRemoveAssignee?: (taskId: string, assigneeId: string) => void;
722
+ onToggleAssignee?: (taskId: string, assignee: TaskAssignee) => void;
723
+ availableUsers?: TaskAssignee[];
724
+ onAddSubtask?: (taskId: string, title: string) => Promise<void>;
725
+ onToggleSubtask?: (taskId: string, subtaskId: string, completed: boolean) => Promise<void>;
726
+ onDeleteSubtask?: (taskId: string, subtaskId: string) => Promise<void>;
727
+ onUpdateSubtask?: (taskId: string, subtaskId: string, title: string) => Promise<void>;
728
+ comments?: Comment[];
729
+ currentUser?: CommentAuthor;
730
+ loading?: boolean;
731
+ availableStatuses?: {
732
+ value: TaskStatus;
733
+ label: string;
734
+ }[];
735
+ availablePriorities?: {
736
+ value: TaskPriority;
737
+ label: string;
738
+ color: string;
739
+ }[];
740
+ }
741
+ declare function TaskDetailSheet({ task, open, onOpenChange, onUpdate, onAddLabel, onRemoveLabel, onToggleLabel, onCreateLabel, availableLabels, onAddAssignee, onRemoveAssignee, onToggleAssignee, availableUsers, onAddSubtask, onToggleSubtask, onDeleteSubtask, onUpdateSubtask, comments, currentUser, loading, availableStatuses, availablePriorities, }: TaskDetailSheetProps): react_jsx_runtime.JSX.Element;
742
+ declare namespace TaskDetailSheet {
743
+ var displayName: string;
744
+ }
745
+
746
+ declare const priorityConfig: {
747
+ readonly CRITICAL: {
748
+ readonly color: "bg-rose-500";
749
+ readonly label: "Critical";
750
+ readonly variant: "error";
751
+ };
752
+ readonly URGENT: {
753
+ readonly color: "bg-rose-500";
754
+ readonly label: "Urgent";
755
+ readonly variant: "error";
756
+ };
757
+ readonly HIGH: {
758
+ readonly color: "bg-amber-500";
759
+ readonly label: "High";
760
+ readonly variant: "warning";
761
+ };
762
+ readonly MEDIUM: {
763
+ readonly color: "bg-blue-500";
764
+ readonly label: "Medium";
765
+ readonly variant: "info";
766
+ };
767
+ readonly LOW: {
768
+ readonly color: "bg-neutral-400";
769
+ readonly label: "Low";
770
+ readonly variant: "default";
771
+ };
772
+ readonly NONE: {
773
+ readonly color: "bg-neutral-400";
774
+ readonly label: "None";
775
+ readonly variant: "default";
776
+ };
777
+ };
778
+ interface TaskCardData {
779
+ id: string;
780
+ title: string;
781
+ number?: number;
782
+ description?: string | null;
783
+ priority?: keyof typeof priorityConfig;
784
+ status?: TaskStatus;
785
+ storyPoints?: number | null;
786
+ /** Single assignee (legacy support) */
787
+ assignee?: {
788
+ id?: string;
789
+ name: string;
790
+ avatarUrl?: string | null;
791
+ } | null;
792
+ /** Multiple assignees - recommended approach */
793
+ assignees?: Array<{
794
+ id: string;
795
+ name: string;
796
+ avatarUrl?: string | null;
797
+ }>;
798
+ /** Assign to a group instead of individuals */
799
+ assigneeGroup?: {
800
+ id: string;
801
+ name: string;
802
+ memberCount: number;
803
+ avatarUrl?: string | null;
804
+ } | null;
805
+ labels?: Array<{
806
+ id: string;
807
+ name: string;
808
+ color: string;
809
+ } | string>;
810
+ dueDate?: string | null;
811
+ startDate?: string | null;
812
+ subtaskCount?: number;
813
+ subtaskDone?: number;
814
+ commentCount?: number;
815
+ attachmentCount?: number;
816
+ reworkCount?: number;
817
+ /** Subtasks for detail sheet */
818
+ subtasks?: Array<{
819
+ id: string;
820
+ title: string;
821
+ completed: boolean;
822
+ }>;
823
+ /** Extra fields the consumer can attach for detail rendering */
824
+ [key: string]: unknown;
825
+ }
826
+ interface TaskCardProps$1 extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onDragStart' | 'onDragEnd'> {
827
+ /** Task data to render (undefined will show skeleton) */
828
+ task?: TaskCardData;
829
+ /** Click handler when card is clicked (if set, internal sheet is disabled unless enableDetailSheet=true) */
830
+ onTaskClick?: (task: TaskCardData) => void;
831
+ /** Whether the card is being dragged */
832
+ isDragging?: boolean;
833
+ /** Whether the card is selected */
834
+ isSelected?: boolean;
835
+ /** Compact variant (less padding, fewer details) */
836
+ compact?: boolean;
837
+ /** Enable internal TaskDetailSheet (default true if onTaskClick is not provided) */
838
+ enableDetailSheet?: boolean;
839
+ /** Show drag handle for external DnD libraries */
840
+ showDragHandle?: boolean;
841
+ /** Callbacks for TaskDetailSheet operations */
842
+ onUpdate?: (taskId: string, updates: Partial<TaskDetailData>) => Promise<void>;
843
+ onAddLabel?: (taskId: string) => void;
844
+ onRemoveLabel?: (taskId: string, labelId: string) => void;
845
+ onAddAssignee?: (taskId: string) => void;
846
+ onRemoveAssignee?: (taskId: string, assigneeId: string) => void;
847
+ onAddSubtask?: (taskId: string, title: string) => Promise<void>;
848
+ onToggleSubtask?: (taskId: string, subtaskId: string, completed: boolean) => Promise<void>;
849
+ onDeleteSubtask?: (taskId: string, subtaskId: string) => Promise<void>;
850
+ onUpdateSubtask?: (taskId: string, subtaskId: string, title: string) => Promise<void>;
851
+ }
852
+ declare function TaskCard$1({ task, onTaskClick, isDragging, isSelected, compact, enableDetailSheet, showDragHandle, onUpdate, onAddLabel, onRemoveLabel, onAddAssignee, onRemoveAssignee, onAddSubtask, onToggleSubtask, onDeleteSubtask, onUpdateSubtask, className, ...props }: TaskCardProps$1): react_jsx_runtime.JSX.Element;
853
+ declare namespace TaskCard$1 {
854
+ var displayName: string;
855
+ }
856
+ declare function DueDateBadge({ date }: {
857
+ date: string;
858
+ }): react_jsx_runtime.JSX.Element;
859
+ declare function TaskCardSkeleton({ compact, className }: {
860
+ compact?: boolean;
861
+ className?: string;
862
+ }): react_jsx_runtime.JSX.Element;
863
+ declare namespace TaskCardSkeleton {
864
+ var displayName: string;
865
+ }
866
+
867
+ interface TaskDetailDialogProps {
868
+ task: TaskCardData | null;
869
+ open: boolean;
870
+ onOpenChange: (open: boolean) => void;
871
+ /** Comments to display (if not provided, auto-fetched via API) */
872
+ comments?: Comment[];
873
+ /** Current user (if not provided, derived from OrganifyProvider) */
874
+ currentUser?: CommentAuthor;
875
+ }
876
+ declare function TaskDetailDialog({ task, open, onOpenChange, comments, currentUser, }: TaskDetailDialogProps): react_jsx_runtime.JSX.Element | null;
877
+ declare namespace TaskDetailDialog {
878
+ var displayName: string;
879
+ }
880
+
881
+ interface KanbanTask {
882
+ id: string;
883
+ title: string;
884
+ description?: string;
885
+ number?: number;
886
+ priority?: 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT';
887
+ status?: 'TODO' | 'IN_PROGRESS' | 'DONE' | 'BLOCKED' | 'REVIEW';
888
+ labels?: Array<{
889
+ id: string;
890
+ name: string;
891
+ color: string;
892
+ } | string>;
893
+ assignee?: {
894
+ id?: string;
895
+ name: string;
896
+ avatarUrl?: string;
897
+ };
898
+ assignees?: Array<{
899
+ id: string;
900
+ name: string;
901
+ avatarUrl?: string;
902
+ }>;
903
+ dueDate?: string;
904
+ startDate?: string;
905
+ storyPoints?: number;
906
+ subtaskCount?: number;
907
+ subtaskDone?: number;
908
+ commentCount?: number;
909
+ subtasks?: Array<{
910
+ id: string;
911
+ title: string;
912
+ completed: boolean;
913
+ }>;
914
+ }
915
+ interface KanbanColumnData {
916
+ id: string;
917
+ title: string;
918
+ color?: string;
919
+ tasks: KanbanTask[];
920
+ }
921
+ interface KanbanBoardProps {
922
+ columns: KanbanColumnData[];
923
+ onColumnChange?: (columns: KanbanColumnData[]) => void;
924
+ onTaskMove?: (taskId: string, fromColumnId: string, toColumnId: string, newIndex: number) => void;
925
+ /** Called with (columnId, title) when inline task is created */
926
+ onAddTask?: (columnId: string, title?: string) => void;
927
+ /** Called with (title) when inline column is created */
928
+ onAddColumn?: (title?: string) => void;
929
+ /** Called with (columnId, newTitle) when column is renamed inline */
930
+ onRenameColumn?: (columnId: string, newTitle: string) => void;
931
+ className?: string;
932
+ /**
933
+ * External drag-and-drop library integration
934
+ * If true, the component provides data attributes for external DnD
935
+ * If false, uses internal HTML5 drag-and-drop (basic)
936
+ */
937
+ externalDnD?: boolean;
938
+ /** TaskDetailSheet callbacks */
939
+ onTaskUpdate?: TaskDetailSheetProps['onUpdate'];
940
+ onAddLabel?: TaskDetailSheetProps['onAddLabel'];
941
+ onRemoveLabel?: TaskDetailSheetProps['onRemoveLabel'];
942
+ onAddAssignee?: TaskDetailSheetProps['onAddAssignee'];
943
+ onRemoveAssignee?: TaskDetailSheetProps['onRemoveAssignee'];
944
+ onAddSubtask?: TaskDetailSheetProps['onAddSubtask'];
945
+ onToggleSubtask?: TaskDetailSheetProps['onToggleSubtask'];
946
+ onDeleteSubtask?: TaskDetailSheetProps['onDeleteSubtask'];
947
+ onUpdateSubtask?: TaskDetailSheetProps['onUpdateSubtask'];
948
+ }
949
+ interface TaskCardProps {
950
+ task: KanbanTask;
951
+ columnId: string;
952
+ index: number;
953
+ onClick: () => void;
954
+ isDragging?: boolean;
955
+ externalDnD?: boolean;
956
+ onDragStart?: (e: React.DragEvent, task: KanbanTask, columnId: string) => void;
957
+ onDragEnd?: () => void;
958
+ }
959
+ declare function TaskCard({ task, columnId, index, onClick, isDragging, externalDnD, onDragStart, onDragEnd, }: TaskCardProps): react_jsx_runtime.JSX.Element;
960
+ interface ColumnComponentProps {
961
+ column: KanbanColumnData;
962
+ onTaskClick: (task: KanbanTask, columnId: string) => void;
963
+ onAddTask?: (columnId: string, title?: string) => void;
964
+ onRenameColumn?: (columnId: string, newTitle: string) => void;
965
+ externalDnD?: boolean;
966
+ draggedTask?: {
967
+ task: KanbanTask;
968
+ fromColumnId: string;
969
+ } | null;
970
+ onDragStart?: (e: React.DragEvent, task: KanbanTask, columnId: string) => void;
971
+ onDragEnd?: () => void;
972
+ onDragOver?: (e: React.DragEvent, columnId: string) => void;
973
+ onDrop?: (e: React.DragEvent, columnId: string) => void;
974
+ isDropTarget?: boolean;
975
+ }
976
+ declare function Column({ column, onTaskClick, onAddTask, onRenameColumn, externalDnD, draggedTask, onDragStart, onDragEnd, onDragOver, onDrop, isDropTarget, }: ColumnComponentProps): react_jsx_runtime.JSX.Element;
977
+ declare namespace Column {
978
+ var displayName: string;
979
+ }
980
+ declare function KanbanBoard({ columns, onColumnChange, onTaskMove, onAddTask, onAddColumn, onRenameColumn, className, externalDnD, onTaskUpdate, onAddLabel, onRemoveLabel, onAddAssignee, onRemoveAssignee, onAddSubtask, onToggleSubtask, onDeleteSubtask, onUpdateSubtask, }: KanbanBoardProps): react_jsx_runtime.JSX.Element;
981
+ declare namespace KanbanBoard {
982
+ var displayName: string;
983
+ }
984
+
985
+ type PlanTier = 'FREE' | 'STARTER' | 'PRO' | 'ENTERPRISE';
986
+ interface PlanLimit {
987
+ label: string;
988
+ current: number;
989
+ max: number;
990
+ /** Override percentage (0-100) */
991
+ percentage?: number;
992
+ }
993
+ interface PlanBadgeProps {
994
+ /** Current plan tier */
995
+ plan: PlanTier;
996
+ /** Display mode */
997
+ variant?: 'badge' | 'compact' | 'full';
998
+ /** Usage limits to display in full/compact mode */
999
+ limits?: PlanLimit[];
1000
+ /** Callback for upgrade CTA */
1001
+ onUpgrade?: () => void;
1002
+ /** Whether the plan is on trial */
1003
+ isTrial?: boolean;
1004
+ /** Days remaining in trial */
1005
+ trialDaysLeft?: number;
1006
+ /** CSS class */
1007
+ className?: string;
1008
+ }
1009
+ declare function PlanBadge({ variant, ...props }: PlanBadgeProps): react_jsx_runtime.JSX.Element;
1010
+
1011
+ declare function Card({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1012
+ declare function CardHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1013
+ declare function CardTitle({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1014
+ declare function CardDescription({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1015
+ declare function CardContent({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1016
+ declare function CardFooter({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1017
+
1018
+ declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
1019
+ declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
1020
+ declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): react_jsx_runtime.JSX.Element;
1021
+ declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): react_jsx_runtime.JSX.Element;
1022
+ declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): react_jsx_runtime.JSX.Element;
1023
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
1024
+ showCloseButton?: boolean;
1025
+ }): react_jsx_runtime.JSX.Element;
1026
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1027
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1028
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
1029
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): react_jsx_runtime.JSX.Element;
1030
+
1031
+ declare function Sheet({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
1032
+ declare function SheetTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
1033
+ declare function SheetClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): react_jsx_runtime.JSX.Element;
1034
+ declare function SheetContent({ className, children, side, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
1035
+ side?: 'top' | 'right' | 'bottom' | 'left';
1036
+ }): react_jsx_runtime.JSX.Element;
1037
+ declare function SheetHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1038
+ declare function SheetFooter({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1039
+ declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
1040
+ declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): react_jsx_runtime.JSX.Element;
1041
+
1042
+ declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
1043
+ declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
1044
+ declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
1045
+ declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
1046
+ declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
1047
+ declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
1048
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
1049
+ inset?: boolean;
1050
+ }): react_jsx_runtime.JSX.Element;
1051
+ declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): react_jsx_runtime.JSX.Element;
1052
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): react_jsx_runtime.JSX.Element;
1053
+ declare function DropdownMenuItem({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
1054
+ inset?: boolean;
1055
+ }): react_jsx_runtime.JSX.Element;
1056
+ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): react_jsx_runtime.JSX.Element;
1057
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): react_jsx_runtime.JSX.Element;
1058
+ declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
1059
+ inset?: boolean;
1060
+ }): react_jsx_runtime.JSX.Element;
1061
+ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): react_jsx_runtime.JSX.Element;
1062
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
1063
+
1064
+ declare const Tabs: React.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React.RefAttributes<HTMLDivElement>>;
1065
+ declare function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime.JSX.Element;
1066
+ declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
1067
+ declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime.JSX.Element;
1068
+
1069
+ declare function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>): react_jsx_runtime.JSX.Element;
1070
+
1071
+ declare function Label({ className, ...props }: React.ComponentProps<'label'>): react_jsx_runtime.JSX.Element;
1072
+
1073
+ /**
1074
+ * Textarea — Organic Glass textarea field
1075
+ *
1076
+ * Theme-aware: uses CSS variables for backgrounds and borders.
1077
+ * Squircle radius, organic easing, focus glow.
1078
+ */
1079
+ declare const textareaVariants: (props?: ({
1080
+ variant?: "default" | "flat" | "cream" | "rounded" | "error" | null | undefined;
1081
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1082
+ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>, VariantProps<typeof textareaVariants> {
1083
+ label?: string;
1084
+ error?: string;
1085
+ labelPosition?: 'left' | 'right';
1086
+ }
1087
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
1088
+
1089
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime.JSX.Element;
1090
+
1091
+ interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {
1092
+ }
1093
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
1094
+
1095
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>): react_jsx_runtime.JSX.Element;
1096
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>): react_jsx_runtime.JSX.Element;
1097
+
1098
+ declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
1099
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
1100
+ declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
1101
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof PopoverPrimitive.Content>): react_jsx_runtime.JSX.Element;
1102
+
1103
+ declare function Drawer({ shouldScaleBackground, ...props }: React.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
1104
+ declare const DrawerTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
1105
+ declare const DrawerPortal: typeof vaul.Portal;
1106
+ declare const DrawerClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
1107
+ declare function DrawerOverlay({ className, ...props }: React.ComponentProps<typeof Drawer$1.Overlay>): react_jsx_runtime.JSX.Element;
1108
+ declare function DrawerContent({ className, children, ...props }: React.ComponentProps<typeof Drawer$1.Content>): react_jsx_runtime.JSX.Element;
1109
+ declare function DrawerHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1110
+ declare function DrawerFooter({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1111
+ declare function DrawerTitle({ className, ...props }: React.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime.JSX.Element;
1112
+ declare function DrawerDescription({ className, ...props }: React.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime.JSX.Element;
1113
+
1114
+ declare const Collapsible: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React.RefAttributes<HTMLDivElement>>;
1115
+ declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
1116
+ declare const CollapsibleContent: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
1117
+
1118
+ interface ResponsiveDialogProps {
1119
+ /** Se o dialog/drawer está aberto */
1120
+ open: boolean;
1121
+ /** Callback quando o estado open muda */
1122
+ onOpenChange: (open: boolean) => void;
1123
+ /** Título do dialog/drawer */
1124
+ title?: string;
1125
+ /** Descrição/subtítulo */
1126
+ description?: string;
1127
+ /** Conteúdo principal */
1128
+ children: React.ReactNode;
1129
+ /** Ações do footer (botões) */
1130
+ footer?: React.ReactNode;
1131
+ /** Query para detectar desktop (default: min-width: 768px) */
1132
+ desktopQuery?: string;
1133
+ /** Classes CSS adicionais */
1134
+ className?: string;
1135
+ /** Classes CSS para o content wrapper */
1136
+ contentClassName?: string;
1137
+ }
1138
+ declare function ResponsiveDialog({ open, onOpenChange, title, description, children, footer, desktopQuery, className, contentClassName, }: ResponsiveDialogProps): react_jsx_runtime.JSX.Element;
1139
+ declare namespace ResponsiveDialog {
1140
+ var displayName: string;
1141
+ }
1142
+
1143
+ declare function Command({ className, ...props }: React.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
1144
+ declare function CommandDialog({ children, ...props }: DialogProps): react_jsx_runtime.JSX.Element;
1145
+ declare function CommandInput({ className, ...props }: React.ComponentProps<typeof Command$1.Input>): react_jsx_runtime.JSX.Element;
1146
+ declare function CommandList({ className, ...props }: React.ComponentProps<typeof Command$1.List>): react_jsx_runtime.JSX.Element;
1147
+ declare function CommandEmpty(props: React.ComponentProps<typeof Command$1.Empty>): react_jsx_runtime.JSX.Element;
1148
+ declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof Command$1.Group>): react_jsx_runtime.JSX.Element;
1149
+ declare function CommandSeparator({ className, ...props }: React.ComponentProps<typeof Command$1.Separator>): react_jsx_runtime.JSX.Element;
1150
+ declare function CommandItem({ className, ...props }: React.ComponentProps<typeof Command$1.Item>): react_jsx_runtime.JSX.Element;
1151
+ declare function CommandShortcut({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
1152
+
1153
+ declare function Breadcrumb({ ...props }: React.ComponentProps<'nav'> & {
1154
+ separator?: React.ReactNode;
1155
+ }): react_jsx_runtime.JSX.Element;
1156
+ declare function BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>): react_jsx_runtime.JSX.Element;
1157
+ declare function BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>): react_jsx_runtime.JSX.Element;
1158
+ declare function BreadcrumbLink({ asChild, className, ...props }: React.ComponentProps<'a'> & {
1159
+ asChild?: boolean;
1160
+ }): react_jsx_runtime.JSX.Element;
1161
+ declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
1162
+ declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<'li'>): react_jsx_runtime.JSX.Element;
1163
+ declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
1164
+
1165
+ declare function Empty({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1166
+ declare function EmptyHeader({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1167
+ declare const emptyMediaVariants: (props?: ({
1168
+ variant?: "default" | "icon" | null | undefined;
1169
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
1170
+ declare function EmptyMedia({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof emptyMediaVariants>): react_jsx_runtime.JSX.Element;
1171
+ declare function EmptyTitle({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1172
+ declare function EmptyDescription({ className, ...props }: React.ComponentProps<'p'>): react_jsx_runtime.JSX.Element;
1173
+ declare function EmptyContent({ className, ...props }: React.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
1174
+
1175
+ type ToasterProps = React.ComponentProps<typeof Toaster$1>;
1176
+ /**
1177
+ * Toaster — Sonner integration with organic glass design
1178
+ *
1179
+ * Uses rounded squircle shapes,
1180
+ * glass backdrop, and left accent border matching
1181
+ * the Toast/Alert design language.
1182
+ */
1183
+ declare function Toaster({ ...props }: ToasterProps): react_jsx_runtime.JSX.Element;
1184
+
1185
+ interface OrganifyWorkspace {
1186
+ id: string;
1187
+ name: string;
1188
+ slug: string;
1189
+ description?: string | null;
1190
+ avatarUrl?: string | null;
1191
+ plan?: {
1192
+ name: string;
1193
+ } | null;
1194
+ _count?: {
1195
+ members?: number;
1196
+ teams?: number;
1197
+ invites?: number;
1198
+ };
1199
+ }
1200
+ interface OrganifyUser {
1201
+ id: string;
1202
+ name: string;
1203
+ email: string;
1204
+ avatarUrl?: string | null;
1205
+ role?: string;
1206
+ }
1207
+ interface OrganifyProject {
1208
+ id: string;
1209
+ name: string;
1210
+ slug: string;
1211
+ description?: string | null;
1212
+ type?: string;
1213
+ status?: string;
1214
+ }
1215
+ interface OrganifyApiConfig {
1216
+ /** Gateway base URL (e.g. http://localhost:4000) */
1217
+ gatewayUrl: string;
1218
+ /** JWT auth token (from cookie or auth state) */
1219
+ authToken?: string;
1220
+ /** Direct service URLs for WebSocket/subscription connections (bypass gateway) */
1221
+ services?: {
1222
+ /** Chat service (e.g. https://organify-chat-service.onrender.com) */
1223
+ chat?: string;
1224
+ /** Notifications service (e.g. https://organify-notifications-service.onrender.com) */
1225
+ notifications?: string;
1226
+ /** Projects service (e.g. https://organify-projects-service.onrender.com) */
1227
+ projects?: string;
1228
+ /** Workspaces service (e.g. https://modern-nikki-organify-studio-787ea453.koyeb.app) */
1229
+ workspaces?: string;
1230
+ };
1231
+ }
1232
+ type GqlEndpoint = 'projects' | 'chat' | 'notifications' | 'workspaces';
1233
+ type RestEndpoint = 'auth' | 'users' | 'onboarding' | 'workspaces' | 'projects';
1234
+ interface OrganifyContextValue {
1235
+ api: OrganifyApiConfig;
1236
+ workspace: OrganifyWorkspace | null;
1237
+ workspaceLoading: boolean;
1238
+ workspaces: OrganifyWorkspace[];
1239
+ workspacesLoading: boolean;
1240
+ user: OrganifyUser | null;
1241
+ project: OrganifyProject | null;
1242
+ projectLoading: boolean;
1243
+ navigate?: (path: string) => void;
1244
+ renderLink?: (props: {
1245
+ href: string;
1246
+ children: React.ReactNode;
1247
+ className?: string;
1248
+ onClick?: () => void;
1249
+ }) => React.ReactNode;
1250
+ /** Called when workspaces list changes (create, update, delete) */
1251
+ onWorkspacesChange?: (workspaces: OrganifyWorkspace[]) => void;
1252
+ /** Called when active workspace should change (e.g. after create, switch) */
1253
+ onWorkspaceChange?: (workspace: OrganifyWorkspace | null) => void;
1254
+ }
1255
+ declare const OrganifyContext: React.Context<OrganifyContextValue>;
1256
+ declare function useOrganify(): OrganifyContextValue;
1257
+ /** Access the API config (gatewayUrl, authToken, services) for internal fetches */
1258
+ declare function useOrganifyApi(): OrganifyApiConfig;
1259
+ /**
1260
+ * Universal GraphQL fetch helper — ALL GraphQL requests go through this.
1261
+ *
1262
+ * Includes client-side rate limiting: identical queries are capped at
1263
+ * 5 per 2-second window. If exceeded, the call throws to prevent
1264
+ * runaway loops from overwhelming the backend.
1265
+ *
1266
+ * Usage:
1267
+ * const gql = useOrganifyGql();
1268
+ * const data = await gql('projects', CREATE_TASK_MUTATION, { input });
1269
+ * const data = await gql('chat', GET_ROOMS_QUERY, { workspaceId });
1270
+ * const data = await gql('workspaces', GET_WORKSPACES_QUERY);
1271
+ * const data = await gql('notifications', GET_NOTIFICATIONS_QUERY, { filter });
1272
+ */
1273
+ declare function useOrganifyGql(): <T = any>(endpoint: GqlEndpoint | string, query: string, variables?: Record<string, any>) => Promise<T>;
1274
+ /**
1275
+ * Universal REST fetch helper — ALL REST requests go through this.
1276
+ *
1277
+ * Usage:
1278
+ * const rest = useOrganifyRest();
1279
+ * const user = await rest('auth', 'me');
1280
+ * const data = await rest('auth', 'login', { method: 'POST', body: { email, password } });
1281
+ * const ws = await rest('workspaces', '');
1282
+ */
1283
+ declare function useOrganifyRest(): <T = any>(endpoint: RestEndpoint | string, path?: string, options?: {
1284
+ method?: string;
1285
+ body?: any;
1286
+ headers?: Record<string, string>;
1287
+ }) => Promise<T>;
1288
+ declare function useOrganifyWorkspace(): {
1289
+ workspace: OrganifyWorkspace | null;
1290
+ loading: boolean;
1291
+ workspaces: OrganifyWorkspace[];
1292
+ workspacesLoading: boolean;
1293
+ onWorkspacesChange: ((workspaces: OrganifyWorkspace[]) => void) | undefined;
1294
+ onWorkspaceChange: ((workspace: OrganifyWorkspace | null) => void) | undefined;
1295
+ };
1296
+ declare function useOrganifyUser(): OrganifyUser | null;
1297
+ declare function useOrganifyProject(): {
1298
+ project: OrganifyProject | null;
1299
+ loading: boolean;
1300
+ };
1301
+ declare function useOrganifyNavigation(): {
1302
+ navigate: ((path: string) => void) | undefined;
1303
+ renderLink: ((props: {
1304
+ href: string;
1305
+ children: React.ReactNode;
1306
+ className?: string;
1307
+ onClick?: () => void;
1308
+ }) => React.ReactNode) | undefined;
1309
+ };
1310
+ interface OrganifyProviderProps {
1311
+ children: React.ReactNode;
1312
+ value: Partial<OrganifyContextValue> & {
1313
+ api: OrganifyApiConfig;
1314
+ };
1315
+ }
1316
+ declare function OrganifyProvider({ children, value }: OrganifyProviderProps): react_jsx_runtime.JSX.Element;
1317
+ declare namespace OrganifyProvider {
1318
+ var displayName: string;
1319
+ }
1320
+
1321
+ declare function CommentThread({ entityType, entityId, currentUser: currentUserProp, comments: externalComments, onFetch, onAdd, onEdit, onDelete, onReact, maxVisible, className, }: CommentThreadProps): react_jsx_runtime.JSX.Element;
1322
+ declare namespace CommentThread {
1323
+ var displayName: string;
1324
+ }
1325
+
1326
+ interface CommentItemProps {
1327
+ comment: Comment;
1328
+ currentUser: CommentAuthor;
1329
+ depth?: number;
1330
+ onReply: (parentId: string) => void;
1331
+ onEdit?: (commentId: string, content: string) => Promise<any>;
1332
+ onDelete?: (commentId: string) => Promise<void>;
1333
+ onReact?: (commentId: string, emoji: string) => Promise<void>;
1334
+ }
1335
+ declare function CommentItem({ comment, currentUser, depth, onReply, onEdit, onDelete, onReact, }: CommentItemProps): react_jsx_runtime.JSX.Element;
1336
+
1337
+ interface CreateProjectDialogProps {
1338
+ open: boolean;
1339
+ onOpenChange: (open: boolean) => void;
1340
+ /** Called after successful creation with the new project */
1341
+ onCreated?: (project: {
1342
+ id: string;
1343
+ name: string;
1344
+ slug: string;
1345
+ }) => void;
1346
+ }
1347
+ declare function CreateProjectDialog({ open, onOpenChange, onCreated, }: CreateProjectDialogProps): react_jsx_runtime.JSX.Element;
1348
+
1349
+ interface CreateWorkspaceDialogProps {
1350
+ open: boolean;
1351
+ onOpenChange: (open: boolean) => void;
1352
+ /** Called after successful creation */
1353
+ onCreated?: (workspace: {
1354
+ id: string;
1355
+ name: string;
1356
+ slug: string;
1357
+ }) => void;
1358
+ }
1359
+ declare function CreateWorkspaceDialog({ open, onOpenChange, onCreated, }: CreateWorkspaceDialogProps): react_jsx_runtime.JSX.Element;
1360
+
1361
+ interface CreateSprintDialogProps {
1362
+ open: boolean;
1363
+ onOpenChange: (open: boolean) => void;
1364
+ /** Override projectId if not using OrganifyProvider context */
1365
+ projectId?: string;
1366
+ /** Called after successful creation */
1367
+ onCreated?: (sprint: {
1368
+ id: string;
1369
+ name: string;
1370
+ }) => void;
1371
+ }
1372
+ declare function CreateSprintDialog({ open, onOpenChange, projectId: propProjectId, onCreated, }: CreateSprintDialogProps): react_jsx_runtime.JSX.Element;
1373
+
1374
+ interface CreateEpicDialogProps {
1375
+ open: boolean;
1376
+ onOpenChange: (open: boolean) => void;
1377
+ projectId?: string;
1378
+ onCreated?: (epic: {
1379
+ id: string;
1380
+ name: string;
1381
+ }) => void;
1382
+ }
1383
+ declare function CreateEpicDialog({ open, onOpenChange, projectId: propProjectId, onCreated, }: CreateEpicDialogProps): react_jsx_runtime.JSX.Element;
1384
+
1385
+ interface CreateTaskDialogProps {
1386
+ open: boolean;
1387
+ onOpenChange: (open: boolean) => void;
1388
+ /** Override project context (otherwise uses OrganifyProvider) */
1389
+ projectId?: string;
1390
+ /** Called after successful creation with the new task */
1391
+ onCreated?: (task: {
1392
+ id: string;
1393
+ title: string;
1394
+ number: number;
1395
+ }) => void;
1396
+ }
1397
+ declare function CreateTaskDialog({ open, onOpenChange, projectId: projectIdProp, onCreated, }: CreateTaskDialogProps): react_jsx_runtime.JSX.Element;
1398
+
1399
+ interface InviteMemberDialogProps {
1400
+ open: boolean;
1401
+ onOpenChange: (open: boolean) => void;
1402
+ workspaceId?: string;
1403
+ onInvited?: (invite: {
1404
+ id: string;
1405
+ email: string;
1406
+ }) => void;
1407
+ }
1408
+ declare function InviteMemberDialog({ open, onOpenChange, workspaceId: propWorkspaceId, onInvited, }: InviteMemberDialogProps): react_jsx_runtime.JSX.Element;
1409
+
1410
+ export { Alert, type AlertProps, Avatar, AvatarFallback, AvatarImage, type AvatarProps, Badge, type BadgeProps, BoardSkeleton, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatSkeleton, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, type Comment, type CommentAuthor, CommentItem, type CommentReaction, CommentThread, type CommentThreadProps, CreateEpicDialog, type CreateEpicDialogProps, CreateProjectDialog, type CreateProjectDialogProps, CreateSprintDialog, type CreateSprintDialogProps, CreateTaskDialog, type CreateTaskDialogProps, CreateWorkspaceDialog, type CreateWorkspaceDialogProps, DashboardSkeleton, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Dock, DockButton, type DockEntry, type DockItem, type DockProps, DockSidebar, type DockSidebarProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DueDateBadge, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, type EmptyStateProps, EmptyTitle, GeometricIcon, type GeometricIconProps, GlassPanel, type GlassPanelProps, type GqlEndpoint, Input, type InputProps, InviteMemberDialog, type InviteMemberDialogProps, KanbanBoard, type KanbanBoardProps, Column as KanbanColumn, type KanbanColumnData, type KanbanTask, TaskCard as KanbanTaskCard, Label, Logo, type LogoProps, MemberListSkeleton, MetricCard, type MetricCardProps, MetricCardSkeleton, OrgLoader, OrgLoaderInline, type OrgLoaderProps, type OrganifyApiConfig, OrganifyContext, type OrganifyContextValue, type OrganifyProject, OrganifyProvider, type OrganifyProviderProps, type OrganifyUser, type OrganifyWorkspace, PlanBadge, type PlanBadgeProps, type PlanLimit, type PlanTier, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, type ProgressProps, ProjectListSkeleton, ResponsiveDialog, type ResponsiveDialogProps, type RestEndpoint, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SettingsSkeleton, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SidebarButton, SidebarEntry, type SidebarNavEntry, type SidebarNavItem, Skeleton, SkeletonCard, type SkeletonProps, SprintSkeleton, StatusPill, type StatusPillProps, StepCircle, StepConnector, type StepStatus, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, Tabs, TabsContent, TabsList, TabsTrigger, type TaskAssignee, TaskCard$1 as TaskCard, type TaskCardData, type TaskCardProps$1 as TaskCardProps, TaskCardSkeleton, type TaskDetailData, TaskDetailDialog, type TaskDetailDialogProps, TaskDetailPanel, type TaskDetailPanelProps, TaskDetailSheet, type TaskDetailSheetProps, type TaskLabel, TaskListSkeleton, type TaskPriority, type TaskStatus, type TaskSubtask, Textarea, Toast, ToastProgress, type ToastProps, Toaster, type ToasterProps, Toggle, type ToggleProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserAvatar, type UserAvatarProps, WorkspaceSwitcher, type WorkspaceSwitcherProps, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, emptyMediaVariants, geometricIconVariants, glassPanelVariants, inputVariants, metricCardVariants, orgLoaderVariants, priorityConfig, statusPillVariants, useMediaQuery, useOrganify, useOrganifyApi, useOrganifyGql, useOrganifyNavigation, useOrganifyProject, useOrganifyRest, useOrganifyUser, useOrganifyWorkspace };