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.
- package/dist/chat-mock-data-DST5Tn_H.d.ts +339 -0
- package/dist/chunk-2Y3W6JSG.js +4143 -0
- package/dist/chunk-2Y3W6JSG.js.map +1 -0
- package/dist/{chunk-7GFTSEVQ.js → chunk-5L6BWKVA.js} +2 -3
- package/dist/chunk-5L6BWKVA.js.map +1 -0
- package/dist/{chunk-YIVDY4T6.js → chunk-AHMA7OV3.js} +69 -4
- package/dist/chunk-AHMA7OV3.js.map +1 -0
- package/dist/chunk-B3N3YGMA.js +456 -0
- package/dist/chunk-B3N3YGMA.js.map +1 -0
- package/dist/chunk-DW4ZGEBH.js +930 -0
- package/dist/chunk-DW4ZGEBH.js.map +1 -0
- package/dist/{chunk-FWI3KZVO.js → chunk-FQA33MF4.js} +2 -4
- package/dist/chunk-FQA33MF4.js.map +1 -0
- package/dist/chunk-WONVWB5R.js +271 -0
- package/dist/chunk-WONVWB5R.js.map +1 -0
- package/dist/components/chat/index.d.ts +55 -0
- package/dist/components/chat/index.js +5 -0
- package/dist/components/chat/index.js.map +1 -0
- package/dist/components/notifications/index.d.ts +204 -0
- package/dist/components/notifications/index.js +5 -0
- package/dist/components/notifications/index.js.map +1 -0
- package/dist/i18n/index.js +1 -1
- package/dist/icons/index.d.ts +10 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +1018 -38
- package/dist/index.js +7858 -892
- package/dist/index.js.map +1 -1
- package/dist/providers/theme-provider.js +1 -1
- package/dist/tailwind-preset.d.ts +1 -2
- package/dist/tailwind-preset.js +102 -16
- package/dist/tailwind-preset.js.map +1 -1
- package/dist/tokens/index.d.ts +131 -69
- package/dist/tokens/index.js +1 -1
- package/package.json +25 -3
- package/src/globals.css +591 -257
- package/dist/chunk-7GFTSEVQ.js.map +0 -1
- package/dist/chunk-FWI3KZVO.js.map +0 -1
- package/dist/chunk-WPZJKIZT.js +0 -248
- package/dist/chunk-WPZJKIZT.js.map +0 -1
- 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
|
-
|
|
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 —
|
|
36
|
+
* Button — Organic Squircle Actions
|
|
22
37
|
*
|
|
23
|
-
*
|
|
24
|
-
* -
|
|
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
|
|
52
|
+
* Input — Organic Glass input field
|
|
40
53
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
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 —
|
|
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
|
|
88
|
+
* Toggle / Switch — Glass toggle with organic styling
|
|
75
89
|
*
|
|
76
|
-
*
|
|
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
|
-
*
|
|
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 —
|
|
165
|
+
* Tooltip — Organic glass tooltip
|
|
124
166
|
*
|
|
125
|
-
*
|
|
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 —
|
|
229
|
+
* Alert — Organic Glass Alert
|
|
187
230
|
*
|
|
188
|
-
*
|
|
189
|
-
* -
|
|
190
|
-
* -
|
|
191
|
-
* -
|
|
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 —
|
|
259
|
+
* Toast — Organic Glass Toast
|
|
215
260
|
*
|
|
216
|
-
*
|
|
217
|
-
* -
|
|
218
|
-
* -
|
|
219
|
-
* -
|
|
220
|
-
*
|
|
221
|
-
*
|
|
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
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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,
|
|
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
|
-
|
|
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 };
|