deepspace 0.4.1 → 0.4.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/index.d.ts CHANGED
@@ -7447,6 +7447,43 @@ interface ToastProviderProps {
7447
7447
  }
7448
7448
  declare function ToastProvider({ children, position, maxToasts, }: ToastProviderProps): React__default.ReactElement;
7449
7449
 
7450
+ /**
7451
+ * Error decoding + a friendly error screen.
7452
+ *
7453
+ * Production React replaces error text with a numeric code and a docs link
7454
+ * (e.g. `Minified React error #310`), so a developer whose app crashes in a
7455
+ * deployed build sees only the number. `decodeReactError` turns that number
7456
+ * back into a plain-English explanation; `ErrorScreen` renders it. The most
7457
+ * common offenders are the hook-order errors (#300 / #310), which almost
7458
+ * always mean a hook was placed after an early `return`.
7459
+ */
7460
+ interface DecodedReactError {
7461
+ code: number;
7462
+ title: string;
7463
+ explanation: string;
7464
+ hint: string;
7465
+ docsUrl: string;
7466
+ }
7467
+ /**
7468
+ * Decode a (possibly minified) React error into a friendly explanation, or
7469
+ * `null` if it isn't a recognizable React error — in which case the caller
7470
+ * should just show the raw message.
7471
+ */
7472
+ declare function decodeReactError(error: unknown): DecodedReactError | null;
7473
+ interface ErrorScreenProps {
7474
+ /** The thrown value, as caught by an error boundary (often non-Error). */
7475
+ error: unknown;
7476
+ /** Recovery action. Defaults to a full page reload. */
7477
+ onReset?: () => void;
7478
+ }
7479
+ /**
7480
+ * A self-contained crash screen. Renders standalone — it replaces the app
7481
+ * shell when used as a root error boundary, so it must not depend on app
7482
+ * providers (toasts, auth, theme context). It reuses only context-free
7483
+ * primitives and reads its colors from the active theme's CSS variables.
7484
+ */
7485
+ declare function ErrorScreen({ error, onReset }: ErrorScreenProps): react_jsx_runtime.JSX.Element;
7486
+
7450
7487
  interface EmptyStateProps extends React__default.HTMLAttributes<HTMLDivElement> {
7451
7488
  icon?: ReactNode;
7452
7489
  title: string;
@@ -7595,4 +7632,4 @@ interface SearchInputProps extends Omit<React$1.ComponentProps<'input'>, 'type'>
7595
7632
  }
7596
7633
  declare const SearchInput: React$1.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
7597
7634
 
7598
- export { type AdHocChargeOpts, type AiStreamAction, type AiStreamChunk, Alert, AlertDescription, AlertTitle, AuthGate, type AuthGateProps, AuthOverlay, Avatar, AvatarFallback, AvatarImage, Awareness, type AwarenessState, type AwarenessStates, Badge, type BadgeProps, type BaseMessage, Button, type ButtonProps, type CanvasShapeClient, Card, CardContent, CardDescription, CardFooter, CardGrid, CardHeader, CardTitle, type Channel, type ChannelInvitation, type ChannelMember, type ChargeOnceOpts, type ChargeOnceResult, Checkbox, type ClientMessage, type CollectionSchema, ConfirmModal, type ConnectionAttachment, type ConnectionStatus, type ContentSegment, type ConversationObject, type CronHistoryEntry, type CronTaskState, DEEPSPACE_THEME_PROPERTIES, DEFAULT_USER_COLORS, DeepSpaceAuthProvider, type DeepSpaceThemeConfig, DeepSpaceThemeProvider, type DeepSpaceThemeProviderProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENV, EmptyDocuments, EmptyError, EmptyItems, EmptyProjects, EmptySearch, EmptyState, EmptyTeam, type Environment, type FetchUserProfile, type FileAttachment, type GamePlayer, GridCard, type GroupedReaction, GuestBanner, type HandlerContext, type InboxEntry, Input, type IntegrationResponse, type JobStatusView, type JobView, Label, type LinkPreviewData, LoadingOverlay, LoadingSpinner, MSG, MSG_AWARENESS, MSG_SYNC, MSG_SYNC_STEP1, MSG_SYNC_STEP2, MSG_SYNC_UPDATE, MSG_YJS_AWARENESS, MSG_YJS_SYNC, type MemberRecord, type Message, type MessageHandlers, type MessageRecord, Modal, type MsgType, type PlanInfo, PlatformContext, type PlatformContextValue, PlatformProvider, type PlatformWSOptions, type PlatformWSResult, type PresencePeerClient, PricingTable, type PricingTablePlan, type PricingTablePrice, type ProductChargeOpts, Progress, type ProtocolMessage, type Purchase, type Query, type R2FileInfo, type R2Scope, type R2UploadResult, ROLES, ROLE_ADMIN, ROLE_ANONYMOUS, ROLE_CONFIG, ROLE_DEFAULT, type Reaction, type ReactionRecord, type ReadCursorRecord, type ReadReceipt, type RecordData, RecordProvider, type RecordProviderProps, RecordScope, type RequestOptions, type Role, type RoomUser, type ScopeEntry, ScopeRegistryProvider, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, type ServerMessage, SignedIn, SignedOut, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, SkeletonTable, SkeletonText, type SubscribeOpts, type SubscribeResult, type SubscriptionState, type SubscriptionStatus, Switch, type SyncResult, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseCanvasResult, type UseCheckoutOpts, type UseCronMonitorResult, type UseGameRoomResult, type UseJobsResult, type UsePresenceRoomResult, type UseR2FilesReturn, type UseYjsFieldResult, type UseYjsRoomResult, type UseYjsTextResult, type User, type UserCredits, type UserInfo, type UserKarma, type UserProfile, type ViewportClient, applyDeepSpaceTheme, applyUIThemeTokens, authClient, badgeVariants, buttonVariants, clearAuthToken, clearDeepSpaceTheme, clientBuild, cn, createDecoder, createEncoder, decodeAiStreamChunk, detectEnvironment, dispatch, encode, encodeAwarenessMessage, encodeSyncStep1, encodeSyncStep2, encodeUpdate, formatFileSize, formatFullTimestamp, formatMessageTime, getApiUrl, getAuthToken, getAuthUrl, getConversationDisplayName, getConversationParticipantIds, getEnvironmentConfig, getMessageType, getPlatformWorkerUrl, getThreadCounts, getUserColor, groupReactionsForMessage, handleAwarenessMessage, handleSyncMessage, hasContent, integration, isDMConversation, isDarkColor, isImageFile, isLocalDev, isProduction, parseMessageMetadata, parseSseLine, readThemeFromDOM, readVarUint, readVarUint8Array, resetEnvironmentCache, serverBuild, shouldGroupMessages, signIn, signOut, toConnectionStatus, toUint8Array, useAuth, useAuthUser, useCanvas, useChannelMembers, useChannels, useCheckout, useCommunities, useConversation, useConversations, useCronMonitor, useDisplayName, useGameRoom, useInbox, useIsDarkTheme, useJobs, useMessages, useMutations, usePlatform, usePlatformWS, usePosts, usePresence, usePresenceRoom, useQuery, useR2Files, useReactions, useReadReceipts, useRecordContext, useSession, useSubscription, useToast, useUser, useUserLookup, useUsers, useYjsField, useYjsRoom, useYjsText, writeVarUint, writeVarUint8Array };
7635
+ export { type AdHocChargeOpts, type AiStreamAction, type AiStreamChunk, Alert, AlertDescription, AlertTitle, AuthGate, type AuthGateProps, AuthOverlay, Avatar, AvatarFallback, AvatarImage, Awareness, type AwarenessState, type AwarenessStates, Badge, type BadgeProps, type BaseMessage, Button, type ButtonProps, type CanvasShapeClient, Card, CardContent, CardDescription, CardFooter, CardGrid, CardHeader, CardTitle, type Channel, type ChannelInvitation, type ChannelMember, type ChargeOnceOpts, type ChargeOnceResult, Checkbox, type ClientMessage, type CollectionSchema, ConfirmModal, type ConnectionAttachment, type ConnectionStatus, type ContentSegment, type ConversationObject, type CronHistoryEntry, type CronTaskState, DEEPSPACE_THEME_PROPERTIES, DEFAULT_USER_COLORS, type DecodedReactError, DeepSpaceAuthProvider, type DeepSpaceThemeConfig, DeepSpaceThemeProvider, type DeepSpaceThemeProviderProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENV, EmptyDocuments, EmptyError, EmptyItems, EmptyProjects, EmptySearch, EmptyState, EmptyTeam, type Environment, ErrorScreen, type ErrorScreenProps, type FetchUserProfile, type FileAttachment, type GamePlayer, GridCard, type GroupedReaction, GuestBanner, type HandlerContext, type InboxEntry, Input, type IntegrationResponse, type JobStatusView, type JobView, Label, type LinkPreviewData, LoadingOverlay, LoadingSpinner, MSG, MSG_AWARENESS, MSG_SYNC, MSG_SYNC_STEP1, MSG_SYNC_STEP2, MSG_SYNC_UPDATE, MSG_YJS_AWARENESS, MSG_YJS_SYNC, type MemberRecord, type Message, type MessageHandlers, type MessageRecord, Modal, type MsgType, type PlanInfo, PlatformContext, type PlatformContextValue, PlatformProvider, type PlatformWSOptions, type PlatformWSResult, type PresencePeerClient, PricingTable, type PricingTablePlan, type PricingTablePrice, type ProductChargeOpts, Progress, type ProtocolMessage, type Purchase, type Query, type R2FileInfo, type R2Scope, type R2UploadResult, ROLES, ROLE_ADMIN, ROLE_ANONYMOUS, ROLE_CONFIG, ROLE_DEFAULT, type Reaction, type ReactionRecord, type ReadCursorRecord, type ReadReceipt, type RecordData, RecordProvider, type RecordProviderProps, RecordScope, type RequestOptions, type Role, type RoomUser, type ScopeEntry, ScopeRegistryProvider, SearchInput, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, type ServerMessage, SignedIn, SignedOut, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, SkeletonTable, SkeletonText, type SubscribeOpts, type SubscribeResult, type SubscriptionState, type SubscriptionStatus, Switch, type SyncResult, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ToastProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseCanvasResult, type UseCheckoutOpts, type UseCronMonitorResult, type UseGameRoomResult, type UseJobsResult, type UsePresenceRoomResult, type UseR2FilesReturn, type UseYjsFieldResult, type UseYjsRoomResult, type UseYjsTextResult, type User, type UserCredits, type UserInfo, type UserKarma, type UserProfile, type ViewportClient, applyDeepSpaceTheme, applyUIThemeTokens, authClient, badgeVariants, buttonVariants, clearAuthToken, clearDeepSpaceTheme, clientBuild, cn, createDecoder, createEncoder, decodeAiStreamChunk, decodeReactError, detectEnvironment, dispatch, encode, encodeAwarenessMessage, encodeSyncStep1, encodeSyncStep2, encodeUpdate, formatFileSize, formatFullTimestamp, formatMessageTime, getApiUrl, getAuthToken, getAuthUrl, getConversationDisplayName, getConversationParticipantIds, getEnvironmentConfig, getMessageType, getPlatformWorkerUrl, getThreadCounts, getUserColor, groupReactionsForMessage, handleAwarenessMessage, handleSyncMessage, hasContent, integration, isDMConversation, isDarkColor, isImageFile, isLocalDev, isProduction, parseMessageMetadata, parseSseLine, readThemeFromDOM, readVarUint, readVarUint8Array, resetEnvironmentCache, serverBuild, shouldGroupMessages, signIn, signOut, toConnectionStatus, toUint8Array, useAuth, useAuthUser, useCanvas, useChannelMembers, useChannels, useCheckout, useCommunities, useConversation, useConversations, useCronMonitor, useDisplayName, useGameRoom, useInbox, useIsDarkTheme, useJobs, useMessages, useMutations, usePlatform, usePlatformWS, usePosts, usePresence, usePresenceRoom, useQuery, useR2Files, useReactions, useReadReceipts, useRecordContext, useSession, useSubscription, useToast, useUser, useUserLookup, useUsers, useYjsField, useYjsRoom, useYjsText, writeVarUint, writeVarUint8Array };
package/dist/index.js CHANGED
@@ -6272,9 +6272,109 @@ function ToastItem({ toast, onDismiss }) {
6272
6272
  );
6273
6273
  }
6274
6274
 
6275
+ // src/ui/ErrorBoundary.tsx
6276
+ import { AlertTriangle, RefreshCw } from "lucide-react";
6277
+ import { jsx as jsx29, jsxs as jsxs11 } from "react/jsx-runtime";
6278
+ var REACT_ERROR_TABLE = {
6279
+ 300: {
6280
+ title: "A component changed how many hooks it runs",
6281
+ explanation: "This component called fewer hooks than it did on its previous render.",
6282
+ hint: "Almost always an early return placed above a hook. Move every hook (useState, useEffect, useQuery, \u2026) above any conditional return so the same hooks run in the same order on every render."
6283
+ },
6284
+ 310: {
6285
+ title: "A component changed how many hooks it runs",
6286
+ explanation: "This component called more hooks than it did on its previous render.",
6287
+ hint: "Almost always an early return placed above a hook. Move every hook (useState, useEffect, useQuery, \u2026) above any conditional return so the same hooks run in the same order on every render."
6288
+ },
6289
+ 301: {
6290
+ title: "Too many re-renders",
6291
+ explanation: "React hit its render limit because the component updated state while rendering, which triggers an infinite render loop.",
6292
+ hint: "Don\u2019t call setState (or a mutation) directly in the render body. Move it into an event handler or an effect with the right dependencies."
6293
+ },
6294
+ 321: {
6295
+ title: "A hook was called in an invalid place",
6296
+ explanation: "Hooks can only be called at the top level of a function component or another hook.",
6297
+ hint: "Move the hook out of any condition, loop, callback, or plain (non-component) function. This can also mean two copies of React are installed."
6298
+ }
6299
+ };
6300
+ function extractReactErrorCode(message) {
6301
+ const patterns = [/react\.dev\/errors\/(\d+)/, /invariant=(\d+)/, /Minified React error #(\d+)/];
6302
+ for (const re of patterns) {
6303
+ const match = message.match(re);
6304
+ if (match) return Number(match[1]);
6305
+ }
6306
+ return null;
6307
+ }
6308
+ function errorMessage(error) {
6309
+ if (typeof error === "string") return error;
6310
+ if (error instanceof Error) return error.message;
6311
+ return null;
6312
+ }
6313
+ function decodeReactError(error) {
6314
+ const message = errorMessage(error);
6315
+ if (!message) return null;
6316
+ const code = extractReactErrorCode(message);
6317
+ if (code == null) return null;
6318
+ const known = REACT_ERROR_TABLE[code];
6319
+ return {
6320
+ code,
6321
+ docsUrl: `https://react.dev/errors/${code}`,
6322
+ title: known?.title ?? `React error #${code}`,
6323
+ explanation: known?.explanation ?? "React stopped rendering because of an error.",
6324
+ hint: known?.hint ?? "Run the app in development (npm run dev) to see the full, unminified message and the component that failed."
6325
+ };
6326
+ }
6327
+ function ErrorScreen({ error, onReset }) {
6328
+ const decoded = decodeReactError(error);
6329
+ const rawMessage = error instanceof Error ? error.message : typeof error === "string" ? error : "";
6330
+ const stack = error instanceof Error ? error.stack : void 0;
6331
+ const reset = onReset ?? (() => window.location.reload());
6332
+ return /* @__PURE__ */ jsx29(
6333
+ "div",
6334
+ {
6335
+ "data-testid": "ds-error-boundary",
6336
+ className: "flex h-full min-h-[60vh] flex-col items-center justify-center bg-background px-4 py-10 text-foreground",
6337
+ children: /* @__PURE__ */ jsxs11("div", { className: "w-full max-w-lg text-center", children: [
6338
+ /* @__PURE__ */ jsx29("div", { className: "mb-4 flex justify-center", children: /* @__PURE__ */ jsx29("span", { className: "inline-flex h-12 w-12 items-center justify-center rounded-full bg-destructive/10 text-destructive", children: /* @__PURE__ */ jsx29(AlertTriangle, { className: "h-6 w-6", "aria-hidden": true }) }) }),
6339
+ /* @__PURE__ */ jsx29("h1", { className: "text-lg font-semibold tracking-tight", children: decoded?.title ?? "Something went wrong" }),
6340
+ decoded?.explanation && /* @__PURE__ */ jsx29("p", { className: "mt-1.5 text-sm text-muted-foreground", children: decoded.explanation }),
6341
+ decoded?.hint && /* @__PURE__ */ jsxs11(Alert, { variant: "warning", className: "mt-4 text-left", children: [
6342
+ /* @__PURE__ */ jsx29(AlertTitle, { children: "How to fix" }),
6343
+ /* @__PURE__ */ jsx29(AlertDescription, { children: decoded.hint })
6344
+ ] }),
6345
+ rawMessage && /* @__PURE__ */ jsx29("pre", { className: "mt-4 overflow-x-auto rounded-lg border bg-muted/40 px-3 py-2 text-left text-xs text-muted-foreground", children: rawMessage }),
6346
+ stack && /* @__PURE__ */ jsxs11("details", { className: "mt-2 text-left", children: [
6347
+ /* @__PURE__ */ jsx29("summary", { className: "cursor-pointer text-xs text-muted-foreground", children: "Show stack trace" }),
6348
+ /* @__PURE__ */ jsx29("pre", { className: "mt-1 max-h-60 overflow-auto rounded-lg border bg-muted/40 px-3 py-2 text-xs text-muted-foreground", children: stack })
6349
+ ] }),
6350
+ /* @__PURE__ */ jsxs11("div", { className: "mt-6 flex items-center justify-center gap-3", children: [
6351
+ /* @__PURE__ */ jsxs11(Button, { onClick: reset, children: [
6352
+ /* @__PURE__ */ jsx29(RefreshCw, { className: "h-4 w-4", "aria-hidden": true }),
6353
+ "Reload"
6354
+ ] }),
6355
+ decoded && /* @__PURE__ */ jsxs11(
6356
+ "a",
6357
+ {
6358
+ href: decoded.docsUrl,
6359
+ target: "_blank",
6360
+ rel: "noreferrer",
6361
+ className: "text-sm text-muted-foreground underline-offset-4 hover:underline",
6362
+ children: [
6363
+ "React error #",
6364
+ decoded.code,
6365
+ " reference"
6366
+ ]
6367
+ }
6368
+ )
6369
+ ] })
6370
+ ] })
6371
+ }
6372
+ );
6373
+ }
6374
+
6275
6375
  // src/ui/EmptyState.tsx
6276
6376
  import { FileText, Search, Inbox, Plus, FolderOpen, Users, AlertCircle } from "lucide-react";
6277
- import { jsx as jsx29, jsxs as jsxs11 } from "react/jsx-runtime";
6377
+ import { jsx as jsx30, jsxs as jsxs12 } from "react/jsx-runtime";
6278
6378
  function EmptyState({
6279
6379
  icon,
6280
6380
  title,
@@ -6284,23 +6384,23 @@ function EmptyState({
6284
6384
  className = "",
6285
6385
  ...rest
6286
6386
  }) {
6287
- return /* @__PURE__ */ jsxs11("div", { className: cn("flex flex-col items-center justify-center py-16 px-4 text-center", className), ...rest, children: [
6288
- icon && /* @__PURE__ */ jsx29("div", { className: "w-16 h-16 rounded-2xl bg-muted/50 border border-border flex items-center justify-center mb-5", children: /* @__PURE__ */ jsx29("span", { className: "text-muted-foreground", children: icon }) }),
6289
- /* @__PURE__ */ jsx29("h3", { className: "text-lg font-semibold text-foreground mb-2", children: title }),
6290
- description && /* @__PURE__ */ jsx29("p", { className: "text-muted-foreground text-sm max-w-sm mb-6", children: description }),
6291
- (action || secondaryAction) && /* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-3", children: [
6292
- action && /* @__PURE__ */ jsxs11(
6387
+ return /* @__PURE__ */ jsxs12("div", { className: cn("flex flex-col items-center justify-center py-16 px-4 text-center", className), ...rest, children: [
6388
+ icon && /* @__PURE__ */ jsx30("div", { className: "w-16 h-16 rounded-2xl bg-muted/50 border border-border flex items-center justify-center mb-5", children: /* @__PURE__ */ jsx30("span", { className: "text-muted-foreground", children: icon }) }),
6389
+ /* @__PURE__ */ jsx30("h3", { className: "text-lg font-semibold text-foreground mb-2", children: title }),
6390
+ description && /* @__PURE__ */ jsx30("p", { className: "text-muted-foreground text-sm max-w-sm mb-6", children: description }),
6391
+ (action || secondaryAction) && /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3", children: [
6392
+ action && /* @__PURE__ */ jsxs12(
6293
6393
  "button",
6294
6394
  {
6295
6395
  onClick: action.onClick,
6296
6396
  className: "inline-flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-lg font-medium text-sm hover:bg-primary/90 shadow-lg shadow-primary/25 transition-all",
6297
6397
  children: [
6298
- /* @__PURE__ */ jsx29(Plus, { className: "w-4 h-4" }),
6398
+ /* @__PURE__ */ jsx30(Plus, { className: "w-4 h-4" }),
6299
6399
  action.label
6300
6400
  ]
6301
6401
  }
6302
6402
  ),
6303
- secondaryAction && /* @__PURE__ */ jsx29(
6403
+ secondaryAction && /* @__PURE__ */ jsx30(
6304
6404
  "button",
6305
6405
  {
6306
6406
  onClick: secondaryAction.onClick,
@@ -6312,10 +6412,10 @@ function EmptyState({
6312
6412
  ] });
6313
6413
  }
6314
6414
  function EmptyItems({ action, className }) {
6315
- return /* @__PURE__ */ jsx29(
6415
+ return /* @__PURE__ */ jsx30(
6316
6416
  EmptyState,
6317
6417
  {
6318
- icon: /* @__PURE__ */ jsx29(Inbox, { className: "w-8 h-8" }),
6418
+ icon: /* @__PURE__ */ jsx30(Inbox, { className: "w-8 h-8" }),
6319
6419
  title: "No items yet",
6320
6420
  description: "Get started by creating your first item.",
6321
6421
  action: action ? { label: action.label, onClick: action.onClick } : void 0,
@@ -6324,10 +6424,10 @@ function EmptyItems({ action, className }) {
6324
6424
  );
6325
6425
  }
6326
6426
  function EmptySearch({ query, onClear, className }) {
6327
- return /* @__PURE__ */ jsx29(
6427
+ return /* @__PURE__ */ jsx30(
6328
6428
  EmptyState,
6329
6429
  {
6330
- icon: /* @__PURE__ */ jsx29(Search, { className: "w-8 h-8" }),
6430
+ icon: /* @__PURE__ */ jsx30(Search, { className: "w-8 h-8" }),
6331
6431
  title: "No results found",
6332
6432
  description: query ? `No results for "${query}". Try a different search term.` : "Try adjusting your search or filters.",
6333
6433
  secondaryAction: onClear ? { label: "Clear search", onClick: onClear } : void 0,
@@ -6336,10 +6436,10 @@ function EmptySearch({ query, onClear, className }) {
6336
6436
  );
6337
6437
  }
6338
6438
  function EmptyDocuments({ action, className }) {
6339
- return /* @__PURE__ */ jsx29(
6439
+ return /* @__PURE__ */ jsx30(
6340
6440
  EmptyState,
6341
6441
  {
6342
- icon: /* @__PURE__ */ jsx29(FileText, { className: "w-8 h-8" }),
6442
+ icon: /* @__PURE__ */ jsx30(FileText, { className: "w-8 h-8" }),
6343
6443
  title: "No documents",
6344
6444
  description: "Create a document to start writing.",
6345
6445
  action: action ? { label: action.label, onClick: action.onClick } : void 0,
@@ -6348,10 +6448,10 @@ function EmptyDocuments({ action, className }) {
6348
6448
  );
6349
6449
  }
6350
6450
  function EmptyProjects({ action, className }) {
6351
- return /* @__PURE__ */ jsx29(
6451
+ return /* @__PURE__ */ jsx30(
6352
6452
  EmptyState,
6353
6453
  {
6354
- icon: /* @__PURE__ */ jsx29(FolderOpen, { className: "w-8 h-8" }),
6454
+ icon: /* @__PURE__ */ jsx30(FolderOpen, { className: "w-8 h-8" }),
6355
6455
  title: "No projects",
6356
6456
  description: "Create a project to organize your work.",
6357
6457
  action: action ? { label: action.label, onClick: action.onClick } : void 0,
@@ -6360,10 +6460,10 @@ function EmptyProjects({ action, className }) {
6360
6460
  );
6361
6461
  }
6362
6462
  function EmptyTeam({ action, className }) {
6363
- return /* @__PURE__ */ jsx29(
6463
+ return /* @__PURE__ */ jsx30(
6364
6464
  EmptyState,
6365
6465
  {
6366
- icon: /* @__PURE__ */ jsx29(Users, { className: "w-8 h-8" }),
6466
+ icon: /* @__PURE__ */ jsx30(Users, { className: "w-8 h-8" }),
6367
6467
  title: "No team members",
6368
6468
  description: "Invite people to collaborate with you.",
6369
6469
  action: action ? { label: action.label, onClick: action.onClick } : void 0,
@@ -6372,10 +6472,10 @@ function EmptyTeam({ action, className }) {
6372
6472
  );
6373
6473
  }
6374
6474
  function EmptyError({ error, onRetry, className }) {
6375
- return /* @__PURE__ */ jsx29(
6475
+ return /* @__PURE__ */ jsx30(
6376
6476
  EmptyState,
6377
6477
  {
6378
- icon: /* @__PURE__ */ jsx29(AlertCircle, { className: "w-8 h-8 text-destructive" }),
6478
+ icon: /* @__PURE__ */ jsx30(AlertCircle, { className: "w-8 h-8 text-destructive" }),
6379
6479
  title: "Something went wrong",
6380
6480
  description: error || "An error occurred. Please try again.",
6381
6481
  action: onRetry ? { label: "Try again", onClick: onRetry } : void 0,
@@ -6388,12 +6488,12 @@ function EmptyError({ error, onRetry, className }) {
6388
6488
  import * as React22 from "react";
6389
6489
  import * as DialogPrimitive from "@radix-ui/react-dialog";
6390
6490
  import { X } from "lucide-react";
6391
- import { jsx as jsx30, jsxs as jsxs12 } from "react/jsx-runtime";
6491
+ import { jsx as jsx31, jsxs as jsxs13 } from "react/jsx-runtime";
6392
6492
  var Dialog = DialogPrimitive.Root;
6393
6493
  var DialogTrigger = DialogPrimitive.Trigger;
6394
6494
  var DialogPortal = DialogPrimitive.Portal;
6395
6495
  var DialogClose = DialogPrimitive.Close;
6396
- var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
6496
+ var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
6397
6497
  DialogPrimitive.Overlay,
6398
6498
  {
6399
6499
  ref,
@@ -6405,9 +6505,9 @@ var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__P
6405
6505
  }
6406
6506
  ));
6407
6507
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
6408
- var DialogContent = React22.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs12(DialogPortal, { children: [
6409
- /* @__PURE__ */ jsx30(DialogOverlay, {}),
6410
- /* @__PURE__ */ jsxs12(
6508
+ var DialogContent = React22.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(DialogPortal, { children: [
6509
+ /* @__PURE__ */ jsx31(DialogOverlay, {}),
6510
+ /* @__PURE__ */ jsxs13(
6411
6511
  DialogPrimitive.Content,
6412
6512
  {
6413
6513
  ref,
@@ -6418,9 +6518,9 @@ var DialogContent = React22.forwardRef(({ className, children, ...props }, ref)
6418
6518
  ...props,
6419
6519
  children: [
6420
6520
  children,
6421
- /* @__PURE__ */ jsxs12(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
6422
- /* @__PURE__ */ jsx30(X, { className: "h-4 w-4" }),
6423
- /* @__PURE__ */ jsx30("span", { className: "sr-only", children: "Close" })
6521
+ /* @__PURE__ */ jsxs13(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
6522
+ /* @__PURE__ */ jsx31(X, { className: "h-4 w-4" }),
6523
+ /* @__PURE__ */ jsx31("span", { className: "sr-only", children: "Close" })
6424
6524
  ] })
6425
6525
  ]
6426
6526
  }
@@ -6430,7 +6530,7 @@ DialogContent.displayName = DialogPrimitive.Content.displayName;
6430
6530
  var DialogHeader = ({
6431
6531
  className,
6432
6532
  ...props
6433
- }) => /* @__PURE__ */ jsx30(
6533
+ }) => /* @__PURE__ */ jsx31(
6434
6534
  "div",
6435
6535
  {
6436
6536
  className: cn(
@@ -6444,7 +6544,7 @@ DialogHeader.displayName = "DialogHeader";
6444
6544
  var DialogFooter = ({
6445
6545
  className,
6446
6546
  ...props
6447
- }) => /* @__PURE__ */ jsx30(
6547
+ }) => /* @__PURE__ */ jsx31(
6448
6548
  "div",
6449
6549
  {
6450
6550
  className: cn(
@@ -6455,7 +6555,7 @@ var DialogFooter = ({
6455
6555
  }
6456
6556
  );
6457
6557
  DialogFooter.displayName = "DialogFooter";
6458
- var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
6558
+ var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
6459
6559
  DialogPrimitive.Title,
6460
6560
  {
6461
6561
  ref,
@@ -6467,7 +6567,7 @@ var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PUR
6467
6567
  }
6468
6568
  ));
6469
6569
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
6470
- var DialogDescription = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx30(
6570
+ var DialogDescription = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
6471
6571
  DialogPrimitive.Description,
6472
6572
  {
6473
6573
  ref,
@@ -6481,14 +6581,14 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
6481
6581
  import * as React23 from "react";
6482
6582
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
6483
6583
  import { Check as Check3, ChevronRight, Circle } from "lucide-react";
6484
- import { jsx as jsx31, jsxs as jsxs13 } from "react/jsx-runtime";
6584
+ import { jsx as jsx32, jsxs as jsxs14 } from "react/jsx-runtime";
6485
6585
  var DropdownMenu = DropdownMenuPrimitive.Root;
6486
6586
  var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
6487
6587
  var DropdownMenuGroup = DropdownMenuPrimitive.Group;
6488
6588
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
6489
6589
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
6490
6590
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
6491
- var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
6591
+ var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
6492
6592
  DropdownMenuPrimitive.SubTrigger,
6493
6593
  {
6494
6594
  ref,
@@ -6500,12 +6600,12 @@ var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, .
6500
6600
  ...props,
6501
6601
  children: [
6502
6602
  children,
6503
- /* @__PURE__ */ jsx31(ChevronRight, { className: "ml-auto" })
6603
+ /* @__PURE__ */ jsx32(ChevronRight, { className: "ml-auto" })
6504
6604
  ]
6505
6605
  }
6506
6606
  ));
6507
6607
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
6508
- var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
6608
+ var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
6509
6609
  DropdownMenuPrimitive.SubContent,
6510
6610
  {
6511
6611
  ref,
@@ -6517,7 +6617,7 @@ var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) =
6517
6617
  }
6518
6618
  ));
6519
6619
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
6520
- var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx31(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx31(
6620
+ var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx32(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx32(
6521
6621
  DropdownMenuPrimitive.Content,
6522
6622
  {
6523
6623
  ref,
@@ -6531,7 +6631,7 @@ var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...pr
6531
6631
  }
6532
6632
  ) }));
6533
6633
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
6534
- var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx31(
6634
+ var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx32(
6535
6635
  DropdownMenuPrimitive.Item,
6536
6636
  {
6537
6637
  ref,
@@ -6544,7 +6644,7 @@ var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref)
6544
6644
  }
6545
6645
  ));
6546
6646
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
6547
- var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs13(
6647
+ var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs14(
6548
6648
  DropdownMenuPrimitive.CheckboxItem,
6549
6649
  {
6550
6650
  ref,
@@ -6555,13 +6655,13 @@ var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checke
6555
6655
  checked,
6556
6656
  ...props,
6557
6657
  children: [
6558
- /* @__PURE__ */ jsx31("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx31(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Check3, { className: "h-4 w-4" }) }) }),
6658
+ /* @__PURE__ */ jsx32("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx32(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(Check3, { className: "h-4 w-4" }) }) }),
6559
6659
  children
6560
6660
  ]
6561
6661
  }
6562
6662
  ));
6563
6663
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
6564
- var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(
6664
+ var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
6565
6665
  DropdownMenuPrimitive.RadioItem,
6566
6666
  {
6567
6667
  ref,
@@ -6571,13 +6671,13 @@ var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props
6571
6671
  ),
6572
6672
  ...props,
6573
6673
  children: [
6574
- /* @__PURE__ */ jsx31("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx31(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx31(Circle, { className: "h-2 w-2 fill-current" }) }) }),
6674
+ /* @__PURE__ */ jsx32("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx32(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(Circle, { className: "h-2 w-2 fill-current" }) }) }),
6575
6675
  children
6576
6676
  ]
6577
6677
  }
6578
6678
  ));
6579
6679
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
6580
- var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx31(
6680
+ var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx32(
6581
6681
  DropdownMenuPrimitive.Label,
6582
6682
  {
6583
6683
  ref,
@@ -6590,7 +6690,7 @@ var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref)
6590
6690
  }
6591
6691
  ));
6592
6692
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
6593
- var DropdownMenuSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
6693
+ var DropdownMenuSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
6594
6694
  DropdownMenuPrimitive.Separator,
6595
6695
  {
6596
6696
  ref,
@@ -6603,7 +6703,7 @@ var DropdownMenuShortcut = ({
6603
6703
  className,
6604
6704
  ...props
6605
6705
  }) => {
6606
- return /* @__PURE__ */ jsx31(
6706
+ return /* @__PURE__ */ jsx32(
6607
6707
  "span",
6608
6708
  {
6609
6709
  className: cn("ml-auto text-xs tracking-widest opacity-60", className),
@@ -6616,11 +6716,11 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
6616
6716
  // src/ui/Tooltip.tsx
6617
6717
  import * as React24 from "react";
6618
6718
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
6619
- import { jsx as jsx32 } from "react/jsx-runtime";
6719
+ import { jsx as jsx33 } from "react/jsx-runtime";
6620
6720
  var TooltipProvider = TooltipPrimitive.Provider;
6621
6721
  var Tooltip = TooltipPrimitive.Root;
6622
6722
  var TooltipTrigger = TooltipPrimitive.Trigger;
6623
- var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx32(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx32(
6723
+ var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx33(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx33(
6624
6724
  TooltipPrimitive.Content,
6625
6725
  {
6626
6726
  ref,
@@ -6635,7 +6735,7 @@ var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }
6635
6735
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
6636
6736
 
6637
6737
  // src/ui/Modal.tsx
6638
- import { jsx as jsx33, jsxs as jsxs14 } from "react/jsx-runtime";
6738
+ import { jsx as jsx34, jsxs as jsxs15 } from "react/jsx-runtime";
6639
6739
  function Modal({
6640
6740
  open,
6641
6741
  onClose,
@@ -6649,24 +6749,24 @@ function Modal({
6649
6749
  lg: "max-w-[calc(100vw-2rem)] sm:max-w-2xl",
6650
6750
  xl: "max-w-[calc(100vw-2rem)] sm:max-w-4xl"
6651
6751
  };
6652
- return /* @__PURE__ */ jsx33(Dialog, { open, onOpenChange: (v) => {
6752
+ return /* @__PURE__ */ jsx34(Dialog, { open, onOpenChange: (v) => {
6653
6753
  if (!v) onClose();
6654
- }, children: /* @__PURE__ */ jsx33(DialogContent, { "aria-describedby": void 0, className: cn(sizes[size], "flex flex-col max-h-[85vh]", className), children }) });
6754
+ }, children: /* @__PURE__ */ jsx34(DialogContent, { "aria-describedby": void 0, className: cn(sizes[size], "flex flex-col max-h-[85vh]", className), children }) });
6655
6755
  }
6656
6756
  function ModalHeader({ children, className = "" }) {
6657
- return /* @__PURE__ */ jsx33(DialogHeader, { className, children });
6757
+ return /* @__PURE__ */ jsx34(DialogHeader, { className, children });
6658
6758
  }
6659
6759
  function ModalTitle({ children, className = "" }) {
6660
- return /* @__PURE__ */ jsx33(DialogTitle, { className, children });
6760
+ return /* @__PURE__ */ jsx34(DialogTitle, { className, children });
6661
6761
  }
6662
6762
  function ModalDescription({ children, className = "" }) {
6663
- return /* @__PURE__ */ jsx33(DialogDescription, { className, children });
6763
+ return /* @__PURE__ */ jsx34(DialogDescription, { className, children });
6664
6764
  }
6665
6765
  function ModalBody({ children, className = "" }) {
6666
- return /* @__PURE__ */ jsx33("div", { className: cn("flex-1 overflow-y-auto py-4", className), children });
6766
+ return /* @__PURE__ */ jsx34("div", { className: cn("flex-1 overflow-y-auto py-4", className), children });
6667
6767
  }
6668
6768
  function ModalFooter({ children, className = "" }) {
6669
- return /* @__PURE__ */ jsx33(DialogFooter, { className, children });
6769
+ return /* @__PURE__ */ jsx34(DialogFooter, { className, children });
6670
6770
  }
6671
6771
  function ConfirmModal({
6672
6772
  open,
@@ -6679,14 +6779,14 @@ function ConfirmModal({
6679
6779
  variant = "destructive",
6680
6780
  loading = false
6681
6781
  }) {
6682
- return /* @__PURE__ */ jsxs14(Modal, { open, onClose, size: "sm", children: [
6683
- /* @__PURE__ */ jsxs14(Modal.Header, { children: [
6684
- /* @__PURE__ */ jsx33(Modal.Title, { children: title }),
6685
- description && /* @__PURE__ */ jsx33(Modal.Description, { children: description })
6782
+ return /* @__PURE__ */ jsxs15(Modal, { open, onClose, size: "sm", children: [
6783
+ /* @__PURE__ */ jsxs15(Modal.Header, { children: [
6784
+ /* @__PURE__ */ jsx34(Modal.Title, { children: title }),
6785
+ description && /* @__PURE__ */ jsx34(Modal.Description, { children: description })
6686
6786
  ] }),
6687
- /* @__PURE__ */ jsxs14(Modal.Footer, { children: [
6688
- /* @__PURE__ */ jsx33(Button, { variant: "ghost", onClick: onClose, disabled: loading, children: cancelText }),
6689
- /* @__PURE__ */ jsx33(Button, { variant, onClick: onConfirm, loading, children: confirmText })
6787
+ /* @__PURE__ */ jsxs15(Modal.Footer, { children: [
6788
+ /* @__PURE__ */ jsx34(Button, { variant: "ghost", onClick: onClose, disabled: loading, children: cancelText }),
6789
+ /* @__PURE__ */ jsx34(Button, { variant, onClick: onConfirm, loading, children: confirmText })
6690
6790
  ] })
6691
6791
  ] });
6692
6792
  }
@@ -6699,12 +6799,12 @@ Modal.Footer = ModalFooter;
6699
6799
  // src/ui/SearchInput.tsx
6700
6800
  import * as React25 from "react";
6701
6801
  import { Search as Search2, X as X2 } from "lucide-react";
6702
- import { jsx as jsx34, jsxs as jsxs15 } from "react/jsx-runtime";
6802
+ import { jsx as jsx35, jsxs as jsxs16 } from "react/jsx-runtime";
6703
6803
  var SearchInput = React25.forwardRef(
6704
6804
  ({ className, onClear, value, ...props }, ref) => {
6705
- return /* @__PURE__ */ jsxs15("div", { className: "relative", children: [
6706
- /* @__PURE__ */ jsx34(Search2, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
6707
- /* @__PURE__ */ jsx34(
6805
+ return /* @__PURE__ */ jsxs16("div", { className: "relative", children: [
6806
+ /* @__PURE__ */ jsx35(Search2, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
6807
+ /* @__PURE__ */ jsx35(
6708
6808
  Input,
6709
6809
  {
6710
6810
  ref,
@@ -6714,13 +6814,13 @@ var SearchInput = React25.forwardRef(
6714
6814
  ...props
6715
6815
  }
6716
6816
  ),
6717
- value && onClear && /* @__PURE__ */ jsx34(
6817
+ value && onClear && /* @__PURE__ */ jsx35(
6718
6818
  "button",
6719
6819
  {
6720
6820
  type: "button",
6721
6821
  onClick: onClear,
6722
6822
  className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground hover:text-foreground transition-colors",
6723
- children: /* @__PURE__ */ jsx34(X2, { className: "h-4 w-4" })
6823
+ children: /* @__PURE__ */ jsx35(X2, { className: "h-4 w-4" })
6724
6824
  }
6725
6825
  )
6726
6826
  ] });
@@ -6785,6 +6885,7 @@ export {
6785
6885
  EmptySearch,
6786
6886
  EmptyState,
6787
6887
  EmptyTeam,
6888
+ ErrorScreen,
6788
6889
  GridCard,
6789
6890
  GuestBanner,
6790
6891
  Input,
@@ -6861,6 +6962,7 @@ export {
6861
6962
  createDecoder,
6862
6963
  createEncoder,
6863
6964
  decodeAiStreamChunk,
6965
+ decodeReactError,
6864
6966
  detectEnvironment,
6865
6967
  dispatch,
6866
6968
  encode,