deepspace 0.4.0 → 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/cli.js +145 -20
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +67 -12
- package/dist/index.js +203 -72
- package/dist/index.js.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/worker.js +3 -1
- package/dist/worker.js.map +1 -1
- package/features/file-attachments/feature.json +1 -0
- package/features/file-attachments/src/useFilePreview.ts +1 -1
- package/features/integration-test/src/IntegrationTestPage.tsx +1 -0
- package/features/integration-test/src/integration.spec.ts +14 -5
- package/features/messaging/src/components/chat/MessageList.tsx +1 -1
- package/features/presence-test/src/PresenceTestPage.tsx +1 -1
- package/features/search-bar/feature.json +34 -0
- package/features/search-bar/src/SearchOverlay.tsx +710 -0
- package/features/testing/src/subrequest-burn-action.ts +6 -3
- package/package.json +2 -2
- package/scripts/add-feature.cjs +5 -4
package/dist/index.js
CHANGED
|
@@ -892,7 +892,35 @@ function AuthOverlay({
|
|
|
892
892
|
}
|
|
893
893
|
)
|
|
894
894
|
] }),
|
|
895
|
-
/* @__PURE__ */ jsxs2("
|
|
895
|
+
/* @__PURE__ */ jsxs2("p", { className: "mt-5 text-xs leading-snug text-muted-foreground", children: [
|
|
896
|
+
"By continuing, you agree to the DeepSpace",
|
|
897
|
+
" ",
|
|
898
|
+
/* @__PURE__ */ jsx2(
|
|
899
|
+
"a",
|
|
900
|
+
{
|
|
901
|
+
href: "https://deep.space/terms",
|
|
902
|
+
target: "_blank",
|
|
903
|
+
rel: "noopener noreferrer",
|
|
904
|
+
className: "underline hover:text-foreground",
|
|
905
|
+
children: "Terms of Service"
|
|
906
|
+
}
|
|
907
|
+
),
|
|
908
|
+
" ",
|
|
909
|
+
"and",
|
|
910
|
+
" ",
|
|
911
|
+
/* @__PURE__ */ jsx2(
|
|
912
|
+
"a",
|
|
913
|
+
{
|
|
914
|
+
href: "https://deep.space/privacy",
|
|
915
|
+
target: "_blank",
|
|
916
|
+
rel: "noopener noreferrer",
|
|
917
|
+
className: "underline hover:text-foreground",
|
|
918
|
+
children: "Privacy Policy"
|
|
919
|
+
}
|
|
920
|
+
),
|
|
921
|
+
"."
|
|
922
|
+
] }),
|
|
923
|
+
/* @__PURE__ */ jsxs2("div", { className: "mt-4 flex items-center justify-center gap-1.5 text-[11px] text-muted-foreground", children: [
|
|
896
924
|
/* @__PURE__ */ jsx2("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "currentColor", opacity: "0.5", "aria-hidden": true, children: /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "12", r: "10" }) }),
|
|
897
925
|
"Powered by DeepSpace"
|
|
898
926
|
] })
|
|
@@ -3407,11 +3435,12 @@ function resolveFile(fileOrKey) {
|
|
|
3407
3435
|
}
|
|
3408
3436
|
function useR2Files(options) {
|
|
3409
3437
|
const [isUploading, setIsUploading] = useState13(false);
|
|
3438
|
+
const scope = options?.scope ?? "self";
|
|
3410
3439
|
const scopeParams = useMemo10(() => {
|
|
3411
3440
|
const params = new URLSearchParams();
|
|
3412
|
-
params.set("scope",
|
|
3441
|
+
params.set("scope", scope);
|
|
3413
3442
|
return params.toString();
|
|
3414
|
-
}, []);
|
|
3443
|
+
}, [scope]);
|
|
3415
3444
|
const authHeaders = useCallback15(async () => {
|
|
3416
3445
|
const token = await getAuthToken();
|
|
3417
3446
|
if (token) {
|
|
@@ -6243,9 +6272,109 @@ function ToastItem({ toast, onDismiss }) {
|
|
|
6243
6272
|
);
|
|
6244
6273
|
}
|
|
6245
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
|
+
|
|
6246
6375
|
// src/ui/EmptyState.tsx
|
|
6247
6376
|
import { FileText, Search, Inbox, Plus, FolderOpen, Users, AlertCircle } from "lucide-react";
|
|
6248
|
-
import { jsx as
|
|
6377
|
+
import { jsx as jsx30, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
6249
6378
|
function EmptyState({
|
|
6250
6379
|
icon,
|
|
6251
6380
|
title,
|
|
@@ -6255,23 +6384,23 @@ function EmptyState({
|
|
|
6255
6384
|
className = "",
|
|
6256
6385
|
...rest
|
|
6257
6386
|
}) {
|
|
6258
|
-
return /* @__PURE__ */
|
|
6259
|
-
icon && /* @__PURE__ */
|
|
6260
|
-
/* @__PURE__ */
|
|
6261
|
-
description && /* @__PURE__ */
|
|
6262
|
-
(action || secondaryAction) && /* @__PURE__ */
|
|
6263
|
-
action && /* @__PURE__ */
|
|
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(
|
|
6264
6393
|
"button",
|
|
6265
6394
|
{
|
|
6266
6395
|
onClick: action.onClick,
|
|
6267
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",
|
|
6268
6397
|
children: [
|
|
6269
|
-
/* @__PURE__ */
|
|
6398
|
+
/* @__PURE__ */ jsx30(Plus, { className: "w-4 h-4" }),
|
|
6270
6399
|
action.label
|
|
6271
6400
|
]
|
|
6272
6401
|
}
|
|
6273
6402
|
),
|
|
6274
|
-
secondaryAction && /* @__PURE__ */
|
|
6403
|
+
secondaryAction && /* @__PURE__ */ jsx30(
|
|
6275
6404
|
"button",
|
|
6276
6405
|
{
|
|
6277
6406
|
onClick: secondaryAction.onClick,
|
|
@@ -6283,10 +6412,10 @@ function EmptyState({
|
|
|
6283
6412
|
] });
|
|
6284
6413
|
}
|
|
6285
6414
|
function EmptyItems({ action, className }) {
|
|
6286
|
-
return /* @__PURE__ */
|
|
6415
|
+
return /* @__PURE__ */ jsx30(
|
|
6287
6416
|
EmptyState,
|
|
6288
6417
|
{
|
|
6289
|
-
icon: /* @__PURE__ */
|
|
6418
|
+
icon: /* @__PURE__ */ jsx30(Inbox, { className: "w-8 h-8" }),
|
|
6290
6419
|
title: "No items yet",
|
|
6291
6420
|
description: "Get started by creating your first item.",
|
|
6292
6421
|
action: action ? { label: action.label, onClick: action.onClick } : void 0,
|
|
@@ -6295,10 +6424,10 @@ function EmptyItems({ action, className }) {
|
|
|
6295
6424
|
);
|
|
6296
6425
|
}
|
|
6297
6426
|
function EmptySearch({ query, onClear, className }) {
|
|
6298
|
-
return /* @__PURE__ */
|
|
6427
|
+
return /* @__PURE__ */ jsx30(
|
|
6299
6428
|
EmptyState,
|
|
6300
6429
|
{
|
|
6301
|
-
icon: /* @__PURE__ */
|
|
6430
|
+
icon: /* @__PURE__ */ jsx30(Search, { className: "w-8 h-8" }),
|
|
6302
6431
|
title: "No results found",
|
|
6303
6432
|
description: query ? `No results for "${query}". Try a different search term.` : "Try adjusting your search or filters.",
|
|
6304
6433
|
secondaryAction: onClear ? { label: "Clear search", onClick: onClear } : void 0,
|
|
@@ -6307,10 +6436,10 @@ function EmptySearch({ query, onClear, className }) {
|
|
|
6307
6436
|
);
|
|
6308
6437
|
}
|
|
6309
6438
|
function EmptyDocuments({ action, className }) {
|
|
6310
|
-
return /* @__PURE__ */
|
|
6439
|
+
return /* @__PURE__ */ jsx30(
|
|
6311
6440
|
EmptyState,
|
|
6312
6441
|
{
|
|
6313
|
-
icon: /* @__PURE__ */
|
|
6442
|
+
icon: /* @__PURE__ */ jsx30(FileText, { className: "w-8 h-8" }),
|
|
6314
6443
|
title: "No documents",
|
|
6315
6444
|
description: "Create a document to start writing.",
|
|
6316
6445
|
action: action ? { label: action.label, onClick: action.onClick } : void 0,
|
|
@@ -6319,10 +6448,10 @@ function EmptyDocuments({ action, className }) {
|
|
|
6319
6448
|
);
|
|
6320
6449
|
}
|
|
6321
6450
|
function EmptyProjects({ action, className }) {
|
|
6322
|
-
return /* @__PURE__ */
|
|
6451
|
+
return /* @__PURE__ */ jsx30(
|
|
6323
6452
|
EmptyState,
|
|
6324
6453
|
{
|
|
6325
|
-
icon: /* @__PURE__ */
|
|
6454
|
+
icon: /* @__PURE__ */ jsx30(FolderOpen, { className: "w-8 h-8" }),
|
|
6326
6455
|
title: "No projects",
|
|
6327
6456
|
description: "Create a project to organize your work.",
|
|
6328
6457
|
action: action ? { label: action.label, onClick: action.onClick } : void 0,
|
|
@@ -6331,10 +6460,10 @@ function EmptyProjects({ action, className }) {
|
|
|
6331
6460
|
);
|
|
6332
6461
|
}
|
|
6333
6462
|
function EmptyTeam({ action, className }) {
|
|
6334
|
-
return /* @__PURE__ */
|
|
6463
|
+
return /* @__PURE__ */ jsx30(
|
|
6335
6464
|
EmptyState,
|
|
6336
6465
|
{
|
|
6337
|
-
icon: /* @__PURE__ */
|
|
6466
|
+
icon: /* @__PURE__ */ jsx30(Users, { className: "w-8 h-8" }),
|
|
6338
6467
|
title: "No team members",
|
|
6339
6468
|
description: "Invite people to collaborate with you.",
|
|
6340
6469
|
action: action ? { label: action.label, onClick: action.onClick } : void 0,
|
|
@@ -6343,10 +6472,10 @@ function EmptyTeam({ action, className }) {
|
|
|
6343
6472
|
);
|
|
6344
6473
|
}
|
|
6345
6474
|
function EmptyError({ error, onRetry, className }) {
|
|
6346
|
-
return /* @__PURE__ */
|
|
6475
|
+
return /* @__PURE__ */ jsx30(
|
|
6347
6476
|
EmptyState,
|
|
6348
6477
|
{
|
|
6349
|
-
icon: /* @__PURE__ */
|
|
6478
|
+
icon: /* @__PURE__ */ jsx30(AlertCircle, { className: "w-8 h-8 text-destructive" }),
|
|
6350
6479
|
title: "Something went wrong",
|
|
6351
6480
|
description: error || "An error occurred. Please try again.",
|
|
6352
6481
|
action: onRetry ? { label: "Try again", onClick: onRetry } : void 0,
|
|
@@ -6359,12 +6488,12 @@ function EmptyError({ error, onRetry, className }) {
|
|
|
6359
6488
|
import * as React22 from "react";
|
|
6360
6489
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
6361
6490
|
import { X } from "lucide-react";
|
|
6362
|
-
import { jsx as
|
|
6491
|
+
import { jsx as jsx31, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
6363
6492
|
var Dialog = DialogPrimitive.Root;
|
|
6364
6493
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
6365
6494
|
var DialogPortal = DialogPrimitive.Portal;
|
|
6366
6495
|
var DialogClose = DialogPrimitive.Close;
|
|
6367
|
-
var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
6496
|
+
var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
6368
6497
|
DialogPrimitive.Overlay,
|
|
6369
6498
|
{
|
|
6370
6499
|
ref,
|
|
@@ -6376,9 +6505,9 @@ var DialogOverlay = React22.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
6376
6505
|
}
|
|
6377
6506
|
));
|
|
6378
6507
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
6379
|
-
var DialogContent = React22.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
6380
|
-
/* @__PURE__ */
|
|
6381
|
-
/* @__PURE__ */
|
|
6508
|
+
var DialogContent = React22.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs13(DialogPortal, { children: [
|
|
6509
|
+
/* @__PURE__ */ jsx31(DialogOverlay, {}),
|
|
6510
|
+
/* @__PURE__ */ jsxs13(
|
|
6382
6511
|
DialogPrimitive.Content,
|
|
6383
6512
|
{
|
|
6384
6513
|
ref,
|
|
@@ -6389,9 +6518,9 @@ var DialogContent = React22.forwardRef(({ className, children, ...props }, ref)
|
|
|
6389
6518
|
...props,
|
|
6390
6519
|
children: [
|
|
6391
6520
|
children,
|
|
6392
|
-
/* @__PURE__ */
|
|
6393
|
-
/* @__PURE__ */
|
|
6394
|
-
/* @__PURE__ */
|
|
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" })
|
|
6395
6524
|
] })
|
|
6396
6525
|
]
|
|
6397
6526
|
}
|
|
@@ -6401,7 +6530,7 @@ DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
|
6401
6530
|
var DialogHeader = ({
|
|
6402
6531
|
className,
|
|
6403
6532
|
...props
|
|
6404
|
-
}) => /* @__PURE__ */
|
|
6533
|
+
}) => /* @__PURE__ */ jsx31(
|
|
6405
6534
|
"div",
|
|
6406
6535
|
{
|
|
6407
6536
|
className: cn(
|
|
@@ -6415,7 +6544,7 @@ DialogHeader.displayName = "DialogHeader";
|
|
|
6415
6544
|
var DialogFooter = ({
|
|
6416
6545
|
className,
|
|
6417
6546
|
...props
|
|
6418
|
-
}) => /* @__PURE__ */
|
|
6547
|
+
}) => /* @__PURE__ */ jsx31(
|
|
6419
6548
|
"div",
|
|
6420
6549
|
{
|
|
6421
6550
|
className: cn(
|
|
@@ -6426,7 +6555,7 @@ var DialogFooter = ({
|
|
|
6426
6555
|
}
|
|
6427
6556
|
);
|
|
6428
6557
|
DialogFooter.displayName = "DialogFooter";
|
|
6429
|
-
var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
6558
|
+
var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
6430
6559
|
DialogPrimitive.Title,
|
|
6431
6560
|
{
|
|
6432
6561
|
ref,
|
|
@@ -6438,7 +6567,7 @@ var DialogTitle = React22.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
6438
6567
|
}
|
|
6439
6568
|
));
|
|
6440
6569
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
6441
|
-
var DialogDescription = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
6570
|
+
var DialogDescription = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx31(
|
|
6442
6571
|
DialogPrimitive.Description,
|
|
6443
6572
|
{
|
|
6444
6573
|
ref,
|
|
@@ -6452,14 +6581,14 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
|
6452
6581
|
import * as React23 from "react";
|
|
6453
6582
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
6454
6583
|
import { Check as Check3, ChevronRight, Circle } from "lucide-react";
|
|
6455
|
-
import { jsx as
|
|
6584
|
+
import { jsx as jsx32, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
6456
6585
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
6457
6586
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
6458
6587
|
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
6459
6588
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
6460
6589
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
6461
6590
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
6462
|
-
var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */
|
|
6591
|
+
var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
6463
6592
|
DropdownMenuPrimitive.SubTrigger,
|
|
6464
6593
|
{
|
|
6465
6594
|
ref,
|
|
@@ -6471,12 +6600,12 @@ var DropdownMenuSubTrigger = React23.forwardRef(({ className, inset, children, .
|
|
|
6471
6600
|
...props,
|
|
6472
6601
|
children: [
|
|
6473
6602
|
children,
|
|
6474
|
-
/* @__PURE__ */
|
|
6603
|
+
/* @__PURE__ */ jsx32(ChevronRight, { className: "ml-auto" })
|
|
6475
6604
|
]
|
|
6476
6605
|
}
|
|
6477
6606
|
));
|
|
6478
6607
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
6479
|
-
var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
6608
|
+
var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
6480
6609
|
DropdownMenuPrimitive.SubContent,
|
|
6481
6610
|
{
|
|
6482
6611
|
ref,
|
|
@@ -6488,7 +6617,7 @@ var DropdownMenuSubContent = React23.forwardRef(({ className, ...props }, ref) =
|
|
|
6488
6617
|
}
|
|
6489
6618
|
));
|
|
6490
6619
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
6491
|
-
var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */
|
|
6620
|
+
var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx32(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx32(
|
|
6492
6621
|
DropdownMenuPrimitive.Content,
|
|
6493
6622
|
{
|
|
6494
6623
|
ref,
|
|
@@ -6502,7 +6631,7 @@ var DropdownMenuContent = React23.forwardRef(({ className, sideOffset = 4, ...pr
|
|
|
6502
6631
|
}
|
|
6503
6632
|
) }));
|
|
6504
6633
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
6505
|
-
var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */
|
|
6634
|
+
var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
6506
6635
|
DropdownMenuPrimitive.Item,
|
|
6507
6636
|
{
|
|
6508
6637
|
ref,
|
|
@@ -6515,7 +6644,7 @@ var DropdownMenuItem = React23.forwardRef(({ className, inset, ...props }, ref)
|
|
|
6515
6644
|
}
|
|
6516
6645
|
));
|
|
6517
6646
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
6518
|
-
var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */
|
|
6647
|
+
var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
6519
6648
|
DropdownMenuPrimitive.CheckboxItem,
|
|
6520
6649
|
{
|
|
6521
6650
|
ref,
|
|
@@ -6526,13 +6655,13 @@ var DropdownMenuCheckboxItem = React23.forwardRef(({ className, children, checke
|
|
|
6526
6655
|
checked,
|
|
6527
6656
|
...props,
|
|
6528
6657
|
children: [
|
|
6529
|
-
/* @__PURE__ */
|
|
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" }) }) }),
|
|
6530
6659
|
children
|
|
6531
6660
|
]
|
|
6532
6661
|
}
|
|
6533
6662
|
));
|
|
6534
6663
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
6535
|
-
var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */
|
|
6664
|
+
var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs14(
|
|
6536
6665
|
DropdownMenuPrimitive.RadioItem,
|
|
6537
6666
|
{
|
|
6538
6667
|
ref,
|
|
@@ -6542,13 +6671,13 @@ var DropdownMenuRadioItem = React23.forwardRef(({ className, children, ...props
|
|
|
6542
6671
|
),
|
|
6543
6672
|
...props,
|
|
6544
6673
|
children: [
|
|
6545
|
-
/* @__PURE__ */
|
|
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" }) }) }),
|
|
6546
6675
|
children
|
|
6547
6676
|
]
|
|
6548
6677
|
}
|
|
6549
6678
|
));
|
|
6550
6679
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
6551
|
-
var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */
|
|
6680
|
+
var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
6552
6681
|
DropdownMenuPrimitive.Label,
|
|
6553
6682
|
{
|
|
6554
6683
|
ref,
|
|
@@ -6561,7 +6690,7 @@ var DropdownMenuLabel = React23.forwardRef(({ className, inset, ...props }, ref)
|
|
|
6561
6690
|
}
|
|
6562
6691
|
));
|
|
6563
6692
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
6564
|
-
var DropdownMenuSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
6693
|
+
var DropdownMenuSeparator = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
6565
6694
|
DropdownMenuPrimitive.Separator,
|
|
6566
6695
|
{
|
|
6567
6696
|
ref,
|
|
@@ -6574,7 +6703,7 @@ var DropdownMenuShortcut = ({
|
|
|
6574
6703
|
className,
|
|
6575
6704
|
...props
|
|
6576
6705
|
}) => {
|
|
6577
|
-
return /* @__PURE__ */
|
|
6706
|
+
return /* @__PURE__ */ jsx32(
|
|
6578
6707
|
"span",
|
|
6579
6708
|
{
|
|
6580
6709
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
@@ -6587,11 +6716,11 @@ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
|
6587
6716
|
// src/ui/Tooltip.tsx
|
|
6588
6717
|
import * as React24 from "react";
|
|
6589
6718
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
6590
|
-
import { jsx as
|
|
6719
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
6591
6720
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
6592
6721
|
var Tooltip = TooltipPrimitive.Root;
|
|
6593
6722
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
6594
|
-
var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */
|
|
6723
|
+
var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx33(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx33(
|
|
6595
6724
|
TooltipPrimitive.Content,
|
|
6596
6725
|
{
|
|
6597
6726
|
ref,
|
|
@@ -6606,7 +6735,7 @@ var TooltipContent = React24.forwardRef(({ className, sideOffset = 4, ...props }
|
|
|
6606
6735
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
6607
6736
|
|
|
6608
6737
|
// src/ui/Modal.tsx
|
|
6609
|
-
import { jsx as
|
|
6738
|
+
import { jsx as jsx34, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
6610
6739
|
function Modal({
|
|
6611
6740
|
open,
|
|
6612
6741
|
onClose,
|
|
@@ -6620,24 +6749,24 @@ function Modal({
|
|
|
6620
6749
|
lg: "max-w-[calc(100vw-2rem)] sm:max-w-2xl",
|
|
6621
6750
|
xl: "max-w-[calc(100vw-2rem)] sm:max-w-4xl"
|
|
6622
6751
|
};
|
|
6623
|
-
return /* @__PURE__ */
|
|
6752
|
+
return /* @__PURE__ */ jsx34(Dialog, { open, onOpenChange: (v) => {
|
|
6624
6753
|
if (!v) onClose();
|
|
6625
|
-
}, children: /* @__PURE__ */
|
|
6754
|
+
}, children: /* @__PURE__ */ jsx34(DialogContent, { "aria-describedby": void 0, className: cn(sizes[size], "flex flex-col max-h-[85vh]", className), children }) });
|
|
6626
6755
|
}
|
|
6627
6756
|
function ModalHeader({ children, className = "" }) {
|
|
6628
|
-
return /* @__PURE__ */
|
|
6757
|
+
return /* @__PURE__ */ jsx34(DialogHeader, { className, children });
|
|
6629
6758
|
}
|
|
6630
6759
|
function ModalTitle({ children, className = "" }) {
|
|
6631
|
-
return /* @__PURE__ */
|
|
6760
|
+
return /* @__PURE__ */ jsx34(DialogTitle, { className, children });
|
|
6632
6761
|
}
|
|
6633
6762
|
function ModalDescription({ children, className = "" }) {
|
|
6634
|
-
return /* @__PURE__ */
|
|
6763
|
+
return /* @__PURE__ */ jsx34(DialogDescription, { className, children });
|
|
6635
6764
|
}
|
|
6636
6765
|
function ModalBody({ children, className = "" }) {
|
|
6637
|
-
return /* @__PURE__ */
|
|
6766
|
+
return /* @__PURE__ */ jsx34("div", { className: cn("flex-1 overflow-y-auto py-4", className), children });
|
|
6638
6767
|
}
|
|
6639
6768
|
function ModalFooter({ children, className = "" }) {
|
|
6640
|
-
return /* @__PURE__ */
|
|
6769
|
+
return /* @__PURE__ */ jsx34(DialogFooter, { className, children });
|
|
6641
6770
|
}
|
|
6642
6771
|
function ConfirmModal({
|
|
6643
6772
|
open,
|
|
@@ -6650,14 +6779,14 @@ function ConfirmModal({
|
|
|
6650
6779
|
variant = "destructive",
|
|
6651
6780
|
loading = false
|
|
6652
6781
|
}) {
|
|
6653
|
-
return /* @__PURE__ */
|
|
6654
|
-
/* @__PURE__ */
|
|
6655
|
-
/* @__PURE__ */
|
|
6656
|
-
description && /* @__PURE__ */
|
|
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 })
|
|
6657
6786
|
] }),
|
|
6658
|
-
/* @__PURE__ */
|
|
6659
|
-
/* @__PURE__ */
|
|
6660
|
-
/* @__PURE__ */
|
|
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 })
|
|
6661
6790
|
] })
|
|
6662
6791
|
] });
|
|
6663
6792
|
}
|
|
@@ -6670,12 +6799,12 @@ Modal.Footer = ModalFooter;
|
|
|
6670
6799
|
// src/ui/SearchInput.tsx
|
|
6671
6800
|
import * as React25 from "react";
|
|
6672
6801
|
import { Search as Search2, X as X2 } from "lucide-react";
|
|
6673
|
-
import { jsx as
|
|
6802
|
+
import { jsx as jsx35, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
6674
6803
|
var SearchInput = React25.forwardRef(
|
|
6675
6804
|
({ className, onClear, value, ...props }, ref) => {
|
|
6676
|
-
return /* @__PURE__ */
|
|
6677
|
-
/* @__PURE__ */
|
|
6678
|
-
/* @__PURE__ */
|
|
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(
|
|
6679
6808
|
Input,
|
|
6680
6809
|
{
|
|
6681
6810
|
ref,
|
|
@@ -6685,13 +6814,13 @@ var SearchInput = React25.forwardRef(
|
|
|
6685
6814
|
...props
|
|
6686
6815
|
}
|
|
6687
6816
|
),
|
|
6688
|
-
value && onClear && /* @__PURE__ */
|
|
6817
|
+
value && onClear && /* @__PURE__ */ jsx35(
|
|
6689
6818
|
"button",
|
|
6690
6819
|
{
|
|
6691
6820
|
type: "button",
|
|
6692
6821
|
onClick: onClear,
|
|
6693
6822
|
className: "absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground hover:text-foreground transition-colors",
|
|
6694
|
-
children: /* @__PURE__ */
|
|
6823
|
+
children: /* @__PURE__ */ jsx35(X2, { className: "h-4 w-4" })
|
|
6695
6824
|
}
|
|
6696
6825
|
)
|
|
6697
6826
|
] });
|
|
@@ -6756,6 +6885,7 @@ export {
|
|
|
6756
6885
|
EmptySearch,
|
|
6757
6886
|
EmptyState,
|
|
6758
6887
|
EmptyTeam,
|
|
6888
|
+
ErrorScreen,
|
|
6759
6889
|
GridCard,
|
|
6760
6890
|
GuestBanner,
|
|
6761
6891
|
Input,
|
|
@@ -6832,6 +6962,7 @@ export {
|
|
|
6832
6962
|
createDecoder,
|
|
6833
6963
|
createEncoder,
|
|
6834
6964
|
decodeAiStreamChunk,
|
|
6965
|
+
decodeReactError,
|
|
6835
6966
|
detectEnvironment,
|
|
6836
6967
|
dispatch,
|
|
6837
6968
|
encode,
|