@flamingo-stack/openframe-frontend-core 0.0.203 → 0.0.204-snapshot.20260523020255
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/chunk-27APPAJN.cjs +24 -0
- package/dist/chunk-27APPAJN.cjs.map +1 -0
- package/dist/{chunk-XGL5FKIK.js → chunk-D6BNDYZK.js} +114 -4
- package/dist/chunk-D6BNDYZK.js.map +1 -0
- package/dist/chunk-MJNXIEV2.js +24 -0
- package/dist/chunk-MJNXIEV2.js.map +1 -0
- package/dist/{chunk-25LVV26X.cjs → chunk-NLXY4QZE.cjs} +114 -4
- package/dist/chunk-NLXY4QZE.cjs.map +1 -0
- package/dist/{chunk-E6Q6UGDK.js → chunk-OFCRX24Y.js} +383 -569
- package/dist/chunk-OFCRX24Y.js.map +1 -0
- package/dist/{chunk-3YH2M76N.cjs → chunk-RDXOQWBY.cjs} +556 -742
- package/dist/chunk-RDXOQWBY.cjs.map +1 -0
- package/dist/components/announcement-bar.d.ts.map +1 -1
- package/dist/components/features/index.cjs +4 -3
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +3 -2
- package/dist/components/index.cjs +4 -3
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +3 -2
- package/dist/components/navigation/index.cjs +4 -3
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +3 -2
- package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts +1 -1
- package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
- package/dist/components/shared/product-release/product-release-card.d.ts +19 -12
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +4 -3
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +3 -2
- package/dist/contexts/endpoints-runtime-context.d.ts +28 -0
- package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -0
- package/dist/contexts/index.cjs +13 -0
- package/dist/contexts/index.cjs.map +1 -0
- package/dist/contexts/index.d.ts +24 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +13 -0
- package/dist/contexts/index.js.map +1 -0
- package/dist/hooks/index.cjs +5 -2
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/use-access-code-integration.d.ts +48 -0
- package/dist/hooks/use-access-code-integration.d.ts.map +1 -0
- package/dist/hooks/use-contact-submission.d.ts.map +1 -1
- package/dist/index.cjs +4 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -6
- package/dist/utils/access-code-client.d.ts +21 -37
- package/dist/utils/access-code-client.d.ts.map +1 -1
- package/dist/utils/index.cjs +10 -51
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js +11 -47
- package/dist/utils/index.js.map +1 -1
- package/package.json +7 -1
- package/src/components/announcement-bar.tsx +25 -3
- package/src/components/navigation/navigation-sidebar.tsx +3 -1
- package/src/components/shared/product-release/product-release-card-skeleton.tsx +66 -70
- package/src/components/shared/product-release/product-release-card.tsx +194 -242
- package/src/contexts/endpoints-runtime-context.tsx +68 -0
- package/src/contexts/index.ts +29 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/use-access-code-integration.ts +107 -0
- package/src/hooks/use-contact-submission.ts +6 -2
- package/src/utils/access-code-client.ts +32 -75
- package/dist/chunk-25LVV26X.cjs.map +0 -1
- package/dist/chunk-3YH2M76N.cjs.map +0 -1
- package/dist/chunk-E6Q6UGDK.js.map +0 -1
- package/dist/chunk-XGL5FKIK.js.map +0 -1
|
@@ -16,7 +16,10 @@ import {
|
|
|
16
16
|
useNearViewport,
|
|
17
17
|
useOnboardingState,
|
|
18
18
|
useToast
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-D6BNDYZK.js";
|
|
20
|
+
import {
|
|
21
|
+
useEndpointsRuntime
|
|
22
|
+
} from "./chunk-MJNXIEV2.js";
|
|
20
23
|
import {
|
|
21
24
|
Button,
|
|
22
25
|
Checkbox,
|
|
@@ -145,7 +148,7 @@ import {
|
|
|
145
148
|
|
|
146
149
|
// src/components/pagination.tsx
|
|
147
150
|
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight5, MoreHorizontal } from "lucide-react";
|
|
148
|
-
import * as
|
|
151
|
+
import * as React37 from "react";
|
|
149
152
|
import { jsx as jsx96, jsxs as jsxs77 } from "react/jsx-runtime";
|
|
150
153
|
var Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationEllipsis, PaginationPrevious, PaginationNext;
|
|
151
154
|
var init_pagination = __esm({
|
|
@@ -237,19 +240,19 @@ var init_pagination = __esm({
|
|
|
237
240
|
) })
|
|
238
241
|
] }) });
|
|
239
242
|
};
|
|
240
|
-
PaginationContent =
|
|
243
|
+
PaginationContent = React37.forwardRef(
|
|
241
244
|
({ className, ...props }, ref) => {
|
|
242
245
|
return /* @__PURE__ */ jsx96("ul", { ref, className: cn("flex items-center justify-center", className), ...props });
|
|
243
246
|
}
|
|
244
247
|
);
|
|
245
248
|
PaginationContent.displayName = "PaginationContent";
|
|
246
|
-
PaginationItem =
|
|
249
|
+
PaginationItem = React37.forwardRef(
|
|
247
250
|
({ className, ...props }, ref) => {
|
|
248
251
|
return /* @__PURE__ */ jsx96("li", { ref, className: cn("", className), ...props });
|
|
249
252
|
}
|
|
250
253
|
);
|
|
251
254
|
PaginationItem.displayName = "PaginationItem";
|
|
252
|
-
PaginationLink =
|
|
255
|
+
PaginationLink = React37.forwardRef(
|
|
253
256
|
({ className, ...props }, ref) => {
|
|
254
257
|
return /* @__PURE__ */ jsx96(
|
|
255
258
|
"button",
|
|
@@ -265,7 +268,7 @@ var init_pagination = __esm({
|
|
|
265
268
|
}
|
|
266
269
|
);
|
|
267
270
|
PaginationLink.displayName = "PaginationLink";
|
|
268
|
-
PaginationEllipsis =
|
|
271
|
+
PaginationEllipsis = React37.forwardRef(
|
|
269
272
|
({ className, ...props }, ref) => {
|
|
270
273
|
return /* @__PURE__ */ jsxs77(
|
|
271
274
|
"span",
|
|
@@ -282,7 +285,7 @@ var init_pagination = __esm({
|
|
|
282
285
|
}
|
|
283
286
|
);
|
|
284
287
|
PaginationEllipsis.displayName = "PaginationEllipsis";
|
|
285
|
-
PaginationPrevious =
|
|
288
|
+
PaginationPrevious = React37.forwardRef(
|
|
286
289
|
({ className, ...props }, ref) => {
|
|
287
290
|
return /* @__PURE__ */ jsxs77(Button, { ref, variant: "outline", size: "icon", className: cn("h-10 w-10", className), ...props, children: [
|
|
288
291
|
/* @__PURE__ */ jsx96(ChevronLeft2, { className: "h-4 w-4" }),
|
|
@@ -291,7 +294,7 @@ var init_pagination = __esm({
|
|
|
291
294
|
}
|
|
292
295
|
);
|
|
293
296
|
PaginationPrevious.displayName = "PaginationPrevious";
|
|
294
|
-
PaginationNext =
|
|
297
|
+
PaginationNext = React37.forwardRef(
|
|
295
298
|
({ className, ...props }, ref) => {
|
|
296
299
|
return /* @__PURE__ */ jsxs77(Button, { ref, variant: "outline", size: "icon", className: cn("h-10 w-10", className), ...props, children: [
|
|
297
300
|
/* @__PURE__ */ jsx96(ChevronRight5, { className: "h-4 w-4" }),
|
|
@@ -2292,7 +2295,7 @@ function DatePickerInputSimple({
|
|
|
2292
2295
|
}
|
|
2293
2296
|
|
|
2294
2297
|
// src/components/ui/info-card.tsx
|
|
2295
|
-
import
|
|
2298
|
+
import React49 from "react";
|
|
2296
2299
|
|
|
2297
2300
|
// src/utils/index.ts
|
|
2298
2301
|
init_cn();
|
|
@@ -2373,102 +2376,6 @@ var OS_PLATFORMS = [
|
|
|
2373
2376
|
];
|
|
2374
2377
|
var DEFAULT_OS_PLATFORM = "windows";
|
|
2375
2378
|
|
|
2376
|
-
// src/utils/access-code-client.ts
|
|
2377
|
-
import React9 from "react";
|
|
2378
|
-
async function validateAccessCode(email, code) {
|
|
2379
|
-
try {
|
|
2380
|
-
const response = await fetch("/api/validate-access-code", {
|
|
2381
|
-
method: "POST",
|
|
2382
|
-
headers: {
|
|
2383
|
-
"Content-Type": "application/json"
|
|
2384
|
-
},
|
|
2385
|
-
body: JSON.stringify({ email, code })
|
|
2386
|
-
});
|
|
2387
|
-
if (!response.ok) {
|
|
2388
|
-
const error = await response.json().catch(() => ({}));
|
|
2389
|
-
throw new Error(error.error || "Validation request failed");
|
|
2390
|
-
}
|
|
2391
|
-
return await response.json();
|
|
2392
|
-
} catch (error) {
|
|
2393
|
-
return {
|
|
2394
|
-
valid: false,
|
|
2395
|
-
message: error instanceof Error ? error.message : "Validation failed"
|
|
2396
|
-
};
|
|
2397
|
-
}
|
|
2398
|
-
}
|
|
2399
|
-
async function consumeAccessCode(email, code) {
|
|
2400
|
-
try {
|
|
2401
|
-
const response = await fetch("/api/consume-access-code", {
|
|
2402
|
-
method: "POST",
|
|
2403
|
-
headers: {
|
|
2404
|
-
"Content-Type": "application/json"
|
|
2405
|
-
},
|
|
2406
|
-
body: JSON.stringify({ email, code })
|
|
2407
|
-
});
|
|
2408
|
-
if (!response.ok) {
|
|
2409
|
-
const error = await response.json().catch(() => ({}));
|
|
2410
|
-
throw new Error(error.error || "Consumption request failed");
|
|
2411
|
-
}
|
|
2412
|
-
return await response.json();
|
|
2413
|
-
} catch (error) {
|
|
2414
|
-
return {
|
|
2415
|
-
success: false,
|
|
2416
|
-
consumed: false,
|
|
2417
|
-
message: error instanceof Error ? error.message : "Consumption failed"
|
|
2418
|
-
};
|
|
2419
|
-
}
|
|
2420
|
-
}
|
|
2421
|
-
async function validateAndConsumeAccessCode(email, code) {
|
|
2422
|
-
const validation = await validateAccessCode(email, code);
|
|
2423
|
-
if (!validation.valid) {
|
|
2424
|
-
return validation;
|
|
2425
|
-
}
|
|
2426
|
-
const consumption = await consumeAccessCode(email, code);
|
|
2427
|
-
return {
|
|
2428
|
-
...validation,
|
|
2429
|
-
consumed: consumption.consumed,
|
|
2430
|
-
message: consumption.consumed ? `Access granted for ${validation.cohort_name}` : consumption.message || validation.message
|
|
2431
|
-
};
|
|
2432
|
-
}
|
|
2433
|
-
function useAccessCodeIntegration() {
|
|
2434
|
-
const [isValidating, setIsValidating] = React9.useState(false);
|
|
2435
|
-
const [isConsuming, setIsConsuming] = React9.useState(false);
|
|
2436
|
-
const validate = async (email, code) => {
|
|
2437
|
-
setIsValidating(true);
|
|
2438
|
-
try {
|
|
2439
|
-
return await validateAccessCode(email, code);
|
|
2440
|
-
} finally {
|
|
2441
|
-
setIsValidating(false);
|
|
2442
|
-
}
|
|
2443
|
-
};
|
|
2444
|
-
const consume = async (email, code) => {
|
|
2445
|
-
setIsConsuming(true);
|
|
2446
|
-
try {
|
|
2447
|
-
return await consumeAccessCode(email, code);
|
|
2448
|
-
} finally {
|
|
2449
|
-
setIsConsuming(false);
|
|
2450
|
-
}
|
|
2451
|
-
};
|
|
2452
|
-
const validateAndConsume = async (email, code) => {
|
|
2453
|
-
setIsValidating(true);
|
|
2454
|
-
setIsConsuming(true);
|
|
2455
|
-
try {
|
|
2456
|
-
return await validateAndConsumeAccessCode(email, code);
|
|
2457
|
-
} finally {
|
|
2458
|
-
setIsValidating(false);
|
|
2459
|
-
setIsConsuming(false);
|
|
2460
|
-
}
|
|
2461
|
-
};
|
|
2462
|
-
return {
|
|
2463
|
-
validate,
|
|
2464
|
-
consume,
|
|
2465
|
-
validateAndConsume,
|
|
2466
|
-
isValidating,
|
|
2467
|
-
isConsuming,
|
|
2468
|
-
isProcessing: isValidating || isConsuming
|
|
2469
|
-
};
|
|
2470
|
-
}
|
|
2471
|
-
|
|
2472
2379
|
// src/utils/validation-utils.ts
|
|
2473
2380
|
function isValidEmailDomain(domain) {
|
|
2474
2381
|
if (!domain || typeof domain !== "string") {
|
|
@@ -4269,11 +4176,11 @@ ErrorMessageDisplay.displayName = "ErrorMessageDisplay";
|
|
|
4269
4176
|
|
|
4270
4177
|
// src/components/chat/chat-container.tsx
|
|
4271
4178
|
init_cn();
|
|
4272
|
-
import * as
|
|
4179
|
+
import * as React11 from "react";
|
|
4273
4180
|
|
|
4274
4181
|
// src/components/ui/square-avatar.tsx
|
|
4275
4182
|
init_cn();
|
|
4276
|
-
import * as
|
|
4183
|
+
import * as React10 from "react";
|
|
4277
4184
|
import Image3 from "next/image";
|
|
4278
4185
|
import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4279
4186
|
var getInitials = (name) => {
|
|
@@ -4284,7 +4191,7 @@ var getInitials = (name) => {
|
|
|
4284
4191
|
}
|
|
4285
4192
|
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
4286
4193
|
};
|
|
4287
|
-
var SquareAvatar =
|
|
4194
|
+
var SquareAvatar = React10.memo(React10.forwardRef(
|
|
4288
4195
|
({ className, src, alt, size = "md", fallback, variant = "square", ...props }, ref) => {
|
|
4289
4196
|
const sizeClasses4 = {
|
|
4290
4197
|
sm: "h-8 w-8",
|
|
@@ -4485,7 +4392,7 @@ var ConnectionIndicator = ({ status }) => {
|
|
|
4485
4392
|
}
|
|
4486
4393
|
) });
|
|
4487
4394
|
};
|
|
4488
|
-
var ChatContainer =
|
|
4395
|
+
var ChatContainer = React11.forwardRef(
|
|
4489
4396
|
({ className, children, ...props }, ref) => {
|
|
4490
4397
|
return /* @__PURE__ */ jsx25(
|
|
4491
4398
|
"div",
|
|
@@ -4504,7 +4411,7 @@ var ChatContainer = React12.forwardRef(
|
|
|
4504
4411
|
}
|
|
4505
4412
|
);
|
|
4506
4413
|
ChatContainer.displayName = "ChatContainer";
|
|
4507
|
-
var ChatHeader =
|
|
4414
|
+
var ChatHeader = React11.forwardRef(
|
|
4508
4415
|
({ className, userName = 'Grace "Fae" Meadows', userTitle = "Your Personal Assistant", userAvatar, userIcon, onSettingsClick, onNewChat, onClose, onBack, showNewChat = false, connectionStatus = "disconnected", serverUrl = null, headerActions, ticketInfo, ...props }, ref) => {
|
|
4509
4416
|
const cardClasses = "rounded-md bg-ods-card shadow-[0_18px_48px_rgba(0,0,0,0.45)] border border-ods-border ring-1 ring-black/20";
|
|
4510
4417
|
return /* @__PURE__ */ jsxs19(
|
|
@@ -4596,7 +4503,7 @@ var ChatHeader = React12.forwardRef(
|
|
|
4596
4503
|
}
|
|
4597
4504
|
);
|
|
4598
4505
|
ChatHeader.displayName = "ChatHeader";
|
|
4599
|
-
var ChatContent =
|
|
4506
|
+
var ChatContent = React11.forwardRef(
|
|
4600
4507
|
({ className, children, ...props }, ref) => {
|
|
4601
4508
|
return /* @__PURE__ */ jsx25(
|
|
4602
4509
|
"div",
|
|
@@ -4613,7 +4520,7 @@ var ChatContent = React12.forwardRef(
|
|
|
4613
4520
|
}
|
|
4614
4521
|
);
|
|
4615
4522
|
ChatContent.displayName = "ChatContent";
|
|
4616
|
-
var ChatFooter =
|
|
4523
|
+
var ChatFooter = React11.forwardRef(
|
|
4617
4524
|
({ className, children, ...props }, ref) => {
|
|
4618
4525
|
return /* @__PURE__ */ jsx25(
|
|
4619
4526
|
"div",
|
|
@@ -4637,9 +4544,9 @@ import { useState as useState12, useRef as useRef4, useImperativeHandle as useIm
|
|
|
4637
4544
|
|
|
4638
4545
|
// src/components/ui/textarea.tsx
|
|
4639
4546
|
init_cn();
|
|
4640
|
-
import * as
|
|
4547
|
+
import * as React12 from "react";
|
|
4641
4548
|
import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4642
|
-
var Textarea =
|
|
4549
|
+
var Textarea = React12.forwardRef(
|
|
4643
4550
|
({ className, invalid = false, label, error, endIcon, endIconAsButton = false, endIconButtonProps, ...props }, ref) => {
|
|
4644
4551
|
const isInvalid = invalid || !!error;
|
|
4645
4552
|
const hasEndIcon = !!endIcon;
|
|
@@ -4744,9 +4651,9 @@ Textarea.displayName = "Textarea";
|
|
|
4744
4651
|
|
|
4745
4652
|
// src/components/chat/chat-typing-indicator.tsx
|
|
4746
4653
|
init_cn();
|
|
4747
|
-
import * as
|
|
4654
|
+
import * as React13 from "react";
|
|
4748
4655
|
import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4749
|
-
var ChatTypingIndicator =
|
|
4656
|
+
var ChatTypingIndicator = React13.forwardRef(
|
|
4750
4657
|
({ className, size = "md", showText = false, dotClassName, ...props }, ref) => {
|
|
4751
4658
|
const dotSizeClasses = {
|
|
4752
4659
|
sm: "w-1 h-1",
|
|
@@ -5198,7 +5105,7 @@ ChatInput.displayName = "ChatInput";
|
|
|
5198
5105
|
|
|
5199
5106
|
// src/components/chat/chat-message-enhanced.tsx
|
|
5200
5107
|
init_cn();
|
|
5201
|
-
import
|
|
5108
|
+
import React14, { forwardRef as forwardRef20, memo as memo2, useMemo as useMemo6 } from "react";
|
|
5202
5109
|
|
|
5203
5110
|
// src/components/chat/tool-execution-display.tsx
|
|
5204
5111
|
init_cn();
|
|
@@ -5378,7 +5285,7 @@ var ChatMessageEnhanced = forwardRef20(
|
|
|
5378
5285
|
rendered = render(refForRender);
|
|
5379
5286
|
seenRendered.set(key, rendered);
|
|
5380
5287
|
}
|
|
5381
|
-
if (
|
|
5288
|
+
if (React14.isValidElement(rendered) && rendered.type === BlockCard) {
|
|
5382
5289
|
const props2 = rendered.props;
|
|
5383
5290
|
const markerEnd = match.index + match[0].length;
|
|
5384
5291
|
parts.push({ kind: "text", text: text.slice(cursor, markerEnd) });
|
|
@@ -6081,11 +5988,11 @@ ChatMessageList.displayName = "ChatMessageList";
|
|
|
6081
5988
|
|
|
6082
5989
|
// src/components/ui/tabs.tsx
|
|
6083
5990
|
init_cn();
|
|
6084
|
-
import * as
|
|
5991
|
+
import * as React15 from "react";
|
|
6085
5992
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
6086
5993
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
6087
5994
|
var Tabs = TabsPrimitive.Root;
|
|
6088
|
-
var TabsList =
|
|
5995
|
+
var TabsList = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
|
|
6089
5996
|
TabsPrimitive.List,
|
|
6090
5997
|
{
|
|
6091
5998
|
ref,
|
|
@@ -6097,7 +6004,7 @@ var TabsList = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
6097
6004
|
}
|
|
6098
6005
|
));
|
|
6099
6006
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
6100
|
-
var TabsTrigger =
|
|
6007
|
+
var TabsTrigger = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
|
|
6101
6008
|
TabsPrimitive.Trigger,
|
|
6102
6009
|
{
|
|
6103
6010
|
ref,
|
|
@@ -6109,7 +6016,7 @@ var TabsTrigger = React16.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
6109
6016
|
}
|
|
6110
6017
|
));
|
|
6111
6018
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
6112
|
-
var TabsContent =
|
|
6019
|
+
var TabsContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
|
|
6113
6020
|
TabsPrimitive.Content,
|
|
6114
6021
|
{
|
|
6115
6022
|
ref,
|
|
@@ -6669,12 +6576,12 @@ function ChatVideoEntityCard({
|
|
|
6669
6576
|
|
|
6670
6577
|
// src/components/chat/chat-quick-action.tsx
|
|
6671
6578
|
init_cn();
|
|
6672
|
-
import * as
|
|
6579
|
+
import * as React18 from "react";
|
|
6673
6580
|
import { ChevronRight as ChevronRight2 } from "lucide-react";
|
|
6674
6581
|
import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6675
|
-
var ChatQuickAction =
|
|
6582
|
+
var ChatQuickAction = React18.forwardRef(
|
|
6676
6583
|
({ className, text, onAction, onClick, isHintActive, onHintInteraction, disabled = false, ...props }, ref) => {
|
|
6677
|
-
const handleClick =
|
|
6584
|
+
const handleClick = React18.useCallback((e) => {
|
|
6678
6585
|
if (onHintInteraction) {
|
|
6679
6586
|
onHintInteraction();
|
|
6680
6587
|
}
|
|
@@ -6717,10 +6624,10 @@ ChatQuickAction.displayName = "ChatQuickAction";
|
|
|
6717
6624
|
|
|
6718
6625
|
// src/components/chat/chat-ticket-item.tsx
|
|
6719
6626
|
init_cn();
|
|
6720
|
-
import * as
|
|
6627
|
+
import * as React19 from "react";
|
|
6721
6628
|
import { ChevronRight as ChevronRight3 } from "lucide-react";
|
|
6722
6629
|
import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
6723
|
-
var ChatTicketItem =
|
|
6630
|
+
var ChatTicketItem = React19.forwardRef(
|
|
6724
6631
|
({ className, ticket, onClick, ...props }, ref) => {
|
|
6725
6632
|
const isResolved = resolveTicketStatus(ticket.status) === "RESOLVED";
|
|
6726
6633
|
const subtitle = [ticket.ticketNumber, ticket.category, ticket.timeAgo].filter(Boolean).join(" \u2022 ");
|
|
@@ -6765,7 +6672,7 @@ ChatTicketItem.displayName = "ChatTicketItem";
|
|
|
6765
6672
|
|
|
6766
6673
|
// src/components/chat/chat-ticket-list.tsx
|
|
6767
6674
|
init_cn();
|
|
6768
|
-
import * as
|
|
6675
|
+
import * as React20 from "react";
|
|
6769
6676
|
import { jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
6770
6677
|
function getMask(top, bottom) {
|
|
6771
6678
|
if (top && bottom) return "linear-gradient(to bottom, transparent, black 64px, black calc(100% - 64px), transparent)";
|
|
@@ -6773,19 +6680,19 @@ function getMask(top, bottom) {
|
|
|
6773
6680
|
if (bottom) return "linear-gradient(to bottom, black calc(100% - 64px), transparent)";
|
|
6774
6681
|
return "none";
|
|
6775
6682
|
}
|
|
6776
|
-
var ChatTicketList =
|
|
6683
|
+
var ChatTicketList = React20.forwardRef(
|
|
6777
6684
|
({ className, tickets, onTicketClick, ...props }, ref) => {
|
|
6778
|
-
const scrollRef =
|
|
6779
|
-
const [fadeTop, setFadeTop] =
|
|
6780
|
-
const [fadeBottom, setFadeBottom] =
|
|
6781
|
-
const updateFade =
|
|
6685
|
+
const scrollRef = React20.useRef(null);
|
|
6686
|
+
const [fadeTop, setFadeTop] = React20.useState(false);
|
|
6687
|
+
const [fadeBottom, setFadeBottom] = React20.useState(false);
|
|
6688
|
+
const updateFade = React20.useCallback(() => {
|
|
6782
6689
|
const el = scrollRef.current;
|
|
6783
6690
|
if (!el) return;
|
|
6784
6691
|
setFadeTop(el.scrollTop > 0);
|
|
6785
6692
|
setFadeBottom(el.scrollHeight - el.scrollTop - el.clientHeight > 1);
|
|
6786
6693
|
}, []);
|
|
6787
6694
|
const ticketCount = tickets.length;
|
|
6788
|
-
|
|
6695
|
+
React20.useLayoutEffect(() => {
|
|
6789
6696
|
updateFade();
|
|
6790
6697
|
}, [ticketCount, updateFade]);
|
|
6791
6698
|
if (tickets.length === 0) return null;
|
|
@@ -6826,16 +6733,16 @@ ChatTicketList.displayName = "ChatTicketList";
|
|
|
6826
6733
|
|
|
6827
6734
|
// src/components/chat/model-display.tsx
|
|
6828
6735
|
init_cn();
|
|
6829
|
-
import
|
|
6736
|
+
import React22 from "react";
|
|
6830
6737
|
|
|
6831
6738
|
// src/components/hover-card.tsx
|
|
6832
6739
|
init_cn();
|
|
6833
|
-
import * as
|
|
6740
|
+
import * as React21 from "react";
|
|
6834
6741
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
6835
6742
|
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
6836
6743
|
var HoverCard = HoverCardPrimitive.Root;
|
|
6837
6744
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
6838
|
-
var HoverCardContent =
|
|
6745
|
+
var HoverCardContent = React21.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx44(
|
|
6839
6746
|
HoverCardPrimitive.Content,
|
|
6840
6747
|
{
|
|
6841
6748
|
ref,
|
|
@@ -6882,7 +6789,7 @@ var formatTokenCount = (count) => {
|
|
|
6882
6789
|
return String(count);
|
|
6883
6790
|
};
|
|
6884
6791
|
var hasAnyBreakdownRow = (breakdown) => !!breakdown && !!(breakdown.haikuRewriter || breakdown.haikuClassifier || breakdown.haikuSummarizer);
|
|
6885
|
-
var ModelDisplay =
|
|
6792
|
+
var ModelDisplay = React22.forwardRef(
|
|
6886
6793
|
({
|
|
6887
6794
|
className,
|
|
6888
6795
|
provider,
|
|
@@ -7013,9 +6920,9 @@ import { forwardRef as forwardRef28, useRef as useRef8, useEffect as useEffect9
|
|
|
7013
6920
|
// src/components/chat/chat-sidebar-skeleton.tsx
|
|
7014
6921
|
init_cn();
|
|
7015
6922
|
init_button2();
|
|
7016
|
-
import * as
|
|
6923
|
+
import * as React23 from "react";
|
|
7017
6924
|
import { jsx as jsx46, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
7018
|
-
var DialogListItemSkeleton =
|
|
6925
|
+
var DialogListItemSkeleton = React23.forwardRef(
|
|
7019
6926
|
({ className, ...props }, ref) => {
|
|
7020
6927
|
return /* @__PURE__ */ jsxs37(
|
|
7021
6928
|
"div",
|
|
@@ -7041,7 +6948,7 @@ var DialogListItemSkeleton = React24.forwardRef(
|
|
|
7041
6948
|
}
|
|
7042
6949
|
);
|
|
7043
6950
|
DialogListItemSkeleton.displayName = "DialogListItemSkeleton";
|
|
7044
|
-
var ChatSidebarSkeleton =
|
|
6951
|
+
var ChatSidebarSkeleton = React23.forwardRef(
|
|
7045
6952
|
({ className, dialogCount = 8, showNewChatButton = true, ...props }, ref) => {
|
|
7046
6953
|
return /* @__PURE__ */ jsxs37(
|
|
7047
6954
|
"div",
|
|
@@ -9553,7 +9460,7 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
9553
9460
|
|
|
9554
9461
|
// src/components/navigation/header.tsx
|
|
9555
9462
|
import Link from "next/link";
|
|
9556
|
-
import
|
|
9463
|
+
import React24, { useEffect as useEffect13, useRef as useRef13, useState as useState19 } from "react";
|
|
9557
9464
|
init_button2();
|
|
9558
9465
|
import { Fragment as Fragment6, jsx as jsx48, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
9559
9466
|
function Header({ config, platform }) {
|
|
@@ -9623,7 +9530,7 @@ function Header({ config, platform }) {
|
|
|
9623
9530
|
}, [config.autoHide]);
|
|
9624
9531
|
const renderNavigationItem = (item) => {
|
|
9625
9532
|
if (item.element) {
|
|
9626
|
-
return /* @__PURE__ */ jsx48(
|
|
9533
|
+
return /* @__PURE__ */ jsx48(React24.Fragment, { children: item.element }, item.id);
|
|
9627
9534
|
}
|
|
9628
9535
|
if (item.children && item.children.length > 0) {
|
|
9629
9536
|
const isOpen = openDropdowns[item.id] || false;
|
|
@@ -10524,7 +10431,8 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
10524
10431
|
} else if (item.path) {
|
|
10525
10432
|
config.onNavigate?.(item.path);
|
|
10526
10433
|
}
|
|
10527
|
-
|
|
10434
|
+
if (isTablet) setTabletMinimized(true);
|
|
10435
|
+
}, [config, isTablet]);
|
|
10528
10436
|
const { primaryItems, secondaryItems } = useMemo10(() => ({
|
|
10529
10437
|
primaryItems: config.items.filter((item) => item.section !== "secondary"),
|
|
10530
10438
|
secondaryItems: config.items.filter((item) => item.section === "secondary")
|
|
@@ -10615,13 +10523,13 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
10615
10523
|
}
|
|
10616
10524
|
|
|
10617
10525
|
// src/components/navigation/app-header.tsx
|
|
10618
|
-
import
|
|
10526
|
+
import React30 from "react";
|
|
10619
10527
|
init_cn();
|
|
10620
10528
|
|
|
10621
10529
|
// src/components/features/notifications/notifications-context.tsx
|
|
10622
|
-
import * as
|
|
10530
|
+
import * as React28 from "react";
|
|
10623
10531
|
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
10624
|
-
var NotificationsContext =
|
|
10532
|
+
var NotificationsContext = React28.createContext(null);
|
|
10625
10533
|
function reducer(state, action) {
|
|
10626
10534
|
switch (action.type) {
|
|
10627
10535
|
case "add": {
|
|
@@ -10656,10 +10564,10 @@ function NotificationsProvider({
|
|
|
10656
10564
|
onShowPopupsChange,
|
|
10657
10565
|
onHistoryClick
|
|
10658
10566
|
}) {
|
|
10659
|
-
const [notifications, dispatch] =
|
|
10660
|
-
const [isOpen, setIsOpen] =
|
|
10661
|
-
const [showPopups, setShowPopupsState] =
|
|
10662
|
-
const addNotification =
|
|
10567
|
+
const [notifications, dispatch] = React28.useReducer(reducer, initialNotifications);
|
|
10568
|
+
const [isOpen, setIsOpen] = React28.useState(false);
|
|
10569
|
+
const [showPopups, setShowPopupsState] = React28.useState(defaultShowPopups);
|
|
10570
|
+
const addNotification = React28.useCallback(
|
|
10663
10571
|
(input) => {
|
|
10664
10572
|
const id = input.id ?? generateId();
|
|
10665
10573
|
const notification = {
|
|
@@ -10673,26 +10581,26 @@ function NotificationsProvider({
|
|
|
10673
10581
|
},
|
|
10674
10582
|
[maxNotifications]
|
|
10675
10583
|
);
|
|
10676
|
-
const markRead =
|
|
10677
|
-
const markAllRead =
|
|
10678
|
-
const markSettled =
|
|
10679
|
-
const remove =
|
|
10680
|
-
const clear =
|
|
10681
|
-
const open =
|
|
10682
|
-
const close =
|
|
10683
|
-
const toggle =
|
|
10684
|
-
const setShowPopups =
|
|
10584
|
+
const markRead = React28.useCallback((id) => dispatch({ type: "markRead", id }), []);
|
|
10585
|
+
const markAllRead = React28.useCallback(() => dispatch({ type: "markAllRead" }), []);
|
|
10586
|
+
const markSettled = React28.useCallback((id) => dispatch({ type: "markSettled", id }), []);
|
|
10587
|
+
const remove = React28.useCallback((id) => dispatch({ type: "remove", id }), []);
|
|
10588
|
+
const clear = React28.useCallback(() => dispatch({ type: "clear" }), []);
|
|
10589
|
+
const open = React28.useCallback(() => setIsOpen(true), []);
|
|
10590
|
+
const close = React28.useCallback(() => setIsOpen(false), []);
|
|
10591
|
+
const toggle = React28.useCallback(() => setIsOpen((v) => !v), []);
|
|
10592
|
+
const setShowPopups = React28.useCallback(
|
|
10685
10593
|
(value2) => {
|
|
10686
10594
|
setShowPopupsState(value2);
|
|
10687
10595
|
onShowPopupsChange?.(value2);
|
|
10688
10596
|
},
|
|
10689
10597
|
[onShowPopupsChange]
|
|
10690
10598
|
);
|
|
10691
|
-
const unreadCount =
|
|
10599
|
+
const unreadCount = React28.useMemo(
|
|
10692
10600
|
() => notifications.reduce((acc, n) => n.read ? acc : acc + 1, 0),
|
|
10693
10601
|
[notifications]
|
|
10694
10602
|
);
|
|
10695
|
-
const value =
|
|
10603
|
+
const value = React28.useMemo(
|
|
10696
10604
|
() => ({
|
|
10697
10605
|
notifications,
|
|
10698
10606
|
unreadCount,
|
|
@@ -10731,14 +10639,14 @@ function NotificationsProvider({
|
|
|
10731
10639
|
return /* @__PURE__ */ jsx58(NotificationsContext.Provider, { value, children });
|
|
10732
10640
|
}
|
|
10733
10641
|
function useNotifications() {
|
|
10734
|
-
const ctx =
|
|
10642
|
+
const ctx = React28.useContext(NotificationsContext);
|
|
10735
10643
|
if (!ctx) {
|
|
10736
10644
|
throw new Error("useNotifications must be used inside <NotificationsProvider>");
|
|
10737
10645
|
}
|
|
10738
10646
|
return ctx;
|
|
10739
10647
|
}
|
|
10740
10648
|
function useOptionalNotifications() {
|
|
10741
|
-
return
|
|
10649
|
+
return React28.useContext(NotificationsContext);
|
|
10742
10650
|
}
|
|
10743
10651
|
|
|
10744
10652
|
// src/components/navigation/header-button.tsx
|
|
@@ -10768,7 +10676,7 @@ function HeaderButton({
|
|
|
10768
10676
|
|
|
10769
10677
|
// src/components/navigation/header-global-search.tsx
|
|
10770
10678
|
init_cn();
|
|
10771
|
-
import
|
|
10679
|
+
import React29 from "react";
|
|
10772
10680
|
import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
10773
10681
|
function HeaderGlobalSearch({
|
|
10774
10682
|
value = "",
|
|
@@ -10777,7 +10685,7 @@ function HeaderGlobalSearch({
|
|
|
10777
10685
|
placeholder = "Global Search",
|
|
10778
10686
|
className
|
|
10779
10687
|
}) {
|
|
10780
|
-
const [internalValue, setInternalValue] =
|
|
10688
|
+
const [internalValue, setInternalValue] = React29.useState(value);
|
|
10781
10689
|
const currentValue = onChange ? value : internalValue;
|
|
10782
10690
|
const handleChange = (e) => {
|
|
10783
10691
|
const newValue = e.target.value;
|
|
@@ -10880,7 +10788,7 @@ function HeaderOrganizationFilter({
|
|
|
10880
10788
|
|
|
10881
10789
|
// src/components/navigation/app-header.tsx
|
|
10882
10790
|
import { jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
10883
|
-
var AppHeader =
|
|
10791
|
+
var AppHeader = React30.memo(function AppHeader2({
|
|
10884
10792
|
showSearch,
|
|
10885
10793
|
onSearch,
|
|
10886
10794
|
showOrganizations,
|
|
@@ -11070,7 +10978,7 @@ init_button();
|
|
|
11070
10978
|
|
|
11071
10979
|
// src/components/ui/drawer.tsx
|
|
11072
10980
|
init_cn();
|
|
11073
|
-
import * as
|
|
10981
|
+
import * as React31 from "react";
|
|
11074
10982
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
11075
10983
|
import { cva as cva3 } from "class-variance-authority";
|
|
11076
10984
|
import { X as X3 } from "lucide-react";
|
|
@@ -11079,7 +10987,7 @@ var Drawer = DialogPrimitive.Root;
|
|
|
11079
10987
|
var DrawerTrigger = DialogPrimitive.Trigger;
|
|
11080
10988
|
var DrawerClose = DialogPrimitive.Close;
|
|
11081
10989
|
var DrawerPortal = DialogPrimitive.Portal;
|
|
11082
|
-
var DrawerOverlay =
|
|
10990
|
+
var DrawerOverlay = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx63(
|
|
11083
10991
|
DialogPrimitive.Overlay,
|
|
11084
10992
|
{
|
|
11085
10993
|
ref,
|
|
@@ -11123,7 +11031,7 @@ var drawerPanelVariants = cva3(
|
|
|
11123
11031
|
}
|
|
11124
11032
|
}
|
|
11125
11033
|
);
|
|
11126
|
-
var DrawerContent =
|
|
11034
|
+
var DrawerContent = React31.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs51(DrawerPortal, { children: [
|
|
11127
11035
|
/* @__PURE__ */ jsx63(DrawerOverlay, {}),
|
|
11128
11036
|
/* @__PURE__ */ jsx63(
|
|
11129
11037
|
DialogPrimitive.Content,
|
|
@@ -11149,7 +11057,7 @@ var DrawerHeader = ({
|
|
|
11149
11057
|
}
|
|
11150
11058
|
);
|
|
11151
11059
|
DrawerHeader.displayName = "DrawerHeader";
|
|
11152
|
-
var DrawerTitle =
|
|
11060
|
+
var DrawerTitle = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs51("div", { className: "flex items-start gap-4", children: [
|
|
11153
11061
|
/* @__PURE__ */ jsx63(
|
|
11154
11062
|
DialogPrimitive.Title,
|
|
11155
11063
|
{
|
|
@@ -11168,7 +11076,7 @@ var DrawerTitle = React32.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
11168
11076
|
] })
|
|
11169
11077
|
] }));
|
|
11170
11078
|
DrawerTitle.displayName = "DrawerTitle";
|
|
11171
|
-
var DrawerDescription =
|
|
11079
|
+
var DrawerDescription = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx63(
|
|
11172
11080
|
DialogPrimitive.Description,
|
|
11173
11081
|
{
|
|
11174
11082
|
ref,
|
|
@@ -11205,12 +11113,12 @@ DrawerFooter.displayName = "DrawerFooter";
|
|
|
11205
11113
|
|
|
11206
11114
|
// src/components/ui/switch.tsx
|
|
11207
11115
|
init_cn();
|
|
11208
|
-
import * as
|
|
11116
|
+
import * as React32 from "react";
|
|
11209
11117
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
11210
11118
|
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
11211
|
-
var Switch =
|
|
11212
|
-
const [isChecked, setIsChecked] =
|
|
11213
|
-
|
|
11119
|
+
var Switch = React32.forwardRef(({ className, checked, onCheckedChange, ...props }, ref) => {
|
|
11120
|
+
const [isChecked, setIsChecked] = React32.useState(checked || false);
|
|
11121
|
+
React32.useEffect(() => {
|
|
11214
11122
|
if (checked !== void 0) {
|
|
11215
11123
|
setIsChecked(checked);
|
|
11216
11124
|
}
|
|
@@ -11442,10 +11350,10 @@ function NotificationsHistoryButton({ onClick }) {
|
|
|
11442
11350
|
}
|
|
11443
11351
|
|
|
11444
11352
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
11445
|
-
import
|
|
11353
|
+
import React33, { useCallback as useCallback13, useEffect as useEffect21 } from "react";
|
|
11446
11354
|
import { Fragment as Fragment10, jsx as jsx67, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
11447
11355
|
var HEADER_HEIGHT = 48;
|
|
11448
|
-
var MobileBurgerMenu =
|
|
11356
|
+
var MobileBurgerMenu = React33.memo(function MobileBurgerMenu2({
|
|
11449
11357
|
isOpen,
|
|
11450
11358
|
onClose,
|
|
11451
11359
|
config,
|
|
@@ -11506,7 +11414,7 @@ var MobileBurgerMenu = React34.memo(function MobileBurgerMenu2({
|
|
|
11506
11414
|
),
|
|
11507
11415
|
"aria-current": isActive ? "page" : void 0,
|
|
11508
11416
|
children: [
|
|
11509
|
-
item.icon && /* @__PURE__ */ jsx67("div", { className: "flex-shrink-0 size-4 flex items-center justify-center", children:
|
|
11417
|
+
item.icon && /* @__PURE__ */ jsx67("div", { className: "flex-shrink-0 size-4 flex items-center justify-center", children: React33.cloneElement(item.icon, {
|
|
11510
11418
|
size: 16,
|
|
11511
11419
|
color: isActive && !disabled ? "var(--color-accent-primary)" : "var(--color-text-secondary)"
|
|
11512
11420
|
}) }),
|
|
@@ -11525,7 +11433,7 @@ var MobileBurgerMenu = React34.memo(function MobileBurgerMenu2({
|
|
|
11525
11433
|
rows.push(items.slice(i, i + 2));
|
|
11526
11434
|
}
|
|
11527
11435
|
return /* @__PURE__ */ jsx67("div", { className: "flex flex-col gap-3", children: rows.map((row, rowIndex) => /* @__PURE__ */ jsxs54("div", { className: "flex gap-3", children: [
|
|
11528
|
-
row.map((item) => /* @__PURE__ */ jsx67(
|
|
11436
|
+
row.map((item) => /* @__PURE__ */ jsx67(React33.Fragment, { children: renderNavigationItem(item, true) }, item.id)),
|
|
11529
11437
|
row.length === 1 && /* @__PURE__ */ jsx67("div", { className: "flex-1" })
|
|
11530
11438
|
] }, rowIndex)) });
|
|
11531
11439
|
};
|
|
@@ -11616,7 +11524,7 @@ var MobileBurgerMenu = React34.memo(function MobileBurgerMenu2({
|
|
|
11616
11524
|
}
|
|
11617
11525
|
),
|
|
11618
11526
|
/* @__PURE__ */ jsx67("nav", { "aria-label": "Primary navigation", children: renderNavigationGrid(primaryItems) }),
|
|
11619
|
-
secondaryItems.length > 0 && /* @__PURE__ */ jsx67("nav", { "aria-label": "Secondary navigation", className: "flex flex-col gap-3", children: secondaryItems.map((item) => /* @__PURE__ */ jsx67(
|
|
11527
|
+
secondaryItems.length > 0 && /* @__PURE__ */ jsx67("nav", { "aria-label": "Secondary navigation", className: "flex flex-col gap-3", children: secondaryItems.map((item) => /* @__PURE__ */ jsx67(React33.Fragment, { children: renderNavigationItem(item, false) }, item.id)) }),
|
|
11620
11528
|
onLogout && /* @__PURE__ */ jsxs54(
|
|
11621
11529
|
"button",
|
|
11622
11530
|
{
|
|
@@ -12233,11 +12141,14 @@ function AnnouncementBar() {
|
|
|
12233
12141
|
const [announcement, setAnnouncement] = useState27(null);
|
|
12234
12142
|
const [isVisible, setIsVisible] = useState27(false);
|
|
12235
12143
|
const platform = getAppType();
|
|
12144
|
+
const endpoints = useEndpointsRuntime();
|
|
12145
|
+
const announcementsUrl = endpoints?.announcementsUrl;
|
|
12236
12146
|
const getDismissKey = (id) => `${platform}-announcement-${id}-dismissed`;
|
|
12237
12147
|
const getCacheKey = () => `${platform}-announcement-cache`;
|
|
12238
12148
|
const fetchActiveAnnouncement = async () => {
|
|
12149
|
+
if (!announcementsUrl) return;
|
|
12239
12150
|
try {
|
|
12240
|
-
const response = await fetch(
|
|
12151
|
+
const response = await fetch(announcementsUrl);
|
|
12241
12152
|
if (response.ok) {
|
|
12242
12153
|
const data = await response.json();
|
|
12243
12154
|
if (data.announcement) {
|
|
@@ -12270,10 +12181,11 @@ function AnnouncementBar() {
|
|
|
12270
12181
|
setAnnouncement(cached);
|
|
12271
12182
|
setIsVisible(!isDismissed);
|
|
12272
12183
|
}
|
|
12184
|
+
if (!announcementsUrl) return;
|
|
12273
12185
|
fetchActiveAnnouncement();
|
|
12274
12186
|
const interval = setInterval(fetchActiveAnnouncement, 3e5);
|
|
12275
12187
|
return () => clearInterval(interval);
|
|
12276
|
-
}, []);
|
|
12188
|
+
}, [announcementsUrl]);
|
|
12277
12189
|
const handleDismiss = () => {
|
|
12278
12190
|
if (!announcement) return;
|
|
12279
12191
|
localStorage.setItem(getDismissKey(announcement.id), "true");
|
|
@@ -13005,7 +12917,7 @@ function useContentLoading(isLoading) {
|
|
|
13005
12917
|
|
|
13006
12918
|
// src/components/dynamic-skeleton.tsx
|
|
13007
12919
|
init_cn();
|
|
13008
|
-
import
|
|
12920
|
+
import React34 from "react";
|
|
13009
12921
|
|
|
13010
12922
|
// src/hooks/use-theme-aware.ts
|
|
13011
12923
|
function useThemeAware() {
|
|
@@ -13048,7 +12960,7 @@ function DynamicSkeleton({
|
|
|
13048
12960
|
children
|
|
13049
12961
|
}) {
|
|
13050
12962
|
const { platform, isDark, accentColor } = useThemeAware();
|
|
13051
|
-
const dimensions =
|
|
12963
|
+
const dimensions = React34.useMemo(() => {
|
|
13052
12964
|
if (width || height) {
|
|
13053
12965
|
return {
|
|
13054
12966
|
width: typeof width === "number" ? `${width}px` : width,
|
|
@@ -13061,7 +12973,7 @@ function DynamicSkeleton({
|
|
|
13061
12973
|
}
|
|
13062
12974
|
return sizePresets[size];
|
|
13063
12975
|
}, [width, height, size, variant]);
|
|
13064
|
-
const platformStyles =
|
|
12976
|
+
const platformStyles = React34.useMemo(() => {
|
|
13065
12977
|
if (!platformAware) return {};
|
|
13066
12978
|
const baseOpacity = isDark ? 0.1 : 0.15;
|
|
13067
12979
|
const accentOpacity = isDark ? 0.05 : 0.08;
|
|
@@ -13385,10 +13297,10 @@ import { useRef as useRef16, useState as useState28, useEffect as useEffect23, u
|
|
|
13385
13297
|
|
|
13386
13298
|
// src/components/ui/chevron-button.tsx
|
|
13387
13299
|
init_cn();
|
|
13388
|
-
import * as
|
|
13300
|
+
import * as React35 from "react";
|
|
13389
13301
|
import { ChevronUp as ChevronUp2, ChevronDown as ChevronDown3 } from "lucide-react";
|
|
13390
13302
|
import { jsx as jsx91 } from "react/jsx-runtime";
|
|
13391
|
-
var ChevronButton =
|
|
13303
|
+
var ChevronButton = React35.forwardRef(
|
|
13392
13304
|
({ className, direction = "down", size = "md", isExpanded, backgroundColor, borderColor, ...props }, ref) => {
|
|
13393
13305
|
const Icon2 = (isExpanded ? ChevronUp2 : ChevronDown3) || (direction === "up" ? ChevronUp2 : ChevronDown3);
|
|
13394
13306
|
const sizeClasses4 = {
|
|
@@ -14324,9 +14236,9 @@ import Cropper from "react-easy-crop";
|
|
|
14324
14236
|
|
|
14325
14237
|
// src/components/ui/slider.tsx
|
|
14326
14238
|
init_cn();
|
|
14327
|
-
import * as
|
|
14239
|
+
import * as React39 from "react";
|
|
14328
14240
|
import { jsx as jsx101 } from "react/jsx-runtime";
|
|
14329
|
-
var Slider =
|
|
14241
|
+
var Slider = React39.forwardRef(
|
|
14330
14242
|
({ className, value = [0], onValueChange, min = 0, max = 100, step = 1, ...props }, ref) => {
|
|
14331
14243
|
const handleChange = (e) => {
|
|
14332
14244
|
const newValue = [Number(e.target.value)];
|
|
@@ -14782,7 +14694,7 @@ init_cn();
|
|
|
14782
14694
|
|
|
14783
14695
|
// src/components/square-avatar.tsx
|
|
14784
14696
|
init_cn();
|
|
14785
|
-
import
|
|
14697
|
+
import React41 from "react";
|
|
14786
14698
|
|
|
14787
14699
|
// src/utils/image-proxy.ts
|
|
14788
14700
|
function getProxiedImageUrl2(url) {
|
|
@@ -14792,7 +14704,7 @@ function getProxiedImageUrl2(url) {
|
|
|
14792
14704
|
// src/components/square-avatar.tsx
|
|
14793
14705
|
import { jsx as jsx105 } from "react/jsx-runtime";
|
|
14794
14706
|
function SquareAvatar2({ src, fallbackName = "", size = 56, fullWidth = false, className }) {
|
|
14795
|
-
const initials =
|
|
14707
|
+
const initials = React41.useMemo(() => {
|
|
14796
14708
|
if (!fallbackName) return "";
|
|
14797
14709
|
return fallbackName.split(" ").map((n) => n.charAt(0)).join("").slice(0, 2).toUpperCase();
|
|
14798
14710
|
}, [fallbackName]);
|
|
@@ -17201,16 +17113,16 @@ function DateTimePicker({
|
|
|
17201
17113
|
|
|
17202
17114
|
// src/components/shared/onboarding/onboarding-walkthrough.tsx
|
|
17203
17115
|
init_button2();
|
|
17204
|
-
import
|
|
17116
|
+
import React45, { useRef as useRef21, useCallback as useCallback19 } from "react";
|
|
17205
17117
|
|
|
17206
17118
|
// src/components/shared/onboarding/onboarding-step-card.tsx
|
|
17207
|
-
import
|
|
17119
|
+
import React44 from "react";
|
|
17208
17120
|
|
|
17209
17121
|
// src/components/ui/interactive-card.tsx
|
|
17210
17122
|
init_cn();
|
|
17211
|
-
import
|
|
17123
|
+
import React43 from "react";
|
|
17212
17124
|
import { jsx as jsx135 } from "react/jsx-runtime";
|
|
17213
|
-
var InteractiveCard =
|
|
17125
|
+
var InteractiveCard = React43.forwardRef(
|
|
17214
17126
|
({
|
|
17215
17127
|
children,
|
|
17216
17128
|
onClick,
|
|
@@ -17359,7 +17271,7 @@ function OnboardingStepCard({
|
|
|
17359
17271
|
onSkip,
|
|
17360
17272
|
className
|
|
17361
17273
|
}) {
|
|
17362
|
-
const [isProcessing, setIsProcessing] =
|
|
17274
|
+
const [isProcessing, setIsProcessing] = React44.useState(false);
|
|
17363
17275
|
const handleAction = async (e) => {
|
|
17364
17276
|
e.stopPropagation();
|
|
17365
17277
|
setIsProcessing(true);
|
|
@@ -17471,7 +17383,7 @@ function OnboardingWalkthrough({
|
|
|
17471
17383
|
const autoMarkingInProgressRef = useRef21(false);
|
|
17472
17384
|
const lastCompletionStatusRef = useRef21(null);
|
|
17473
17385
|
const actionInProgressRef = useRef21(/* @__PURE__ */ new Set());
|
|
17474
|
-
|
|
17386
|
+
React45.useEffect(() => {
|
|
17475
17387
|
if (isLoadingCompletion) {
|
|
17476
17388
|
hasAutoMarkedRef.current = false;
|
|
17477
17389
|
return;
|
|
@@ -17581,7 +17493,6 @@ import Image8 from "next/image";
|
|
|
17581
17493
|
init_cn();
|
|
17582
17494
|
import {
|
|
17583
17495
|
AlertTriangle,
|
|
17584
|
-
ChevronRight as ChevronRight6,
|
|
17585
17496
|
Eye,
|
|
17586
17497
|
Package as Package3,
|
|
17587
17498
|
Play,
|
|
@@ -17598,7 +17509,7 @@ function ProductReleaseCard({
|
|
|
17598
17509
|
onClick,
|
|
17599
17510
|
anchorProps,
|
|
17600
17511
|
className,
|
|
17601
|
-
size = "
|
|
17512
|
+
size = "lg",
|
|
17602
17513
|
coverImage,
|
|
17603
17514
|
hasVideoCover,
|
|
17604
17515
|
releaseType,
|
|
@@ -17608,34 +17519,28 @@ function ProductReleaseCard({
|
|
|
17608
17519
|
author,
|
|
17609
17520
|
changelogCounts
|
|
17610
17521
|
}) {
|
|
17611
|
-
if (size === "
|
|
17522
|
+
if (size === "lg") {
|
|
17612
17523
|
const totalChangelog = (changelogCounts?.features ?? 0) + (changelogCounts?.fixes ?? 0) + (changelogCounts?.improvements ?? 0) + (changelogCounts?.breaking ?? 0);
|
|
17613
|
-
const valueCells = [
|
|
17614
|
-
|
|
17615
|
-
valueCells.push({
|
|
17524
|
+
const valueCells = [
|
|
17525
|
+
releaseType && releaseTypeBadgeColor ? {
|
|
17616
17526
|
value: releaseType.toUpperCase(),
|
|
17617
17527
|
label: "Type",
|
|
17618
17528
|
uppercase: true,
|
|
17619
17529
|
colorScheme: releaseTypeBadgeColor
|
|
17620
|
-
}
|
|
17621
|
-
|
|
17622
|
-
if (releaseStatus) {
|
|
17623
|
-
valueCells.push({
|
|
17530
|
+
} : { value: "\u2014", label: "Type", uppercase: false },
|
|
17531
|
+
releaseStatus ? {
|
|
17624
17532
|
value: releaseStatus.toUpperCase(),
|
|
17625
17533
|
label: "Status",
|
|
17626
17534
|
uppercase: true
|
|
17627
|
-
}
|
|
17628
|
-
|
|
17629
|
-
if (formattedDate) {
|
|
17630
|
-
valueCells.push({
|
|
17535
|
+
} : { value: "\u2014", label: "Status", uppercase: false },
|
|
17536
|
+
formattedDate ? {
|
|
17631
17537
|
value: formattedDate,
|
|
17632
17538
|
label: "Released",
|
|
17633
17539
|
uppercase: false
|
|
17634
|
-
}
|
|
17635
|
-
|
|
17636
|
-
const
|
|
17637
|
-
const
|
|
17638
|
-
const gridColsClass = totalCells >= 4 ? "md:grid-cols-4" : totalCells === 3 ? "md:grid-cols-3" : totalCells === 2 ? "md:grid-cols-2" : "md:grid-cols-1";
|
|
17540
|
+
} : { value: "\u2014", label: "Released", uppercase: false }
|
|
17541
|
+
];
|
|
17542
|
+
const effectiveAuthor = author?.full_name ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
|
|
17543
|
+
const gridColsClass = "md:grid-cols-4";
|
|
17639
17544
|
const dividerClass = "border-b md:border-b-0 md:border-r border-ods-border";
|
|
17640
17545
|
const frameClass = cn(
|
|
17641
17546
|
"group bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden",
|
|
@@ -17667,11 +17572,11 @@ function ProductReleaseCard({
|
|
|
17667
17572
|
"v",
|
|
17668
17573
|
version
|
|
17669
17574
|
] }) }),
|
|
17670
|
-
/* @__PURE__ */ jsx139("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight line-clamp-2
|
|
17671
|
-
|
|
17575
|
+
/* @__PURE__ */ jsx139("div", { className: "min-h-[60px] md:min-h-[72px] flex items-start mb-3", children: /* @__PURE__ */ jsx139("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight line-clamp-2", children: title }) }),
|
|
17576
|
+
/* @__PURE__ */ jsx139("div", { className: "min-h-[68px] md:min-h-[78px]", children: /* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-3", children: summary ?? "" }) })
|
|
17672
17577
|
] })
|
|
17673
17578
|
] }),
|
|
17674
|
-
|
|
17579
|
+
/* @__PURE__ */ jsx139("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 font-['DM_Sans'] text-sm text-ods-text-secondary", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs110(Fragment20, { children: [
|
|
17675
17580
|
changelogCounts.features > 0 && /* @__PURE__ */ jsxs110("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
17676
17581
|
/* @__PURE__ */ jsx139(Sparkles2, { className: "w-3.5 h-3.5" }),
|
|
17677
17582
|
changelogCounts.features,
|
|
@@ -17695,8 +17600,8 @@ function ProductReleaseCard({
|
|
|
17695
17600
|
changelogCounts.breaking,
|
|
17696
17601
|
" breaking"
|
|
17697
17602
|
] })
|
|
17698
|
-
] }),
|
|
17699
|
-
|
|
17603
|
+
] }) : /* @__PURE__ */ jsx139("span", { className: "text-sm text-ods-text-secondary", children: "No changelog entries yet" }) }),
|
|
17604
|
+
/* @__PURE__ */ jsxs110(
|
|
17700
17605
|
"div",
|
|
17701
17606
|
{
|
|
17702
17607
|
className: cn(
|
|
@@ -17708,12 +17613,7 @@ function ProductReleaseCard({
|
|
|
17708
17613
|
valueCells.map((cell, i) => /* @__PURE__ */ jsx139(
|
|
17709
17614
|
"div",
|
|
17710
17615
|
{
|
|
17711
|
-
className: cn(
|
|
17712
|
-
"bg-ods-card p-4 flex flex-col gap-3",
|
|
17713
|
-
// Last value cell skips the trailing divider when no
|
|
17714
|
-
// author cell follows; otherwise every value cell gets it.
|
|
17715
|
-
(i < valueCells.length - 1 || hasAuthorCell) && dividerClass
|
|
17716
|
-
),
|
|
17616
|
+
className: cn("bg-ods-card p-4 flex flex-col gap-3", dividerClass),
|
|
17717
17617
|
children: /* @__PURE__ */ jsxs110("div", { className: "flex flex-col gap-0", children: [
|
|
17718
17618
|
cell.colorScheme ? /* @__PURE__ */ jsx139(
|
|
17719
17619
|
StatusBadge,
|
|
@@ -17724,26 +17624,37 @@ function ProductReleaseCard({
|
|
|
17724
17624
|
singleLine: true,
|
|
17725
17625
|
className: "self-start"
|
|
17726
17626
|
}
|
|
17727
|
-
) : /* @__PURE__ */ jsx139(
|
|
17627
|
+
) : /* @__PURE__ */ jsx139(
|
|
17628
|
+
"p",
|
|
17629
|
+
{
|
|
17630
|
+
className: cn(
|
|
17631
|
+
"text-h4",
|
|
17632
|
+
// Em-dash placeholder reads as secondary text;
|
|
17633
|
+
// populated values stay primary.
|
|
17634
|
+
cell.value === "\u2014" ? "text-ods-text-secondary" : "text-ods-text-primary"
|
|
17635
|
+
),
|
|
17636
|
+
children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value
|
|
17637
|
+
}
|
|
17638
|
+
),
|
|
17728
17639
|
/* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: cell.label })
|
|
17729
17640
|
] })
|
|
17730
17641
|
},
|
|
17731
17642
|
`${cell.label}-${i}`
|
|
17732
17643
|
)),
|
|
17733
|
-
|
|
17644
|
+
/* @__PURE__ */ jsxs110("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
|
|
17734
17645
|
/* @__PURE__ */ jsx139(
|
|
17735
17646
|
SquareAvatar,
|
|
17736
17647
|
{
|
|
17737
|
-
src:
|
|
17738
|
-
alt:
|
|
17739
|
-
fallback:
|
|
17648
|
+
src: effectiveAuthor.avatar_url ?? void 0,
|
|
17649
|
+
alt: effectiveAuthor.full_name,
|
|
17650
|
+
fallback: effectiveAuthor.full_name.charAt(0).toUpperCase(),
|
|
17740
17651
|
size: "md",
|
|
17741
17652
|
variant: "round"
|
|
17742
17653
|
}
|
|
17743
17654
|
),
|
|
17744
17655
|
/* @__PURE__ */ jsxs110("div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
|
|
17745
|
-
/* @__PURE__ */ jsx139("p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children:
|
|
17746
|
-
/* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children:
|
|
17656
|
+
/* @__PURE__ */ jsx139("p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: effectiveAuthor.full_name }),
|
|
17657
|
+
/* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: effectiveAuthor.job_title || "Author" })
|
|
17747
17658
|
] })
|
|
17748
17659
|
] })
|
|
17749
17660
|
]
|
|
@@ -17837,79 +17748,14 @@ function ProductReleaseCard({
|
|
|
17837
17748
|
}
|
|
17838
17749
|
);
|
|
17839
17750
|
}
|
|
17840
|
-
|
|
17841
|
-
return /* @__PURE__ */ jsxs110(
|
|
17842
|
-
"a",
|
|
17843
|
-
{
|
|
17844
|
-
...anchorProps,
|
|
17845
|
-
className: cn(
|
|
17846
|
-
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
17847
|
-
"flex flex-col md:flex-row",
|
|
17848
|
-
"items-start md:items-center",
|
|
17849
|
-
"gap-3 md:gap-4",
|
|
17850
|
-
"p-4 no-underline",
|
|
17851
|
-
"transition-colors hover:border-ods-text-secondary/40",
|
|
17852
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card",
|
|
17853
|
-
className
|
|
17854
|
-
),
|
|
17855
|
-
children: [
|
|
17856
|
-
/* @__PURE__ */ jsxs110("div", { className: "flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2", children: [
|
|
17857
|
-
/* @__PURE__ */ jsx139("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx139("h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2", title, children: title }) }),
|
|
17858
|
-
/* @__PURE__ */ jsx139("p", { className: "text-h4 text-ods-text-secondary line-clamp-3", title: summary || " ", children: summary || " " })
|
|
17859
|
-
] }),
|
|
17860
|
-
/* @__PURE__ */ jsxs110("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", children: [
|
|
17861
|
-
/* @__PURE__ */ jsxs110("div", { className: "w-[200px] flex flex-col justify-center gap-2", children: [
|
|
17862
|
-
/* @__PURE__ */ jsx139("p", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] truncate", children: version }),
|
|
17863
|
-
/* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: formattedDate })
|
|
17864
|
-
] }),
|
|
17865
|
-
/* @__PURE__ */ jsx139("div", { className: "flex items-center justify-center p-3 shrink-0", children: /* @__PURE__ */ jsx139(ChevronRight6, { className: "h-6 w-6 text-ods-text-primary" }) })
|
|
17866
|
-
] })
|
|
17867
|
-
]
|
|
17868
|
-
}
|
|
17869
|
-
);
|
|
17870
|
-
}
|
|
17871
|
-
return /* @__PURE__ */ jsxs110(
|
|
17872
|
-
InteractiveCard,
|
|
17873
|
-
{
|
|
17874
|
-
clickable: true,
|
|
17875
|
-
onClick,
|
|
17876
|
-
className: cn(
|
|
17877
|
-
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
17878
|
-
"flex flex-col md:flex-row",
|
|
17879
|
-
"items-start md:items-center",
|
|
17880
|
-
"gap-3 md:gap-4",
|
|
17881
|
-
"p-4",
|
|
17882
|
-
className
|
|
17883
|
-
),
|
|
17884
|
-
children: [
|
|
17885
|
-
/* @__PURE__ */ jsxs110("div", { className: "flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2", children: [
|
|
17886
|
-
/* @__PURE__ */ jsx139("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx139("h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2", title, children: title }) }),
|
|
17887
|
-
/* @__PURE__ */ jsx139("p", { className: "text-h4 text-ods-text-secondary line-clamp-3", title: summary || "\xA0", children: summary || "\xA0" })
|
|
17888
|
-
] }),
|
|
17889
|
-
/* @__PURE__ */ jsxs110(
|
|
17890
|
-
"div",
|
|
17891
|
-
{
|
|
17892
|
-
className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0",
|
|
17893
|
-
onClick: (e) => e.stopPropagation(),
|
|
17894
|
-
children: [
|
|
17895
|
-
/* @__PURE__ */ jsxs110("div", { className: "w-[200px] flex flex-col justify-center gap-2", children: [
|
|
17896
|
-
/* @__PURE__ */ jsx139("p", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] truncate", children: version }),
|
|
17897
|
-
/* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: formattedDate })
|
|
17898
|
-
] }),
|
|
17899
|
-
/* @__PURE__ */ jsx139("div", { className: "flex items-center justify-center p-3 shrink-0", children: /* @__PURE__ */ jsx139(ChevronRight6, { className: "h-6 w-6 text-ods-text-primary" }) })
|
|
17900
|
-
]
|
|
17901
|
-
}
|
|
17902
|
-
)
|
|
17903
|
-
]
|
|
17904
|
-
}
|
|
17905
|
-
);
|
|
17751
|
+
throw new Error(`ProductReleaseCard: unsupported size '${size}'`);
|
|
17906
17752
|
}
|
|
17907
17753
|
|
|
17908
17754
|
// src/components/shared/product-release/product-release-card-skeleton.tsx
|
|
17909
17755
|
init_cn();
|
|
17910
17756
|
import { jsx as jsx140, jsxs as jsxs111 } from "react/jsx-runtime";
|
|
17911
|
-
function ProductReleaseCardSkeleton({ className, size = "
|
|
17912
|
-
if (size === "
|
|
17757
|
+
function ProductReleaseCardSkeleton({ className, size = "lg" }) {
|
|
17758
|
+
if (size === "lg") {
|
|
17913
17759
|
return /* @__PURE__ */ jsxs111(
|
|
17914
17760
|
"div",
|
|
17915
17761
|
{
|
|
@@ -17921,24 +17767,29 @@ function ProductReleaseCardSkeleton({ className, size = "default" }) {
|
|
|
17921
17767
|
),
|
|
17922
17768
|
children: [
|
|
17923
17769
|
/* @__PURE__ */ jsxs111("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
17924
|
-
/* @__PURE__ */ jsx140("div", { className: "w-full md:w-[256px] aspect-[16/9] bg-ods-
|
|
17770
|
+
/* @__PURE__ */ jsx140("div", { className: "w-full md:w-[256px] aspect-[16/9] bg-ods-border rounded-lg flex-shrink-0" }),
|
|
17925
17771
|
/* @__PURE__ */ jsxs111("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
17926
|
-
/* @__PURE__ */ jsx140("div", { className: "h-
|
|
17927
|
-
/* @__PURE__ */
|
|
17928
|
-
|
|
17929
|
-
|
|
17930
|
-
|
|
17772
|
+
/* @__PURE__ */ jsx140("div", { className: "flex items-center gap-3 mb-3", children: /* @__PURE__ */ jsx140("div", { className: "h-7 w-20 bg-ods-border rounded" }) }),
|
|
17773
|
+
/* @__PURE__ */ jsxs111("div", { className: "min-h-[60px] md:min-h-[72px] flex flex-col gap-1.5 justify-start mb-3", children: [
|
|
17774
|
+
/* @__PURE__ */ jsx140("div", { className: "h-[25px] md:h-[30px] w-3/4 bg-ods-border rounded" }),
|
|
17775
|
+
/* @__PURE__ */ jsx140("div", { className: "h-[25px] md:h-[30px] w-1/2 bg-ods-border rounded" })
|
|
17776
|
+
] }),
|
|
17777
|
+
/* @__PURE__ */ jsxs111("div", { className: "min-h-[68px] md:min-h-[78px] flex flex-col gap-2 justify-start", children: [
|
|
17778
|
+
/* @__PURE__ */ jsx140("div", { className: "h-3 w-full bg-ods-border/70 rounded" }),
|
|
17779
|
+
/* @__PURE__ */ jsx140("div", { className: "h-3 w-11/12 bg-ods-border/70 rounded" }),
|
|
17780
|
+
/* @__PURE__ */ jsx140("div", { className: "h-3 w-5/6 bg-ods-border/70 rounded" })
|
|
17781
|
+
] })
|
|
17931
17782
|
] })
|
|
17932
17783
|
] }),
|
|
17933
|
-
/* @__PURE__ */ jsx140("div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ jsx140("div", { className: "h-
|
|
17784
|
+
/* @__PURE__ */ jsx140("div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ jsx140("div", { className: "h-5 w-2/3 bg-ods-border/70 rounded" }) }),
|
|
17934
17785
|
/* @__PURE__ */ jsxs111("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
|
|
17935
17786
|
[0, 1, 2].map((i) => /* @__PURE__ */ jsx140(
|
|
17936
17787
|
"div",
|
|
17937
17788
|
{
|
|
17938
17789
|
className: "bg-ods-card p-4 flex flex-col gap-3 border-b md:border-b-0 md:border-r border-ods-border",
|
|
17939
17790
|
children: /* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-2", children: [
|
|
17940
|
-
/* @__PURE__ */ jsx140("div", { className: "h-
|
|
17941
|
-
/* @__PURE__ */ jsx140("div", { className: "h-
|
|
17791
|
+
/* @__PURE__ */ jsx140("div", { className: "h-7 w-24 bg-ods-bg rounded" }),
|
|
17792
|
+
/* @__PURE__ */ jsx140("div", { className: "h-4 w-16 bg-ods-bg/60 rounded" })
|
|
17942
17793
|
] })
|
|
17943
17794
|
},
|
|
17944
17795
|
`cell-${i}`
|
|
@@ -17946,8 +17797,8 @@ function ProductReleaseCardSkeleton({ className, size = "default" }) {
|
|
|
17946
17797
|
/* @__PURE__ */ jsxs111("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
|
|
17947
17798
|
/* @__PURE__ */ jsx140("div", { className: "h-10 w-10 rounded-full bg-ods-bg shrink-0" }),
|
|
17948
17799
|
/* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
17949
|
-
/* @__PURE__ */ jsx140("div", { className: "h-
|
|
17950
|
-
/* @__PURE__ */ jsx140("div", { className: "h-
|
|
17800
|
+
/* @__PURE__ */ jsx140("div", { className: "h-5 w-3/4 bg-ods-bg rounded" }),
|
|
17801
|
+
/* @__PURE__ */ jsx140("div", { className: "h-4 w-1/2 bg-ods-bg/60 rounded" })
|
|
17951
17802
|
] })
|
|
17952
17803
|
] })
|
|
17953
17804
|
] })
|
|
@@ -17978,40 +17829,7 @@ function ProductReleaseCardSkeleton({ className, size = "default" }) {
|
|
|
17978
17829
|
}
|
|
17979
17830
|
);
|
|
17980
17831
|
}
|
|
17981
|
-
|
|
17982
|
-
"div",
|
|
17983
|
-
{
|
|
17984
|
-
className: cn(
|
|
17985
|
-
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
17986
|
-
"flex flex-col md:flex-row",
|
|
17987
|
-
"items-start md:items-center",
|
|
17988
|
-
"gap-3 md:gap-4",
|
|
17989
|
-
"p-4",
|
|
17990
|
-
"animate-pulse",
|
|
17991
|
-
className
|
|
17992
|
-
),
|
|
17993
|
-
children: [
|
|
17994
|
-
/* @__PURE__ */ jsxs111("div", { className: "flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2", children: [
|
|
17995
|
-
/* @__PURE__ */ jsx140("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-1 w-full", children: [
|
|
17996
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-3/4 bg-ods-border rounded" }),
|
|
17997
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-1/2 bg-ods-border rounded" })
|
|
17998
|
-
] }) }),
|
|
17999
|
-
/* @__PURE__ */ jsxs111("div", { className: "flex flex-col gap-1", children: [
|
|
18000
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-full bg-ods-border rounded" }),
|
|
18001
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-full bg-ods-border rounded" }),
|
|
18002
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-2/3 bg-ods-border rounded" })
|
|
18003
|
-
] })
|
|
18004
|
-
] }),
|
|
18005
|
-
/* @__PURE__ */ jsxs111("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", children: [
|
|
18006
|
-
/* @__PURE__ */ jsxs111("div", { className: "w-[200px] flex flex-col justify-center gap-2", children: [
|
|
18007
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[24px] w-20 bg-ods-border rounded" }),
|
|
18008
|
-
/* @__PURE__ */ jsx140("div", { className: "h-[20px] w-32 bg-ods-border rounded" })
|
|
18009
|
-
] }),
|
|
18010
|
-
/* @__PURE__ */ jsx140("div", { className: "h-6 w-6 bg-ods-border rounded shrink-0 mx-3" })
|
|
18011
|
-
] })
|
|
18012
|
-
]
|
|
18013
|
-
}
|
|
18014
|
-
);
|
|
17832
|
+
throw new Error(`ProductReleaseCardSkeleton: unsupported size '${size}'`);
|
|
18015
17833
|
}
|
|
18016
17834
|
|
|
18017
17835
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
@@ -18126,7 +17944,7 @@ function ReleaseChangelogSection({
|
|
|
18126
17944
|
|
|
18127
17945
|
// src/components/ui/image-gallery-modal.tsx
|
|
18128
17946
|
import { useState as useState35, useEffect as useEffect28 } from "react";
|
|
18129
|
-
import { ChevronLeft as ChevronLeft3, ChevronRight as
|
|
17947
|
+
import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight6 } from "lucide-react";
|
|
18130
17948
|
import Image9 from "next/image";
|
|
18131
17949
|
import { Fragment as Fragment21, jsx as jsx144, jsxs as jsxs114 } from "react/jsx-runtime";
|
|
18132
17950
|
function ImageGalleryModal({
|
|
@@ -18202,7 +18020,7 @@ function ImageGalleryModal({
|
|
|
18202
18020
|
size: "small-legacy",
|
|
18203
18021
|
onClick: goToNextImage,
|
|
18204
18022
|
className: "rounded-full bg-black/50 text-white hover:bg-black/70 p-2",
|
|
18205
|
-
leftIcon: /* @__PURE__ */ jsx144(
|
|
18023
|
+
leftIcon: /* @__PURE__ */ jsx144(ChevronRight6, { className: "w-6 h-6" })
|
|
18206
18024
|
}
|
|
18207
18025
|
) })
|
|
18208
18026
|
] }),
|
|
@@ -18254,13 +18072,13 @@ init_cn();
|
|
|
18254
18072
|
|
|
18255
18073
|
// src/components/ui/page-actions.tsx
|
|
18256
18074
|
init_cn();
|
|
18257
|
-
import
|
|
18075
|
+
import React48 from "react";
|
|
18258
18076
|
|
|
18259
18077
|
// src/components/ui/actions-menu.tsx
|
|
18260
18078
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
18261
18079
|
import { Check as Check2 } from "lucide-react";
|
|
18262
18080
|
import Link3 from "next/link";
|
|
18263
|
-
import
|
|
18081
|
+
import React47, { useCallback as useCallback20, useState as useState36 } from "react";
|
|
18264
18082
|
init_cn();
|
|
18265
18083
|
init_button2();
|
|
18266
18084
|
import { Fragment as Fragment22, jsx as jsx145, jsxs as jsxs115 } from "react/jsx-runtime";
|
|
@@ -18473,7 +18291,7 @@ var ActionsMenu = ({
|
|
|
18473
18291
|
className: `relative min-w-[256px] max-h-[var(--radix-popper-available-height)] bg-ods-bg border border-ods-border rounded-md shadow-lg overflow-y-auto ${className}`,
|
|
18474
18292
|
children: groups.map((group, groupIndex) => {
|
|
18475
18293
|
const groupKey = group.id || group.items.map((i) => i.id).join("|");
|
|
18476
|
-
return /* @__PURE__ */ jsxs115(
|
|
18294
|
+
return /* @__PURE__ */ jsxs115(React47.Fragment, { children: [
|
|
18477
18295
|
group.items.map((item, itemIndex) => /* @__PURE__ */ jsx145(
|
|
18478
18296
|
MenuItem,
|
|
18479
18297
|
{
|
|
@@ -18681,7 +18499,7 @@ function IconButtonsVariant({
|
|
|
18681
18499
|
return /* @__PURE__ */ jsxs116(Fragment23, { children: [
|
|
18682
18500
|
/* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
18683
18501
|
selector,
|
|
18684
|
-
desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(
|
|
18502
|
+
desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(React48.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
|
|
18685
18503
|
hasMenuActions && /* @__PURE__ */ jsx146(ActionsMenuDropdown, { groups: menuActions })
|
|
18686
18504
|
] }),
|
|
18687
18505
|
/* @__PURE__ */ jsx146("div", { className: cn("flex md:hidden", className), children: useSingleActionMobile && singleAction ? renderActionButton(singleAction, { iconOnly: true }) : /* @__PURE__ */ jsx146(
|
|
@@ -18706,7 +18524,7 @@ function PrimaryButtonsVariant({
|
|
|
18706
18524
|
});
|
|
18707
18525
|
const desktopActions = sortedActions.filter((a) => !a.showOnlyMobile);
|
|
18708
18526
|
return /* @__PURE__ */ jsxs116(Fragment23, { children: [
|
|
18709
|
-
/* @__PURE__ */ jsx146("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(
|
|
18527
|
+
/* @__PURE__ */ jsx146("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(React48.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
|
|
18710
18528
|
/* @__PURE__ */ jsx146(MobileBottomActions, { actions: sortedActions })
|
|
18711
18529
|
] });
|
|
18712
18530
|
}
|
|
@@ -18722,7 +18540,7 @@ function MenuPrimaryVariant({
|
|
|
18722
18540
|
/* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
18723
18541
|
selector,
|
|
18724
18542
|
hasMenuActions && /* @__PURE__ */ jsx146(ActionsMenuDropdown, { groups: menuActions }),
|
|
18725
|
-
desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(
|
|
18543
|
+
desktopActions.map((action, idx) => /* @__PURE__ */ jsx146(React48.Fragment, { children: renderActionButton({ ...action, variant: action.variant || "accent" }) }, `desktop-${actionKey(action, idx)}`))
|
|
18726
18544
|
] }),
|
|
18727
18545
|
/* @__PURE__ */ jsx146("div", { className: cn("flex md:hidden", className), children: /* @__PURE__ */ jsx146(
|
|
18728
18546
|
ActionsMenuDropdown,
|
|
@@ -18741,7 +18559,7 @@ function MobileBottomActions({ actions }) {
|
|
|
18741
18559
|
"bg-ods-card border-t border-ods-border",
|
|
18742
18560
|
"flex items-start pt-6 pb-6 px-6",
|
|
18743
18561
|
ACTIONS_GAP
|
|
18744
|
-
), children: actions.map((action, idx) => /* @__PURE__ */ jsx146(
|
|
18562
|
+
), children: actions.map((action, idx) => /* @__PURE__ */ jsx146(React48.Fragment, { children: renderActionButton(action, { fullWidth: !!action.label }) }, `mobile-${actionKey(action, idx)}`)) });
|
|
18745
18563
|
}
|
|
18746
18564
|
function usePageActionsBottomPadding(variant) {
|
|
18747
18565
|
return variant === "primary-buttons" || variant === "menu-primary" ? "pb-40 md:pb-0" : "";
|
|
@@ -19384,7 +19202,7 @@ function InfoCard({ data, className = "" }) {
|
|
|
19384
19202
|
data.subtitle && /* @__PURE__ */ jsx152("div", { className: "text-h4 text-ods-text-secondary truncate self-stretch", title: data.subtitle, children: data.subtitle }),
|
|
19385
19203
|
data.items.map((item, index) => {
|
|
19386
19204
|
const values = Array.isArray(item.value) ? item.value : [item.value];
|
|
19387
|
-
return /* @__PURE__ */ jsx152(
|
|
19205
|
+
return /* @__PURE__ */ jsx152(React49.Fragment, { children: values.map((val, valIndex) => /* @__PURE__ */ jsx152(
|
|
19388
19206
|
InfoCardValueRow,
|
|
19389
19207
|
{
|
|
19390
19208
|
label: item.label,
|
|
@@ -19455,9 +19273,9 @@ function InfoRow({ label, value, icon }) {
|
|
|
19455
19273
|
|
|
19456
19274
|
// src/components/ui/input-trigger.tsx
|
|
19457
19275
|
init_cn();
|
|
19458
|
-
import * as
|
|
19276
|
+
import * as React50 from "react";
|
|
19459
19277
|
import { jsx as jsx154, jsxs as jsxs123 } from "react/jsx-runtime";
|
|
19460
|
-
var InputTrigger =
|
|
19278
|
+
var InputTrigger = React50.forwardRef(
|
|
19461
19279
|
({ selectedLabel, placeholder, startIcon, endIcon, invalid, className, disabled, ...props }, ref) => {
|
|
19462
19280
|
const isPlaceholder = selectedLabel === void 0 || selectedLabel === null || selectedLabel === "";
|
|
19463
19281
|
return /* @__PURE__ */ jsxs123(
|
|
@@ -19501,7 +19319,7 @@ var InputTrigger = React51.forwardRef(
|
|
|
19501
19319
|
InputTrigger.displayName = "InputTrigger";
|
|
19502
19320
|
|
|
19503
19321
|
// src/components/ui/media-type-selector.tsx
|
|
19504
|
-
import * as
|
|
19322
|
+
import * as React51 from "react";
|
|
19505
19323
|
import { Video as Video3, Image as Image10, FileText as FileText3, Archive, CheckSquare, BookOpen, FileType } from "lucide-react";
|
|
19506
19324
|
import { jsx as jsx155, jsxs as jsxs124 } from "react/jsx-runtime";
|
|
19507
19325
|
var mediaTypeOptions = [
|
|
@@ -19522,8 +19340,8 @@ function MediaTypeSelector({
|
|
|
19522
19340
|
className,
|
|
19523
19341
|
disabled
|
|
19524
19342
|
}) {
|
|
19525
|
-
const [key, setKey] =
|
|
19526
|
-
|
|
19343
|
+
const [key, setKey] = React51.useState(0);
|
|
19344
|
+
React51.useEffect(() => {
|
|
19527
19345
|
setKey((prev) => prev + 1);
|
|
19528
19346
|
}, [value]);
|
|
19529
19347
|
return /* @__PURE__ */ jsxs124(
|
|
@@ -19676,10 +19494,10 @@ var ProgressBar = ({
|
|
|
19676
19494
|
|
|
19677
19495
|
// src/components/ui/radio-group.tsx
|
|
19678
19496
|
init_cn();
|
|
19679
|
-
import * as
|
|
19497
|
+
import * as React53 from "react";
|
|
19680
19498
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
19681
19499
|
import { jsx as jsx158, jsxs as jsxs126 } from "react/jsx-runtime";
|
|
19682
|
-
var RadioGroup =
|
|
19500
|
+
var RadioGroup = React53.forwardRef(({ className, ...props }, ref) => {
|
|
19683
19501
|
return /* @__PURE__ */ jsx158(
|
|
19684
19502
|
RadioGroupPrimitive.Root,
|
|
19685
19503
|
{
|
|
@@ -19690,7 +19508,7 @@ var RadioGroup = React54.forwardRef(({ className, ...props }, ref) => {
|
|
|
19690
19508
|
);
|
|
19691
19509
|
});
|
|
19692
19510
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
19693
|
-
var RadioGroupItem =
|
|
19511
|
+
var RadioGroupItem = React53.forwardRef(({ className, ...props }, ref) => {
|
|
19694
19512
|
return /* @__PURE__ */ jsx158(
|
|
19695
19513
|
RadioGroupPrimitive.Item,
|
|
19696
19514
|
{
|
|
@@ -19711,7 +19529,7 @@ var RadioGroupItem = React54.forwardRef(({ className, ...props }, ref) => {
|
|
|
19711
19529
|
);
|
|
19712
19530
|
});
|
|
19713
19531
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
19714
|
-
var RadioGroupBlock =
|
|
19532
|
+
var RadioGroupBlock = React53.forwardRef(
|
|
19715
19533
|
({ className, options, variant = "separated", error, itemClassName, disabled, ...props }, ref) => {
|
|
19716
19534
|
const isGrouped = variant === "grouped";
|
|
19717
19535
|
return /* @__PURE__ */ jsxs126("div", { className: cn("relative flex w-full flex-col", className), children: [
|
|
@@ -19810,7 +19628,7 @@ var RadioGroupBlock = React54.forwardRef(
|
|
|
19810
19628
|
RadioGroupBlock.displayName = "RadioGroupBlock";
|
|
19811
19629
|
|
|
19812
19630
|
// src/components/ui/tags-input.tsx
|
|
19813
|
-
import * as
|
|
19631
|
+
import * as React54 from "react";
|
|
19814
19632
|
import { X as X7, Plus } from "lucide-react";
|
|
19815
19633
|
init_button2();
|
|
19816
19634
|
init_cn();
|
|
@@ -19826,7 +19644,7 @@ function TagsInput({
|
|
|
19826
19644
|
badgeClassName,
|
|
19827
19645
|
label
|
|
19828
19646
|
}) {
|
|
19829
|
-
const [inputValue, setInputValue] =
|
|
19647
|
+
const [inputValue, setInputValue] = React54.useState("");
|
|
19830
19648
|
const handleAddTag = () => {
|
|
19831
19649
|
const trimmedValue = inputValue.trim();
|
|
19832
19650
|
if (!trimmedValue) return;
|
|
@@ -19912,7 +19730,7 @@ function TagsInput({
|
|
|
19912
19730
|
|
|
19913
19731
|
// src/components/ui/tags-manager.tsx
|
|
19914
19732
|
init_cn();
|
|
19915
|
-
import * as
|
|
19733
|
+
import * as React55 from "react";
|
|
19916
19734
|
import * as PopoverPrimitive2 from "@radix-ui/react-popover";
|
|
19917
19735
|
import * as ScrollAreaPrimitive2 from "@radix-ui/react-scroll-area";
|
|
19918
19736
|
init_button2();
|
|
@@ -19932,19 +19750,19 @@ function TagsManager({
|
|
|
19932
19750
|
disabled = false,
|
|
19933
19751
|
className
|
|
19934
19752
|
}) {
|
|
19935
|
-
const [open, setOpen] =
|
|
19936
|
-
const [search, setSearch] =
|
|
19937
|
-
const [editingId, setEditingId] =
|
|
19938
|
-
const [editingName, setEditingName] =
|
|
19939
|
-
const editInputRef =
|
|
19940
|
-
const inputRef =
|
|
19941
|
-
const containerRef =
|
|
19753
|
+
const [open, setOpen] = React55.useState(false);
|
|
19754
|
+
const [search, setSearch] = React55.useState("");
|
|
19755
|
+
const [editingId, setEditingId] = React55.useState(null);
|
|
19756
|
+
const [editingName, setEditingName] = React55.useState("");
|
|
19757
|
+
const editInputRef = React55.useRef(null);
|
|
19758
|
+
const inputRef = React55.useRef(null);
|
|
19759
|
+
const containerRef = React55.useRef(null);
|
|
19942
19760
|
const selectedTags = tags.filter((t) => selectedIds.includes(t.id));
|
|
19943
19761
|
const filtered = tags.filter(
|
|
19944
19762
|
(t) => t.name.toLowerCase().includes(search.toLowerCase())
|
|
19945
19763
|
);
|
|
19946
19764
|
const showCreateOption = onCreateTag && search.trim() && !tags.some((t) => t.name.toLowerCase() === search.trim().toLowerCase());
|
|
19947
|
-
const toggleTag =
|
|
19765
|
+
const toggleTag = React55.useCallback(
|
|
19948
19766
|
(id) => {
|
|
19949
19767
|
if (selectedIds.includes(id)) {
|
|
19950
19768
|
onChange(selectedIds.filter((i) => i !== id));
|
|
@@ -19954,7 +19772,7 @@ function TagsManager({
|
|
|
19954
19772
|
},
|
|
19955
19773
|
[selectedIds, onChange]
|
|
19956
19774
|
);
|
|
19957
|
-
const handleCreate =
|
|
19775
|
+
const handleCreate = React55.useCallback(async () => {
|
|
19958
19776
|
if (!onCreateTag) return;
|
|
19959
19777
|
const name = search.trim();
|
|
19960
19778
|
if (!name) return;
|
|
@@ -19964,22 +19782,22 @@ function TagsManager({
|
|
|
19964
19782
|
setSearch("");
|
|
19965
19783
|
}
|
|
19966
19784
|
}, [search, onCreateTag, selectedIds, onChange]);
|
|
19967
|
-
const startEdit =
|
|
19785
|
+
const startEdit = React55.useCallback((id, name) => {
|
|
19968
19786
|
setEditingId(id);
|
|
19969
19787
|
setEditingName(name);
|
|
19970
19788
|
setTimeout(() => editInputRef.current?.focus(), 0);
|
|
19971
19789
|
}, []);
|
|
19972
|
-
const confirmEdit =
|
|
19790
|
+
const confirmEdit = React55.useCallback(async () => {
|
|
19973
19791
|
if (!onUpdateTag || !editingId || !editingName.trim()) return;
|
|
19974
19792
|
await onUpdateTag(editingId, editingName.trim());
|
|
19975
19793
|
setEditingId(null);
|
|
19976
19794
|
setEditingName("");
|
|
19977
19795
|
}, [editingId, editingName, onUpdateTag]);
|
|
19978
|
-
const cancelEdit =
|
|
19796
|
+
const cancelEdit = React55.useCallback(() => {
|
|
19979
19797
|
setEditingId(null);
|
|
19980
19798
|
setEditingName("");
|
|
19981
19799
|
}, []);
|
|
19982
|
-
const handleDelete =
|
|
19800
|
+
const handleDelete = React55.useCallback(
|
|
19983
19801
|
async (id) => {
|
|
19984
19802
|
if (!onDeleteTag) return;
|
|
19985
19803
|
await onDeleteTag(id);
|
|
@@ -19989,7 +19807,7 @@ function TagsManager({
|
|
|
19989
19807
|
},
|
|
19990
19808
|
[onDeleteTag, selectedIds, onChange]
|
|
19991
19809
|
);
|
|
19992
|
-
const handleClearAll =
|
|
19810
|
+
const handleClearAll = React55.useCallback(
|
|
19993
19811
|
(e) => {
|
|
19994
19812
|
e.stopPropagation();
|
|
19995
19813
|
onChange([]);
|
|
@@ -20284,13 +20102,13 @@ function TagsManager({
|
|
|
20284
20102
|
// src/components/ui/alert-dialog.tsx
|
|
20285
20103
|
init_cn();
|
|
20286
20104
|
init_button2();
|
|
20287
|
-
import * as
|
|
20105
|
+
import * as React56 from "react";
|
|
20288
20106
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
20289
20107
|
import { jsx as jsx161, jsxs as jsxs129 } from "react/jsx-runtime";
|
|
20290
20108
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
20291
20109
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
20292
20110
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
20293
|
-
var AlertDialogOverlay =
|
|
20111
|
+
var AlertDialogOverlay = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
|
|
20294
20112
|
AlertDialogPrimitive.Overlay,
|
|
20295
20113
|
{
|
|
20296
20114
|
className: cn(
|
|
@@ -20302,7 +20120,7 @@ var AlertDialogOverlay = React57.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20302
20120
|
}
|
|
20303
20121
|
));
|
|
20304
20122
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
20305
|
-
var AlertDialogContent =
|
|
20123
|
+
var AlertDialogContent = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs129(AlertDialogPortal, { children: [
|
|
20306
20124
|
/* @__PURE__ */ jsx161(AlertDialogOverlay, {}),
|
|
20307
20125
|
/* @__PURE__ */ jsx161(
|
|
20308
20126
|
AlertDialogPrimitive.Content,
|
|
@@ -20345,7 +20163,7 @@ var AlertDialogFooter = ({
|
|
|
20345
20163
|
}
|
|
20346
20164
|
);
|
|
20347
20165
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
20348
|
-
var AlertDialogTitle =
|
|
20166
|
+
var AlertDialogTitle = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
|
|
20349
20167
|
AlertDialogPrimitive.Title,
|
|
20350
20168
|
{
|
|
20351
20169
|
ref,
|
|
@@ -20354,7 +20172,7 @@ var AlertDialogTitle = React57.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
20354
20172
|
}
|
|
20355
20173
|
));
|
|
20356
20174
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
20357
|
-
var AlertDialogDescription =
|
|
20175
|
+
var AlertDialogDescription = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
|
|
20358
20176
|
AlertDialogPrimitive.Description,
|
|
20359
20177
|
{
|
|
20360
20178
|
ref,
|
|
@@ -20363,7 +20181,7 @@ var AlertDialogDescription = React57.forwardRef(({ className, ...props }, ref) =
|
|
|
20363
20181
|
}
|
|
20364
20182
|
));
|
|
20365
20183
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
20366
|
-
var AlertDialogAction =
|
|
20184
|
+
var AlertDialogAction = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
|
|
20367
20185
|
AlertDialogPrimitive.Action,
|
|
20368
20186
|
{
|
|
20369
20187
|
ref,
|
|
@@ -20372,7 +20190,7 @@ var AlertDialogAction = React57.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20372
20190
|
}
|
|
20373
20191
|
));
|
|
20374
20192
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
20375
|
-
var AlertDialogCancel =
|
|
20193
|
+
var AlertDialogCancel = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
|
|
20376
20194
|
AlertDialogPrimitive.Cancel,
|
|
20377
20195
|
{
|
|
20378
20196
|
ref,
|
|
@@ -20392,7 +20210,7 @@ var AspectRatio = AspectRatioPrimitive.Root;
|
|
|
20392
20210
|
|
|
20393
20211
|
// src/components/ui/dialog.tsx
|
|
20394
20212
|
init_cn();
|
|
20395
|
-
import * as
|
|
20213
|
+
import * as React57 from "react";
|
|
20396
20214
|
import * as DialogPrimitive3 from "@radix-ui/react-dialog";
|
|
20397
20215
|
import { X as X8 } from "lucide-react";
|
|
20398
20216
|
import { jsx as jsx162, jsxs as jsxs130 } from "react/jsx-runtime";
|
|
@@ -20400,7 +20218,7 @@ var Dialog = DialogPrimitive3.Root;
|
|
|
20400
20218
|
var DialogTrigger = DialogPrimitive3.Trigger;
|
|
20401
20219
|
var DialogPortal = DialogPrimitive3.Portal;
|
|
20402
20220
|
var DialogClose = DialogPrimitive3.Close;
|
|
20403
|
-
var DialogOverlay =
|
|
20221
|
+
var DialogOverlay = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(
|
|
20404
20222
|
DialogPrimitive3.Overlay,
|
|
20405
20223
|
{
|
|
20406
20224
|
ref,
|
|
@@ -20412,7 +20230,7 @@ var DialogOverlay = React58.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
20412
20230
|
}
|
|
20413
20231
|
));
|
|
20414
20232
|
DialogOverlay.displayName = DialogPrimitive3.Overlay.displayName;
|
|
20415
|
-
var DialogContent =
|
|
20233
|
+
var DialogContent = React57.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs130(DialogPortal, { children: [
|
|
20416
20234
|
/* @__PURE__ */ jsx162(DialogOverlay, {}),
|
|
20417
20235
|
/* @__PURE__ */ jsxs130(
|
|
20418
20236
|
DialogPrimitive3.Content,
|
|
@@ -20438,7 +20256,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx162("div", {
|
|
|
20438
20256
|
DialogHeader.displayName = "DialogHeader";
|
|
20439
20257
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx162("div", { className: cn("flex flex-col-reverse md:flex-row md:justify-end md:space-x-2", className), ...props });
|
|
20440
20258
|
DialogFooter.displayName = "DialogFooter";
|
|
20441
|
-
var DialogTitle =
|
|
20259
|
+
var DialogTitle = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(
|
|
20442
20260
|
DialogPrimitive3.Title,
|
|
20443
20261
|
{
|
|
20444
20262
|
ref,
|
|
@@ -20447,15 +20265,15 @@ var DialogTitle = React58.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
20447
20265
|
}
|
|
20448
20266
|
));
|
|
20449
20267
|
DialogTitle.displayName = DialogPrimitive3.Title.displayName;
|
|
20450
|
-
var DialogDescription =
|
|
20268
|
+
var DialogDescription = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(DialogPrimitive3.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
20451
20269
|
DialogDescription.displayName = DialogPrimitive3.Description.displayName;
|
|
20452
20270
|
|
|
20453
20271
|
// src/components/ui/modal.tsx
|
|
20454
20272
|
init_cn();
|
|
20455
|
-
import * as
|
|
20273
|
+
import * as React58 from "react";
|
|
20456
20274
|
import { useEffect as useEffect32 } from "react";
|
|
20457
20275
|
import { jsx as jsx163, jsxs as jsxs131 } from "react/jsx-runtime";
|
|
20458
|
-
var Modal =
|
|
20276
|
+
var Modal = React58.forwardRef(
|
|
20459
20277
|
({ isOpen, onClose, children, className }, ref) => {
|
|
20460
20278
|
useEffect32(() => {
|
|
20461
20279
|
const handleKeyDown = (event) => {
|
|
@@ -20499,11 +20317,11 @@ var Modal = React59.forwardRef(
|
|
|
20499
20317
|
}
|
|
20500
20318
|
);
|
|
20501
20319
|
Modal.displayName = "Modal";
|
|
20502
|
-
var ModalContent =
|
|
20320
|
+
var ModalContent = React58.forwardRef(
|
|
20503
20321
|
({ children, className }, ref) => /* @__PURE__ */ jsx163("div", { ref, className: cn("overflow-y-auto min-h-0 flex-1", className), children })
|
|
20504
20322
|
);
|
|
20505
20323
|
ModalContent.displayName = "ModalContent";
|
|
20506
|
-
var ModalHeader =
|
|
20324
|
+
var ModalHeader = React58.forwardRef(
|
|
20507
20325
|
({ children, className }, ref) => /* @__PURE__ */ jsx163(
|
|
20508
20326
|
"div",
|
|
20509
20327
|
{
|
|
@@ -20514,7 +20332,7 @@ var ModalHeader = React59.forwardRef(
|
|
|
20514
20332
|
)
|
|
20515
20333
|
);
|
|
20516
20334
|
ModalHeader.displayName = "ModalHeader";
|
|
20517
|
-
var ModalTitle =
|
|
20335
|
+
var ModalTitle = React58.forwardRef(
|
|
20518
20336
|
({ children, className }, ref) => /* @__PURE__ */ jsx163(
|
|
20519
20337
|
"h2",
|
|
20520
20338
|
{
|
|
@@ -20525,7 +20343,7 @@ var ModalTitle = React59.forwardRef(
|
|
|
20525
20343
|
)
|
|
20526
20344
|
);
|
|
20527
20345
|
ModalTitle.displayName = "ModalTitle";
|
|
20528
|
-
var ModalFooter =
|
|
20346
|
+
var ModalFooter = React58.forwardRef(
|
|
20529
20347
|
({ children, className }, ref) => /* @__PURE__ */ jsx163(
|
|
20530
20348
|
"div",
|
|
20531
20349
|
{
|
|
@@ -20538,12 +20356,12 @@ var ModalFooter = React59.forwardRef(
|
|
|
20538
20356
|
ModalFooter.displayName = "ModalFooter";
|
|
20539
20357
|
|
|
20540
20358
|
// src/components/ui/modal-v2.tsx
|
|
20541
|
-
import * as
|
|
20359
|
+
import * as React59 from "react";
|
|
20542
20360
|
import { useEffect as useEffect33 } from "react";
|
|
20543
20361
|
init_cn();
|
|
20544
20362
|
import { jsx as jsx164, jsxs as jsxs132 } from "react/jsx-runtime";
|
|
20545
|
-
var ModalContext =
|
|
20546
|
-
var Modal2 =
|
|
20363
|
+
var ModalContext = React59.createContext({});
|
|
20364
|
+
var Modal2 = React59.forwardRef(
|
|
20547
20365
|
({ isOpen, onClose, children, className }, ref) => {
|
|
20548
20366
|
useEffect33(() => {
|
|
20549
20367
|
const handleKeyDown = (event) => {
|
|
@@ -20592,13 +20410,13 @@ var Modal2 = React60.forwardRef(
|
|
|
20592
20410
|
}
|
|
20593
20411
|
);
|
|
20594
20412
|
Modal2.displayName = "ModalV2";
|
|
20595
|
-
var ModalContent2 =
|
|
20413
|
+
var ModalContent2 = React59.forwardRef(
|
|
20596
20414
|
({ children, className }, ref) => /* @__PURE__ */ jsx164("div", { ref, className: cn("flex-1 min-h-0 overflow-y-auto", className), children })
|
|
20597
20415
|
);
|
|
20598
20416
|
ModalContent2.displayName = "ModalV2Content";
|
|
20599
|
-
var ModalHeader2 =
|
|
20417
|
+
var ModalHeader2 = React59.forwardRef(
|
|
20600
20418
|
({ children, className }, ref) => {
|
|
20601
|
-
const { onClose } =
|
|
20419
|
+
const { onClose } = React59.useContext(ModalContext);
|
|
20602
20420
|
return /* @__PURE__ */ jsxs132(
|
|
20603
20421
|
"div",
|
|
20604
20422
|
{
|
|
@@ -20621,7 +20439,7 @@ var ModalHeader2 = React60.forwardRef(
|
|
|
20621
20439
|
}
|
|
20622
20440
|
);
|
|
20623
20441
|
ModalHeader2.displayName = "ModalV2Header";
|
|
20624
|
-
var ModalTitle2 =
|
|
20442
|
+
var ModalTitle2 = React59.forwardRef(
|
|
20625
20443
|
({ children, className }, ref) => /* @__PURE__ */ jsx164(
|
|
20626
20444
|
"h2",
|
|
20627
20445
|
{
|
|
@@ -20632,7 +20450,7 @@ var ModalTitle2 = React60.forwardRef(
|
|
|
20632
20450
|
)
|
|
20633
20451
|
);
|
|
20634
20452
|
ModalTitle2.displayName = "ModalV2Title";
|
|
20635
|
-
var ModalFooter2 =
|
|
20453
|
+
var ModalFooter2 = React59.forwardRef(
|
|
20636
20454
|
({ children, className }, ref) => /* @__PURE__ */ jsx164(
|
|
20637
20455
|
"div",
|
|
20638
20456
|
{
|
|
@@ -20646,10 +20464,10 @@ ModalFooter2.displayName = "ModalV2Footer";
|
|
|
20646
20464
|
|
|
20647
20465
|
// src/components/ui/separator.tsx
|
|
20648
20466
|
init_cn();
|
|
20649
|
-
import * as
|
|
20467
|
+
import * as React60 from "react";
|
|
20650
20468
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
20651
20469
|
import { jsx as jsx165 } from "react/jsx-runtime";
|
|
20652
|
-
var Separator2 =
|
|
20470
|
+
var Separator2 = React60.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx165(
|
|
20653
20471
|
SeparatorPrimitive.Root,
|
|
20654
20472
|
{
|
|
20655
20473
|
ref,
|
|
@@ -20663,7 +20481,7 @@ Separator2.displayName = SeparatorPrimitive.Root.displayName;
|
|
|
20663
20481
|
|
|
20664
20482
|
// src/components/ui/sheet.tsx
|
|
20665
20483
|
init_cn();
|
|
20666
|
-
import * as
|
|
20484
|
+
import * as React61 from "react";
|
|
20667
20485
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
20668
20486
|
import { cva as cva6 } from "class-variance-authority";
|
|
20669
20487
|
import { X as X9 } from "lucide-react";
|
|
@@ -20672,7 +20490,7 @@ var Sheet = SheetPrimitive.Root;
|
|
|
20672
20490
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
20673
20491
|
var SheetClose = SheetPrimitive.Close;
|
|
20674
20492
|
var SheetPortal = SheetPrimitive.Portal;
|
|
20675
|
-
var SheetOverlay =
|
|
20493
|
+
var SheetOverlay = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
|
|
20676
20494
|
SheetPrimitive.Overlay,
|
|
20677
20495
|
{
|
|
20678
20496
|
className: cn(
|
|
@@ -20700,7 +20518,7 @@ var sheetVariants = cva6(
|
|
|
20700
20518
|
}
|
|
20701
20519
|
}
|
|
20702
20520
|
);
|
|
20703
|
-
var SheetContent =
|
|
20521
|
+
var SheetContent = React61.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs133(SheetPortal, { children: [
|
|
20704
20522
|
/* @__PURE__ */ jsx166(SheetOverlay, {}),
|
|
20705
20523
|
/* @__PURE__ */ jsxs133(
|
|
20706
20524
|
SheetPrimitive.Content,
|
|
@@ -20747,7 +20565,7 @@ var SheetFooter = ({
|
|
|
20747
20565
|
}
|
|
20748
20566
|
);
|
|
20749
20567
|
SheetFooter.displayName = "SheetFooter";
|
|
20750
|
-
var SheetTitle =
|
|
20568
|
+
var SheetTitle = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
|
|
20751
20569
|
SheetPrimitive.Title,
|
|
20752
20570
|
{
|
|
20753
20571
|
ref,
|
|
@@ -20756,7 +20574,7 @@ var SheetTitle = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20756
20574
|
}
|
|
20757
20575
|
));
|
|
20758
20576
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
20759
|
-
var SheetDescription =
|
|
20577
|
+
var SheetDescription = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
|
|
20760
20578
|
SheetPrimitive.Description,
|
|
20761
20579
|
{
|
|
20762
20580
|
ref,
|
|
@@ -20768,14 +20586,14 @@ SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
|
20768
20586
|
|
|
20769
20587
|
// src/components/ui/accordion.tsx
|
|
20770
20588
|
init_cn();
|
|
20771
|
-
import * as
|
|
20589
|
+
import * as React62 from "react";
|
|
20772
20590
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
20773
20591
|
import { ChevronDown as ChevronDown5 } from "lucide-react";
|
|
20774
20592
|
import { jsx as jsx167, jsxs as jsxs134 } from "react/jsx-runtime";
|
|
20775
20593
|
var Accordion = AccordionPrimitive.Root;
|
|
20776
|
-
var AccordionItem =
|
|
20594
|
+
var AccordionItem = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx167(AccordionPrimitive.Item, { ref, className: cn("border-b", className), ...props }));
|
|
20777
20595
|
AccordionItem.displayName = "AccordionItem";
|
|
20778
|
-
var AccordionTrigger =
|
|
20596
|
+
var AccordionTrigger = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx167(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs134(
|
|
20779
20597
|
AccordionPrimitive.Trigger,
|
|
20780
20598
|
{
|
|
20781
20599
|
ref,
|
|
@@ -20791,7 +20609,7 @@ var AccordionTrigger = React63.forwardRef(({ className, children, ...props }, re
|
|
|
20791
20609
|
}
|
|
20792
20610
|
) }));
|
|
20793
20611
|
AccordionTrigger.displayName = "AccordionTrigger";
|
|
20794
|
-
var AccordionContent =
|
|
20612
|
+
var AccordionContent = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx167(
|
|
20795
20613
|
AccordionPrimitive.Content,
|
|
20796
20614
|
{
|
|
20797
20615
|
ref,
|
|
@@ -20807,13 +20625,13 @@ AccordionContent.displayName = "AccordionContent";
|
|
|
20807
20625
|
|
|
20808
20626
|
// src/components/ui/breadcrumb.tsx
|
|
20809
20627
|
init_cn();
|
|
20810
|
-
import * as
|
|
20628
|
+
import * as React63 from "react";
|
|
20811
20629
|
import { Slot } from "@radix-ui/react-slot";
|
|
20812
|
-
import { ChevronRight as
|
|
20630
|
+
import { ChevronRight as ChevronRight7, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
|
|
20813
20631
|
import { jsx as jsx168, jsxs as jsxs135 } from "react/jsx-runtime";
|
|
20814
|
-
var Breadcrumb =
|
|
20632
|
+
var Breadcrumb = React63.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx168("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
20815
20633
|
Breadcrumb.displayName = "Breadcrumb";
|
|
20816
|
-
var BreadcrumbList =
|
|
20634
|
+
var BreadcrumbList = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
|
|
20817
20635
|
"ol",
|
|
20818
20636
|
{
|
|
20819
20637
|
ref,
|
|
@@ -20825,7 +20643,7 @@ var BreadcrumbList = React64.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20825
20643
|
}
|
|
20826
20644
|
));
|
|
20827
20645
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
20828
|
-
var BreadcrumbItem =
|
|
20646
|
+
var BreadcrumbItem = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
|
|
20829
20647
|
"li",
|
|
20830
20648
|
{
|
|
20831
20649
|
ref,
|
|
@@ -20834,7 +20652,7 @@ var BreadcrumbItem = React64.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20834
20652
|
}
|
|
20835
20653
|
));
|
|
20836
20654
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
20837
|
-
var BreadcrumbLink =
|
|
20655
|
+
var BreadcrumbLink = React63.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
20838
20656
|
const Comp = asChild ? Slot : "a";
|
|
20839
20657
|
return /* @__PURE__ */ jsx168(
|
|
20840
20658
|
Comp,
|
|
@@ -20846,7 +20664,7 @@ var BreadcrumbLink = React64.forwardRef(({ asChild, className, ...props }, ref)
|
|
|
20846
20664
|
);
|
|
20847
20665
|
});
|
|
20848
20666
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
20849
|
-
var BreadcrumbPage =
|
|
20667
|
+
var BreadcrumbPage = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
|
|
20850
20668
|
"span",
|
|
20851
20669
|
{
|
|
20852
20670
|
ref,
|
|
@@ -20869,7 +20687,7 @@ var BreadcrumbSeparator = ({
|
|
|
20869
20687
|
"aria-hidden": "true",
|
|
20870
20688
|
className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className),
|
|
20871
20689
|
...props,
|
|
20872
|
-
children: children ?? /* @__PURE__ */ jsx168(
|
|
20690
|
+
children: children ?? /* @__PURE__ */ jsx168(ChevronRight7, {})
|
|
20873
20691
|
}
|
|
20874
20692
|
);
|
|
20875
20693
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
@@ -20893,16 +20711,16 @@ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
|
20893
20711
|
|
|
20894
20712
|
// src/components/ui/menubar.tsx
|
|
20895
20713
|
init_cn();
|
|
20896
|
-
import * as
|
|
20714
|
+
import * as React64 from "react";
|
|
20897
20715
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
20898
|
-
import { Check as Check3, ChevronRight as
|
|
20716
|
+
import { Check as Check3, ChevronRight as ChevronRight8, Circle } from "lucide-react";
|
|
20899
20717
|
import { jsx as jsx169, jsxs as jsxs136 } from "react/jsx-runtime";
|
|
20900
20718
|
var MenubarMenu = MenubarPrimitive.Menu;
|
|
20901
20719
|
var MenubarGroup = MenubarPrimitive.Group;
|
|
20902
20720
|
var MenubarPortal = MenubarPrimitive.Portal;
|
|
20903
20721
|
var MenubarSub = MenubarPrimitive.Sub;
|
|
20904
20722
|
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
20905
|
-
var Menubar =
|
|
20723
|
+
var Menubar = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
20906
20724
|
MenubarPrimitive.Root,
|
|
20907
20725
|
{
|
|
20908
20726
|
ref,
|
|
@@ -20914,7 +20732,7 @@ var Menubar = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
20914
20732
|
}
|
|
20915
20733
|
));
|
|
20916
20734
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
20917
|
-
var MenubarTrigger =
|
|
20735
|
+
var MenubarTrigger = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
20918
20736
|
MenubarPrimitive.Trigger,
|
|
20919
20737
|
{
|
|
20920
20738
|
ref,
|
|
@@ -20926,7 +20744,7 @@ var MenubarTrigger = React65.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20926
20744
|
}
|
|
20927
20745
|
));
|
|
20928
20746
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
20929
|
-
var MenubarSubTrigger =
|
|
20747
|
+
var MenubarSubTrigger = React64.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs136(
|
|
20930
20748
|
MenubarPrimitive.SubTrigger,
|
|
20931
20749
|
{
|
|
20932
20750
|
ref,
|
|
@@ -20938,12 +20756,12 @@ var MenubarSubTrigger = React65.forwardRef(({ className, inset, children, ...pro
|
|
|
20938
20756
|
...props,
|
|
20939
20757
|
children: [
|
|
20940
20758
|
children,
|
|
20941
|
-
/* @__PURE__ */ jsx169(
|
|
20759
|
+
/* @__PURE__ */ jsx169(ChevronRight8, { className: "ml-auto h-4 w-4" })
|
|
20942
20760
|
]
|
|
20943
20761
|
}
|
|
20944
20762
|
));
|
|
20945
20763
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
20946
|
-
var MenubarSubContent =
|
|
20764
|
+
var MenubarSubContent = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
20947
20765
|
MenubarPrimitive.SubContent,
|
|
20948
20766
|
{
|
|
20949
20767
|
ref,
|
|
@@ -20955,7 +20773,7 @@ var MenubarSubContent = React65.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20955
20773
|
}
|
|
20956
20774
|
));
|
|
20957
20775
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
20958
|
-
var MenubarContent =
|
|
20776
|
+
var MenubarContent = React64.forwardRef(
|
|
20959
20777
|
({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx169(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx169(
|
|
20960
20778
|
MenubarPrimitive.Content,
|
|
20961
20779
|
{
|
|
@@ -20972,7 +20790,7 @@ var MenubarContent = React65.forwardRef(
|
|
|
20972
20790
|
) })
|
|
20973
20791
|
);
|
|
20974
20792
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
20975
|
-
var MenubarItem =
|
|
20793
|
+
var MenubarItem = React64.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
20976
20794
|
MenubarPrimitive.Item,
|
|
20977
20795
|
{
|
|
20978
20796
|
ref,
|
|
@@ -20985,7 +20803,7 @@ var MenubarItem = React65.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
20985
20803
|
}
|
|
20986
20804
|
));
|
|
20987
20805
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
20988
|
-
var MenubarCheckboxItem =
|
|
20806
|
+
var MenubarCheckboxItem = React64.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs136(
|
|
20989
20807
|
MenubarPrimitive.CheckboxItem,
|
|
20990
20808
|
{
|
|
20991
20809
|
ref,
|
|
@@ -21002,7 +20820,7 @@ var MenubarCheckboxItem = React65.forwardRef(({ className, children, checked, ..
|
|
|
21002
20820
|
}
|
|
21003
20821
|
));
|
|
21004
20822
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
21005
|
-
var MenubarRadioItem =
|
|
20823
|
+
var MenubarRadioItem = React64.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs136(
|
|
21006
20824
|
MenubarPrimitive.RadioItem,
|
|
21007
20825
|
{
|
|
21008
20826
|
ref,
|
|
@@ -21018,7 +20836,7 @@ var MenubarRadioItem = React65.forwardRef(({ className, children, ...props }, re
|
|
|
21018
20836
|
}
|
|
21019
20837
|
));
|
|
21020
20838
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
21021
|
-
var MenubarLabel =
|
|
20839
|
+
var MenubarLabel = React64.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
21022
20840
|
MenubarPrimitive.Label,
|
|
21023
20841
|
{
|
|
21024
20842
|
ref,
|
|
@@ -21031,7 +20849,7 @@ var MenubarLabel = React65.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
21031
20849
|
}
|
|
21032
20850
|
));
|
|
21033
20851
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
21034
|
-
var MenubarSeparator =
|
|
20852
|
+
var MenubarSeparator = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
|
|
21035
20853
|
MenubarPrimitive.Separator,
|
|
21036
20854
|
{
|
|
21037
20855
|
ref,
|
|
@@ -21059,12 +20877,12 @@ MenubarShortcut.displayname = "MenubarShortcut";
|
|
|
21059
20877
|
|
|
21060
20878
|
// src/components/ui/navigation-menu.tsx
|
|
21061
20879
|
init_cn();
|
|
21062
|
-
import * as
|
|
20880
|
+
import * as React65 from "react";
|
|
21063
20881
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
21064
20882
|
import { cva as cva7 } from "class-variance-authority";
|
|
21065
20883
|
import { ChevronDown as ChevronDown6 } from "lucide-react";
|
|
21066
20884
|
import { jsx as jsx170, jsxs as jsxs137 } from "react/jsx-runtime";
|
|
21067
|
-
var NavigationMenu =
|
|
20885
|
+
var NavigationMenu = React65.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs137(
|
|
21068
20886
|
NavigationMenuPrimitive.Root,
|
|
21069
20887
|
{
|
|
21070
20888
|
ref,
|
|
@@ -21080,7 +20898,7 @@ var NavigationMenu = React66.forwardRef(({ className, children, ...props }, ref)
|
|
|
21080
20898
|
}
|
|
21081
20899
|
));
|
|
21082
20900
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
21083
|
-
var NavigationMenuList =
|
|
20901
|
+
var NavigationMenuList = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
|
|
21084
20902
|
NavigationMenuPrimitive.List,
|
|
21085
20903
|
{
|
|
21086
20904
|
ref,
|
|
@@ -21096,7 +20914,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
21096
20914
|
var navigationMenuTriggerStyle = cva7(
|
|
21097
20915
|
"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
21098
20916
|
);
|
|
21099
|
-
var NavigationMenuTrigger =
|
|
20917
|
+
var NavigationMenuTrigger = React65.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs137(
|
|
21100
20918
|
NavigationMenuPrimitive.Trigger,
|
|
21101
20919
|
{
|
|
21102
20920
|
ref,
|
|
@@ -21116,7 +20934,7 @@ var NavigationMenuTrigger = React66.forwardRef(({ className, children, ...props
|
|
|
21116
20934
|
}
|
|
21117
20935
|
));
|
|
21118
20936
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
21119
|
-
var NavigationMenuContent =
|
|
20937
|
+
var NavigationMenuContent = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
|
|
21120
20938
|
NavigationMenuPrimitive.Content,
|
|
21121
20939
|
{
|
|
21122
20940
|
ref,
|
|
@@ -21129,7 +20947,7 @@ var NavigationMenuContent = React66.forwardRef(({ className, ...props }, ref) =>
|
|
|
21129
20947
|
));
|
|
21130
20948
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
21131
20949
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
21132
|
-
var NavigationMenuViewport =
|
|
20950
|
+
var NavigationMenuViewport = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx170(
|
|
21133
20951
|
NavigationMenuPrimitive.Viewport,
|
|
21134
20952
|
{
|
|
21135
20953
|
className: cn(
|
|
@@ -21141,7 +20959,7 @@ var NavigationMenuViewport = React66.forwardRef(({ className, ...props }, ref) =
|
|
|
21141
20959
|
}
|
|
21142
20960
|
) }));
|
|
21143
20961
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
21144
|
-
var NavigationMenuIndicator =
|
|
20962
|
+
var NavigationMenuIndicator = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
|
|
21145
20963
|
NavigationMenuPrimitive.Indicator,
|
|
21146
20964
|
{
|
|
21147
20965
|
ref,
|
|
@@ -21319,7 +21137,7 @@ var getTabComponent = (tabs, tabId) => {
|
|
|
21319
21137
|
|
|
21320
21138
|
// src/components/ui/alert.tsx
|
|
21321
21139
|
init_cn();
|
|
21322
|
-
import * as
|
|
21140
|
+
import * as React67 from "react";
|
|
21323
21141
|
import { cva as cva8 } from "class-variance-authority";
|
|
21324
21142
|
import { jsx as jsx173 } from "react/jsx-runtime";
|
|
21325
21143
|
var alertVariants = cva8(
|
|
@@ -21336,7 +21154,7 @@ var alertVariants = cva8(
|
|
|
21336
21154
|
}
|
|
21337
21155
|
}
|
|
21338
21156
|
);
|
|
21339
|
-
var Alert =
|
|
21157
|
+
var Alert = React67.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx173(
|
|
21340
21158
|
"div",
|
|
21341
21159
|
{
|
|
21342
21160
|
ref,
|
|
@@ -21346,7 +21164,7 @@ var Alert = React68.forwardRef(({ className, variant, ...props }, ref) => /* @__
|
|
|
21346
21164
|
}
|
|
21347
21165
|
));
|
|
21348
21166
|
Alert.displayName = "Alert";
|
|
21349
|
-
var AlertTitle =
|
|
21167
|
+
var AlertTitle = React67.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx173(
|
|
21350
21168
|
"h5",
|
|
21351
21169
|
{
|
|
21352
21170
|
ref,
|
|
@@ -21355,7 +21173,7 @@ var AlertTitle = React68.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
21355
21173
|
}
|
|
21356
21174
|
));
|
|
21357
21175
|
AlertTitle.displayName = "AlertTitle";
|
|
21358
|
-
var AlertDescription =
|
|
21176
|
+
var AlertDescription = React67.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx173(
|
|
21359
21177
|
"div",
|
|
21360
21178
|
{
|
|
21361
21179
|
ref,
|
|
@@ -21367,10 +21185,10 @@ AlertDescription.displayName = "AlertDescription";
|
|
|
21367
21185
|
|
|
21368
21186
|
// src/components/ui/progress.tsx
|
|
21369
21187
|
init_cn();
|
|
21370
|
-
import * as
|
|
21188
|
+
import * as React68 from "react";
|
|
21371
21189
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
21372
21190
|
import { jsx as jsx174 } from "react/jsx-runtime";
|
|
21373
|
-
var Progress =
|
|
21191
|
+
var Progress = React68.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ jsx174(
|
|
21374
21192
|
ProgressPrimitive.Root,
|
|
21375
21193
|
{
|
|
21376
21194
|
ref,
|
|
@@ -21854,7 +21672,7 @@ init_cn();
|
|
|
21854
21672
|
|
|
21855
21673
|
// src/components/ui/entity-image.tsx
|
|
21856
21674
|
init_cn();
|
|
21857
|
-
import
|
|
21675
|
+
import React70 from "react";
|
|
21858
21676
|
import { jsx as jsx181 } from "react/jsx-runtime";
|
|
21859
21677
|
function getInitials3(name) {
|
|
21860
21678
|
if (!name) return "";
|
|
@@ -21863,8 +21681,8 @@ function getInitials3(name) {
|
|
|
21863
21681
|
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
21864
21682
|
}
|
|
21865
21683
|
function EntityImage({ src, alt, fallbackText, className }) {
|
|
21866
|
-
const [imageFailed, setImageFailed] =
|
|
21867
|
-
|
|
21684
|
+
const [imageFailed, setImageFailed] = React70.useState(false);
|
|
21685
|
+
React70.useEffect(() => {
|
|
21868
21686
|
setImageFailed(false);
|
|
21869
21687
|
}, [src]);
|
|
21870
21688
|
const showFallback = imageFailed || !src;
|
|
@@ -22007,12 +21825,12 @@ function PageLayout({
|
|
|
22007
21825
|
|
|
22008
21826
|
// src/components/toggle-group.tsx
|
|
22009
21827
|
init_cn();
|
|
22010
|
-
import * as
|
|
21828
|
+
import * as React72 from "react";
|
|
22011
21829
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
22012
21830
|
|
|
22013
21831
|
// src/components/ui/toggle.tsx
|
|
22014
21832
|
init_cn();
|
|
22015
|
-
import * as
|
|
21833
|
+
import * as React71 from "react";
|
|
22016
21834
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
22017
21835
|
import { cva as cva9 } from "class-variance-authority";
|
|
22018
21836
|
import { jsx as jsx184 } from "react/jsx-runtime";
|
|
@@ -22036,7 +21854,7 @@ var toggleVariants = cva9(
|
|
|
22036
21854
|
}
|
|
22037
21855
|
}
|
|
22038
21856
|
);
|
|
22039
|
-
var Toggle =
|
|
21857
|
+
var Toggle = React71.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx184(
|
|
22040
21858
|
TogglePrimitive.Root,
|
|
22041
21859
|
{
|
|
22042
21860
|
ref,
|
|
@@ -22048,11 +21866,11 @@ Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
|
22048
21866
|
|
|
22049
21867
|
// src/components/toggle-group.tsx
|
|
22050
21868
|
import { jsx as jsx185 } from "react/jsx-runtime";
|
|
22051
|
-
var ToggleGroupContext =
|
|
21869
|
+
var ToggleGroupContext = React72.createContext({
|
|
22052
21870
|
size: "default",
|
|
22053
21871
|
variant: "default"
|
|
22054
21872
|
});
|
|
22055
|
-
var ToggleGroup =
|
|
21873
|
+
var ToggleGroup = React72.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx185(
|
|
22056
21874
|
ToggleGroupPrimitive.Root,
|
|
22057
21875
|
{
|
|
22058
21876
|
ref,
|
|
@@ -22062,8 +21880,8 @@ var ToggleGroup = React73.forwardRef(({ className, variant, size, children, ...p
|
|
|
22062
21880
|
}
|
|
22063
21881
|
));
|
|
22064
21882
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
22065
|
-
var ToggleGroupItem =
|
|
22066
|
-
const context =
|
|
21883
|
+
var ToggleGroupItem = React72.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
|
|
21884
|
+
const context = React72.useContext(ToggleGroupContext);
|
|
22067
21885
|
return /* @__PURE__ */ jsx185(
|
|
22068
21886
|
ToggleGroupPrimitive.Item,
|
|
22069
21887
|
{
|
|
@@ -22084,7 +21902,7 @@ var ToggleGroupItem = React73.forwardRef(({ className, children, variant, size,
|
|
|
22084
21902
|
ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
22085
21903
|
|
|
22086
21904
|
// src/components/ui/benefit-card.tsx
|
|
22087
|
-
import
|
|
21905
|
+
import React73 from "react";
|
|
22088
21906
|
import { jsx as jsx186, jsxs as jsxs148 } from "react/jsx-runtime";
|
|
22089
21907
|
var BenefitCard = ({
|
|
22090
21908
|
icon,
|
|
@@ -22136,7 +21954,7 @@ var BenefitCardGrid = ({
|
|
|
22136
21954
|
className = "",
|
|
22137
21955
|
columns = 2
|
|
22138
21956
|
}) => {
|
|
22139
|
-
const childrenArray =
|
|
21957
|
+
const childrenArray = React73.Children.toArray(children);
|
|
22140
21958
|
const gridClass = columns === 4 ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4" : columns === 3 ? "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3" : "flex flex-col md:flex-row";
|
|
22141
21959
|
return /* @__PURE__ */ jsx186("div", { className: cn(
|
|
22142
21960
|
"bg-ods-card rounded-lg shadow-ods-card border border-ods-border overflow-hidden",
|
|
@@ -22157,7 +21975,7 @@ var BenefitCardGrid = ({
|
|
|
22157
21975
|
} else {
|
|
22158
21976
|
borderClass = isLastItem ? "border-b-0" : "border-b md:border-b-0 md:border-r border-ods-border";
|
|
22159
21977
|
}
|
|
22160
|
-
return
|
|
21978
|
+
return React73.cloneElement(child, {
|
|
22161
21979
|
key: index,
|
|
22162
21980
|
className: borderClass
|
|
22163
21981
|
});
|
|
@@ -22166,7 +21984,7 @@ var BenefitCardGrid = ({
|
|
|
22166
21984
|
|
|
22167
21985
|
// src/components/ui/brand-association-card.tsx
|
|
22168
21986
|
init_button2();
|
|
22169
|
-
import
|
|
21987
|
+
import React74 from "react";
|
|
22170
21988
|
import { ExternalLink as ExternalLink2 } from "lucide-react";
|
|
22171
21989
|
import { jsx as jsx187, jsxs as jsxs149 } from "react/jsx-runtime";
|
|
22172
21990
|
function BrandAssociationCard({
|
|
@@ -22174,7 +21992,7 @@ function BrandAssociationCard({
|
|
|
22174
21992
|
className = ""
|
|
22175
21993
|
}) {
|
|
22176
21994
|
const renderIcon = () => {
|
|
22177
|
-
if (
|
|
21995
|
+
if (React74.isValidElement(item.icon)) {
|
|
22178
21996
|
return item.icon;
|
|
22179
21997
|
}
|
|
22180
21998
|
const IconComponent = item.icon;
|
|
@@ -22373,7 +22191,7 @@ import Link6 from "next/link";
|
|
|
22373
22191
|
|
|
22374
22192
|
// src/components/ui/floating-tooltip.tsx
|
|
22375
22193
|
init_cn();
|
|
22376
|
-
import * as
|
|
22194
|
+
import * as React75 from "react";
|
|
22377
22195
|
import {
|
|
22378
22196
|
useFloating,
|
|
22379
22197
|
autoUpdate,
|
|
@@ -22423,8 +22241,8 @@ function FloatingTooltip({
|
|
|
22423
22241
|
delayDuration = 0,
|
|
22424
22242
|
disabled = false
|
|
22425
22243
|
}) {
|
|
22426
|
-
const [isOpen, setIsOpen] =
|
|
22427
|
-
const arrowRef =
|
|
22244
|
+
const [isOpen, setIsOpen] = React75.useState(false);
|
|
22245
|
+
const arrowRef = React75.useRef(null);
|
|
22428
22246
|
const { refs, floatingStyles, context, placement, middlewareData } = useFloating({
|
|
22429
22247
|
open: isOpen,
|
|
22430
22248
|
onOpenChange: setIsOpen,
|
|
@@ -22454,7 +22272,7 @@ function FloatingTooltip({
|
|
|
22454
22272
|
dismiss,
|
|
22455
22273
|
role
|
|
22456
22274
|
]);
|
|
22457
|
-
const parsedContent =
|
|
22275
|
+
const parsedContent = React75.useMemo(() => {
|
|
22458
22276
|
if (typeof content === "string") {
|
|
22459
22277
|
return parseColoredText(content);
|
|
22460
22278
|
}
|
|
@@ -23071,9 +22889,9 @@ function HighlightCardGrid({
|
|
|
23071
22889
|
|
|
23072
22890
|
// src/components/ui/icons-block.tsx
|
|
23073
22891
|
init_cn();
|
|
23074
|
-
import * as
|
|
22892
|
+
import * as React77 from "react";
|
|
23075
22893
|
import { jsx as jsx200 } from "react/jsx-runtime";
|
|
23076
|
-
var IconsBlock =
|
|
22894
|
+
var IconsBlock = React77.forwardRef(
|
|
23077
22895
|
({ className, icons = [], size = "md", ...props }, ref) => {
|
|
23078
22896
|
const sizeClasses4 = {
|
|
23079
22897
|
sm: "h-4 w-4",
|
|
@@ -23108,7 +22926,7 @@ IconsBlock.displayName = "IconsBlock";
|
|
|
23108
22926
|
|
|
23109
22927
|
// src/components/ui/dropdown-button.tsx
|
|
23110
22928
|
init_cn();
|
|
23111
|
-
import
|
|
22929
|
+
import React78 from "react";
|
|
23112
22930
|
|
|
23113
22931
|
// src/components/ui/more-actions-menu.tsx
|
|
23114
22932
|
init_cn();
|
|
@@ -23212,8 +23030,8 @@ function DropdownButton({
|
|
|
23212
23030
|
align = "end",
|
|
23213
23031
|
side = "bottom"
|
|
23214
23032
|
}) {
|
|
23215
|
-
const [open, setOpen] =
|
|
23216
|
-
const handleOpenChange =
|
|
23033
|
+
const [open, setOpen] = React78.useState(false);
|
|
23034
|
+
const handleOpenChange = React78.useCallback(
|
|
23217
23035
|
(next) => {
|
|
23218
23036
|
if (disabled) return;
|
|
23219
23037
|
setOpen(next);
|
|
@@ -23349,11 +23167,11 @@ import { ExternalLink as ExternalLink3 } from "lucide-react";
|
|
|
23349
23167
|
|
|
23350
23168
|
// src/components/logs-list.tsx
|
|
23351
23169
|
init_cn();
|
|
23352
|
-
import * as
|
|
23170
|
+
import * as React80 from "react";
|
|
23353
23171
|
|
|
23354
23172
|
// src/components/log-severity-dot.tsx
|
|
23355
23173
|
init_cn();
|
|
23356
|
-
import * as
|
|
23174
|
+
import * as React79 from "react";
|
|
23357
23175
|
|
|
23358
23176
|
// src/types/logs.types.ts
|
|
23359
23177
|
var LOG_SEVERITY_COLORS = {
|
|
@@ -23373,7 +23191,7 @@ var LOG_SEVERITY_LABELS = {
|
|
|
23373
23191
|
|
|
23374
23192
|
// src/components/log-severity-dot.tsx
|
|
23375
23193
|
import { jsx as jsx204 } from "react/jsx-runtime";
|
|
23376
|
-
var LogSeverityDot =
|
|
23194
|
+
var LogSeverityDot = React79.forwardRef(({ severity, size = "md", className }, ref) => {
|
|
23377
23195
|
const sizeClasses4 = {
|
|
23378
23196
|
sm: "w-4 h-4",
|
|
23379
23197
|
md: "w-6 h-6",
|
|
@@ -23463,7 +23281,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
23463
23281
|
)
|
|
23464
23282
|
] });
|
|
23465
23283
|
};
|
|
23466
|
-
var LogsList =
|
|
23284
|
+
var LogsList = React80.forwardRef(({
|
|
23467
23285
|
logs,
|
|
23468
23286
|
maxHeight = "400px",
|
|
23469
23287
|
showConnector = true,
|
|
@@ -23472,7 +23290,7 @@ var LogsList = React81.forwardRef(({
|
|
|
23472
23290
|
emptyMessage = "No logs to display",
|
|
23473
23291
|
className
|
|
23474
23292
|
}, ref) => {
|
|
23475
|
-
const containerRef =
|
|
23293
|
+
const containerRef = React80.useRef(null);
|
|
23476
23294
|
const isFullHeight = maxHeight === "100%";
|
|
23477
23295
|
const getContainerStyles = () => {
|
|
23478
23296
|
if (isFullHeight) return void 0;
|
|
@@ -23771,13 +23589,13 @@ function TitleContentBlock({
|
|
|
23771
23589
|
|
|
23772
23590
|
// src/components/ui/tooltip.tsx
|
|
23773
23591
|
init_cn();
|
|
23774
|
-
import * as
|
|
23592
|
+
import * as React82 from "react";
|
|
23775
23593
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
23776
23594
|
import { jsx as jsx209 } from "react/jsx-runtime";
|
|
23777
23595
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
23778
23596
|
var Tooltip = TooltipPrimitive.Root;
|
|
23779
23597
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
23780
|
-
var TooltipContent =
|
|
23598
|
+
var TooltipContent = React82.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx209(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx209(
|
|
23781
23599
|
TooltipPrimitive.Content,
|
|
23782
23600
|
{
|
|
23783
23601
|
ref,
|
|
@@ -23990,7 +23808,7 @@ init_button2();
|
|
|
23990
23808
|
// src/components/ui/cursor-pagination.tsx
|
|
23991
23809
|
init_cn();
|
|
23992
23810
|
init_button2();
|
|
23993
|
-
import { ChevronLeft as ChevronLeft4, ChevronRight as
|
|
23811
|
+
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight9, RotateCcw as RotateCcw2, Home as Home2 } from "lucide-react";
|
|
23994
23812
|
import { jsx as jsx212, jsxs as jsxs169 } from "react/jsx-runtime";
|
|
23995
23813
|
function CursorPagination({
|
|
23996
23814
|
hasNextPage,
|
|
@@ -24088,7 +23906,7 @@ function CursorPagination({
|
|
|
24088
23906
|
className: cn(
|
|
24089
23907
|
compact && "h-8 px-3"
|
|
24090
23908
|
),
|
|
24091
|
-
rightIcon: /* @__PURE__ */ jsx212(
|
|
23909
|
+
rightIcon: /* @__PURE__ */ jsx212(ChevronRight9, { className: "h-4 w-4" }),
|
|
24092
23910
|
"aria-label": "Go to next page",
|
|
24093
23911
|
children: /* @__PURE__ */ jsx212("span", { className: compact ? "hidden md:inline" : "", children: "Next" })
|
|
24094
23912
|
}
|
|
@@ -24140,7 +23958,7 @@ function CursorPaginationSimple({
|
|
|
24140
23958
|
onClick: () => onNext?.(""),
|
|
24141
23959
|
disabled: !hasNextPage || loading,
|
|
24142
23960
|
className: "h-8 w-8",
|
|
24143
|
-
rightIcon: /* @__PURE__ */ jsx212(
|
|
23961
|
+
rightIcon: /* @__PURE__ */ jsx212(ChevronRight9, { className: "h-4 w-4" }),
|
|
24144
23962
|
"aria-label": "Next"
|
|
24145
23963
|
}
|
|
24146
23964
|
)
|
|
@@ -26042,7 +25860,7 @@ function CountryOption({ country }) {
|
|
|
26042
25860
|
init_cn();
|
|
26043
25861
|
import * as PopoverPrimitive3 from "@radix-ui/react-popover";
|
|
26044
25862
|
import * as ScrollAreaPrimitive3 from "@radix-ui/react-scroll-area";
|
|
26045
|
-
import * as
|
|
25863
|
+
import * as React84 from "react";
|
|
26046
25864
|
import { jsx as jsx236, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
26047
25865
|
var containerStyles = cn(
|
|
26048
25866
|
// Layout & spacing — matches lib Input component
|
|
@@ -26095,12 +25913,12 @@ function SearchInput({
|
|
|
26095
25913
|
limitTags = "auto",
|
|
26096
25914
|
getLimitTagsText = (more) => `+${more}`
|
|
26097
25915
|
}) {
|
|
26098
|
-
const [internalValue, setInternalValue] =
|
|
25916
|
+
const [internalValue, setInternalValue] = React84.useState(defaultValue);
|
|
26099
25917
|
const currentValue = onChange ? value ?? "" : internalValue;
|
|
26100
25918
|
const debouncedValue = useDebounce(currentValue, debounceMs);
|
|
26101
|
-
const [isOpen, setIsOpen] =
|
|
26102
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
26103
|
-
const containerRef =
|
|
25919
|
+
const [isOpen, setIsOpen] = React84.useState(false);
|
|
25920
|
+
const [highlightedIndex, setHighlightedIndex] = React84.useState(-1);
|
|
25921
|
+
const containerRef = React84.useRef(null);
|
|
26104
25922
|
const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
|
|
26105
25923
|
const {
|
|
26106
25924
|
visibleCount: rawVisibleCount,
|
|
@@ -26117,10 +25935,10 @@ function SearchInput({
|
|
|
26117
25935
|
placeholder: filterChips.length > 0 ? "" : placeholder
|
|
26118
25936
|
});
|
|
26119
25937
|
const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
|
|
26120
|
-
const hiddenTagsRef =
|
|
26121
|
-
const hiddenTagsPopupRef =
|
|
26122
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
26123
|
-
|
|
25938
|
+
const hiddenTagsRef = React84.useRef(null);
|
|
25939
|
+
const hiddenTagsPopupRef = React84.useRef(null);
|
|
25940
|
+
const [showHiddenTags, setShowHiddenTags] = React84.useState(false);
|
|
25941
|
+
React84.useEffect(() => {
|
|
26124
25942
|
if (!showHiddenTags) return;
|
|
26125
25943
|
const handleClick = (e) => {
|
|
26126
25944
|
const target = e.target;
|
|
@@ -26134,7 +25952,7 @@ function SearchInput({
|
|
|
26134
25952
|
const hiddenCount = filterChips.length - visibleCount;
|
|
26135
25953
|
const visibleChips = filterChips.slice(0, visibleCount);
|
|
26136
25954
|
const hiddenChips = filterChips.slice(visibleCount);
|
|
26137
|
-
const { flatResults, groups } =
|
|
25955
|
+
const { flatResults, groups } = React84.useMemo(() => {
|
|
26138
25956
|
if (!groupBy) return { flatResults: results, groups: null };
|
|
26139
25957
|
const grouped = /* @__PURE__ */ new Map();
|
|
26140
25958
|
for (const r of results) {
|
|
@@ -26151,7 +25969,7 @@ function SearchInput({
|
|
|
26151
25969
|
const meetsMinQuery = debouncedValue.length >= minQueryLength;
|
|
26152
25970
|
const autoShow = meetsMinQuery;
|
|
26153
25971
|
const dropdownVisible = showDropdownProp ?? (isOpen && autoShow);
|
|
26154
|
-
|
|
25972
|
+
React84.useEffect(() => {
|
|
26155
25973
|
setHighlightedIndex(-1);
|
|
26156
25974
|
}, [flatResults.length]);
|
|
26157
25975
|
const handleChange = (e) => {
|
|
@@ -26430,7 +26248,7 @@ function SearchInput({
|
|
|
26430
26248
|
|
|
26431
26249
|
// src/components/ui/filter-list.tsx
|
|
26432
26250
|
init_cn();
|
|
26433
|
-
import * as
|
|
26251
|
+
import * as React85 from "react";
|
|
26434
26252
|
import * as CheckboxPrimitive4 from "@radix-ui/react-checkbox";
|
|
26435
26253
|
import { jsx as jsx237, jsxs as jsxs190 } from "react/jsx-runtime";
|
|
26436
26254
|
function FilterListItem({
|
|
@@ -26479,7 +26297,7 @@ function FilterListItem({
|
|
|
26479
26297
|
"flex items-start gap-[var(--spacing-system-xxs)] text-h6",
|
|
26480
26298
|
selected ? "text-ods-accent" : "text-ods-text-secondary"
|
|
26481
26299
|
),
|
|
26482
|
-
children: meta.map((item, index) => /* @__PURE__ */ jsxs190(
|
|
26300
|
+
children: meta.map((item, index) => /* @__PURE__ */ jsxs190(React85.Fragment, { children: [
|
|
26483
26301
|
index > 0 && /* @__PURE__ */ jsx237("span", { "aria-hidden": "true", children: "\u2022" }),
|
|
26484
26302
|
/* @__PURE__ */ jsx237("span", { children: item })
|
|
26485
26303
|
] }, index))
|
|
@@ -27016,7 +26834,7 @@ function MarkdownEditor({
|
|
|
27016
26834
|
}
|
|
27017
26835
|
|
|
27018
26836
|
// src/components/ui/file-upload.tsx
|
|
27019
|
-
import * as
|
|
26837
|
+
import * as React87 from "react";
|
|
27020
26838
|
import { Loader2 as Loader24, X as X10 } from "lucide-react";
|
|
27021
26839
|
init_cn();
|
|
27022
26840
|
import { jsx as jsx240, jsxs as jsxs193 } from "react/jsx-runtime";
|
|
@@ -27066,11 +26884,11 @@ function FileUpload({
|
|
|
27066
26884
|
maxListHeight,
|
|
27067
26885
|
acceptWindowDrops = false
|
|
27068
26886
|
}) {
|
|
27069
|
-
const [dragActive, setDragActive] =
|
|
27070
|
-
const [validationError, setValidationError] =
|
|
27071
|
-
const fileInputRef =
|
|
26887
|
+
const [dragActive, setDragActive] = React87.useState(false);
|
|
26888
|
+
const [validationError, setValidationError] = React87.useState(null);
|
|
26889
|
+
const fileInputRef = React87.useRef(null);
|
|
27072
26890
|
const isManaged = managedFiles !== void 0;
|
|
27073
|
-
const files =
|
|
26891
|
+
const files = React87.useMemo(() => {
|
|
27074
26892
|
if (!value) return [];
|
|
27075
26893
|
return Array.isArray(value) ? value : [value];
|
|
27076
26894
|
}, [value]);
|
|
@@ -27118,7 +26936,7 @@ function FileUpload({
|
|
|
27118
26936
|
fileInputRef.current.value = "";
|
|
27119
26937
|
}
|
|
27120
26938
|
};
|
|
27121
|
-
const handleFilesRef =
|
|
26939
|
+
const handleFilesRef = React87.useRef(handleFiles);
|
|
27122
26940
|
handleFilesRef.current = handleFiles;
|
|
27123
26941
|
const handleDrag = (e) => {
|
|
27124
26942
|
e.preventDefault();
|
|
@@ -27139,7 +26957,7 @@ function FileUpload({
|
|
|
27139
26957
|
handleFiles(e.dataTransfer.files);
|
|
27140
26958
|
}
|
|
27141
26959
|
};
|
|
27142
|
-
|
|
26960
|
+
React87.useEffect(() => {
|
|
27143
26961
|
if (!acceptWindowDrops || disabled) return;
|
|
27144
26962
|
let dragCounter = 0;
|
|
27145
26963
|
const onWindowDragEnter = (e) => {
|
|
@@ -27340,7 +27158,7 @@ function FileUpload({
|
|
|
27340
27158
|
}
|
|
27341
27159
|
|
|
27342
27160
|
// src/components/ui/image-uploader.tsx
|
|
27343
|
-
import * as
|
|
27161
|
+
import * as React88 from "react";
|
|
27344
27162
|
import { Loader2 as Loader25 } from "lucide-react";
|
|
27345
27163
|
init_cn();
|
|
27346
27164
|
import { Fragment as Fragment39, jsx as jsx241, jsxs as jsxs194 } from "react/jsx-runtime";
|
|
@@ -27381,10 +27199,10 @@ function ImageUploader({
|
|
|
27381
27199
|
alt = "Uploaded image",
|
|
27382
27200
|
className
|
|
27383
27201
|
}) {
|
|
27384
|
-
const inputRef =
|
|
27385
|
-
const [dragActive, setDragActive] =
|
|
27386
|
-
const [pressed, setPressed] =
|
|
27387
|
-
const [validationError, setValidationError] =
|
|
27202
|
+
const inputRef = React88.useRef(null);
|
|
27203
|
+
const [dragActive, setDragActive] = React88.useState(false);
|
|
27204
|
+
const [pressed, setPressed] = React88.useState(false);
|
|
27205
|
+
const [validationError, setValidationError] = React88.useState(null);
|
|
27388
27206
|
const interactive = !disabled && !loading;
|
|
27389
27207
|
const hasImage = Boolean(value);
|
|
27390
27208
|
const displayError = error || validationError || void 0;
|
|
@@ -27545,7 +27363,7 @@ function ActionIconButton({ onClick, disabled, ariaLabel, children }) {
|
|
|
27545
27363
|
|
|
27546
27364
|
// src/components/ui/assignee-dropdown.tsx
|
|
27547
27365
|
import * as PopoverPrimitive4 from "@radix-ui/react-popover";
|
|
27548
|
-
import * as
|
|
27366
|
+
import * as React89 from "react";
|
|
27549
27367
|
init_cn();
|
|
27550
27368
|
import { jsx as jsx242, jsxs as jsxs195 } from "react/jsx-runtime";
|
|
27551
27369
|
function AssigneeDropdown(props) {
|
|
@@ -27561,18 +27379,18 @@ function CompactAssigneeDropdown({
|
|
|
27561
27379
|
onAssign,
|
|
27562
27380
|
className
|
|
27563
27381
|
}) {
|
|
27564
|
-
const [isOpen, setIsOpen] =
|
|
27565
|
-
const [search, setSearch] =
|
|
27382
|
+
const [isOpen, setIsOpen] = React89.useState(false);
|
|
27383
|
+
const [search, setSearch] = React89.useState("");
|
|
27566
27384
|
const hasAssignee = !!currentAssignee;
|
|
27567
|
-
|
|
27385
|
+
React89.useEffect(() => {
|
|
27568
27386
|
if (!isOpen) setSearch("");
|
|
27569
27387
|
}, [isOpen]);
|
|
27570
|
-
const filtered =
|
|
27388
|
+
const filtered = React89.useMemo(() => {
|
|
27571
27389
|
const q = search.trim().toLowerCase();
|
|
27572
27390
|
if (!q) return options;
|
|
27573
27391
|
return options.filter((o) => o.label.toLowerCase().includes(q));
|
|
27574
27392
|
}, [options, search]);
|
|
27575
|
-
const orderedOptions =
|
|
27393
|
+
const orderedOptions = React89.useMemo(() => {
|
|
27576
27394
|
if (!currentAssignee) return filtered;
|
|
27577
27395
|
const current = filtered.find((o) => o.value === currentAssignee.id);
|
|
27578
27396
|
if (!current) return filtered;
|
|
@@ -27688,9 +27506,9 @@ function DefaultAssigneeDropdown({
|
|
|
27688
27506
|
onAssign,
|
|
27689
27507
|
className
|
|
27690
27508
|
}) {
|
|
27691
|
-
const [isEditing, setIsEditing] =
|
|
27509
|
+
const [isEditing, setIsEditing] = React89.useState(false);
|
|
27692
27510
|
const hasAssignee = !!currentAssignee;
|
|
27693
|
-
const renderOption =
|
|
27511
|
+
const renderOption = React89.useCallback((option) => {
|
|
27694
27512
|
const opt = option;
|
|
27695
27513
|
return /* @__PURE__ */ jsxs195("div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
|
|
27696
27514
|
/* @__PURE__ */ jsx242(
|
|
@@ -27842,16 +27660,16 @@ function TicketAttachmentsList({ attachments, className }) {
|
|
|
27842
27660
|
}
|
|
27843
27661
|
|
|
27844
27662
|
// src/components/ui/ticket-notes-section.tsx
|
|
27845
|
-
import * as
|
|
27663
|
+
import * as React91 from "react";
|
|
27846
27664
|
init_cn();
|
|
27847
27665
|
|
|
27848
27666
|
// src/components/ui/ticket-note-card.tsx
|
|
27849
|
-
import * as
|
|
27667
|
+
import * as React90 from "react";
|
|
27850
27668
|
init_cn();
|
|
27851
27669
|
import { Fragment as Fragment40, jsx as jsx245, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
27852
27670
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
27853
|
-
const [isEditing, setIsEditing] =
|
|
27854
|
-
const [editText, setEditText] =
|
|
27671
|
+
const [isEditing, setIsEditing] = React90.useState(false);
|
|
27672
|
+
const [editText, setEditText] = React90.useState(note.text);
|
|
27855
27673
|
const handleSave = () => {
|
|
27856
27674
|
const trimmed = editText.trim();
|
|
27857
27675
|
if (!trimmed || !onEdit) return;
|
|
@@ -27974,7 +27792,7 @@ function TicketNotesSection({
|
|
|
27974
27792
|
isAddingNote,
|
|
27975
27793
|
className
|
|
27976
27794
|
}) {
|
|
27977
|
-
const [noteText, setNoteText] =
|
|
27795
|
+
const [noteText, setNoteText] = React91.useState("");
|
|
27978
27796
|
const handleSend = () => {
|
|
27979
27797
|
const trimmed = noteText.trim();
|
|
27980
27798
|
if (!trimmed || !onAddNote || isAddingNote) return;
|
|
@@ -30958,9 +30776,9 @@ function ReleaseMediaManager({
|
|
|
30958
30776
|
|
|
30959
30777
|
// src/components/features/select-button.tsx
|
|
30960
30778
|
init_cn();
|
|
30961
|
-
import
|
|
30779
|
+
import React95 from "react";
|
|
30962
30780
|
import { jsx as jsx270, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
30963
|
-
var SelectButton =
|
|
30781
|
+
var SelectButton = React95.forwardRef(
|
|
30964
30782
|
({ title, description, selected = false, disabled = false, icon, image, tag, tagVariant = "outline", onClick, className }, ref) => {
|
|
30965
30783
|
return /* @__PURE__ */ jsxs218(
|
|
30966
30784
|
"button",
|
|
@@ -31370,9 +31188,9 @@ function SocialLinksManager({
|
|
|
31370
31188
|
|
|
31371
31189
|
// src/components/features/start-with-openframe-button.tsx
|
|
31372
31190
|
init_button2();
|
|
31373
|
-
import * as
|
|
31191
|
+
import * as React96 from "react";
|
|
31374
31192
|
import { jsx as jsx273 } from "react/jsx-runtime";
|
|
31375
|
-
var StartWithOpenFrameButton =
|
|
31193
|
+
var StartWithOpenFrameButton = React96.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
|
|
31376
31194
|
const isYellow = mode === "yellow";
|
|
31377
31195
|
const isPink = mode === "pink" || mode === "purple";
|
|
31378
31196
|
const isCyan = mode === "cyan";
|
|
@@ -33198,13 +33016,13 @@ init_button2();
|
|
|
33198
33016
|
|
|
33199
33017
|
// src/components/dropdown-menu.tsx
|
|
33200
33018
|
init_cn();
|
|
33201
|
-
import * as
|
|
33019
|
+
import * as React99 from "react";
|
|
33202
33020
|
import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
|
|
33203
|
-
import { Check as Check5, ChevronRight as
|
|
33021
|
+
import { Check as Check5, ChevronRight as ChevronRight10, Circle as Circle2 } from "lucide-react";
|
|
33204
33022
|
import { jsx as jsx294, jsxs as jsxs237 } from "react/jsx-runtime";
|
|
33205
33023
|
var DropdownMenu2 = DropdownMenuPrimitive2.Root;
|
|
33206
33024
|
var DropdownMenuTrigger2 = DropdownMenuPrimitive2.Trigger;
|
|
33207
|
-
var DropdownMenuSubTrigger =
|
|
33025
|
+
var DropdownMenuSubTrigger = React99.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs237(
|
|
33208
33026
|
DropdownMenuPrimitive2.SubTrigger,
|
|
33209
33027
|
{
|
|
33210
33028
|
ref,
|
|
@@ -33216,12 +33034,12 @@ var DropdownMenuSubTrigger = React100.forwardRef(({ className, inset, children,
|
|
|
33216
33034
|
...props,
|
|
33217
33035
|
children: [
|
|
33218
33036
|
children,
|
|
33219
|
-
/* @__PURE__ */ jsx294(
|
|
33037
|
+
/* @__PURE__ */ jsx294(ChevronRight10, { className: "ml-auto" })
|
|
33220
33038
|
]
|
|
33221
33039
|
}
|
|
33222
33040
|
));
|
|
33223
33041
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive2.SubTrigger.displayName;
|
|
33224
|
-
var DropdownMenuSubContent =
|
|
33042
|
+
var DropdownMenuSubContent = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx294(
|
|
33225
33043
|
DropdownMenuPrimitive2.SubContent,
|
|
33226
33044
|
{
|
|
33227
33045
|
ref,
|
|
@@ -33233,7 +33051,7 @@ var DropdownMenuSubContent = React100.forwardRef(({ className, ...props }, ref)
|
|
|
33233
33051
|
}
|
|
33234
33052
|
));
|
|
33235
33053
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive2.SubContent.displayName;
|
|
33236
|
-
var DropdownMenuContent2 =
|
|
33054
|
+
var DropdownMenuContent2 = React99.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx294(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ jsx294(
|
|
33237
33055
|
DropdownMenuPrimitive2.Content,
|
|
33238
33056
|
{
|
|
33239
33057
|
ref,
|
|
@@ -33246,7 +33064,7 @@ var DropdownMenuContent2 = React100.forwardRef(({ className, sideOffset = 4, ...
|
|
|
33246
33064
|
}
|
|
33247
33065
|
) }));
|
|
33248
33066
|
DropdownMenuContent2.displayName = DropdownMenuPrimitive2.Content.displayName;
|
|
33249
|
-
var DropdownMenuItem2 =
|
|
33067
|
+
var DropdownMenuItem2 = React99.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx294(
|
|
33250
33068
|
DropdownMenuPrimitive2.Item,
|
|
33251
33069
|
{
|
|
33252
33070
|
ref,
|
|
@@ -33259,7 +33077,7 @@ var DropdownMenuItem2 = React100.forwardRef(({ className, inset, ...props }, ref
|
|
|
33259
33077
|
}
|
|
33260
33078
|
));
|
|
33261
33079
|
DropdownMenuItem2.displayName = DropdownMenuPrimitive2.Item.displayName;
|
|
33262
|
-
var DropdownMenuCheckboxItem =
|
|
33080
|
+
var DropdownMenuCheckboxItem = React99.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs237(
|
|
33263
33081
|
DropdownMenuPrimitive2.CheckboxItem,
|
|
33264
33082
|
{
|
|
33265
33083
|
ref,
|
|
@@ -33276,7 +33094,7 @@ var DropdownMenuCheckboxItem = React100.forwardRef(({ className, children, check
|
|
|
33276
33094
|
}
|
|
33277
33095
|
));
|
|
33278
33096
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive2.CheckboxItem.displayName;
|
|
33279
|
-
var DropdownMenuRadioItem =
|
|
33097
|
+
var DropdownMenuRadioItem = React99.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs237(
|
|
33280
33098
|
DropdownMenuPrimitive2.RadioItem,
|
|
33281
33099
|
{
|
|
33282
33100
|
ref,
|
|
@@ -33292,7 +33110,7 @@ var DropdownMenuRadioItem = React100.forwardRef(({ className, children, ...props
|
|
|
33292
33110
|
}
|
|
33293
33111
|
));
|
|
33294
33112
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive2.RadioItem.displayName;
|
|
33295
|
-
var DropdownMenuLabel =
|
|
33113
|
+
var DropdownMenuLabel = React99.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx294(
|
|
33296
33114
|
DropdownMenuPrimitive2.Label,
|
|
33297
33115
|
{
|
|
33298
33116
|
ref,
|
|
@@ -33305,7 +33123,7 @@ var DropdownMenuLabel = React100.forwardRef(({ className, inset, ...props }, ref
|
|
|
33305
33123
|
}
|
|
33306
33124
|
));
|
|
33307
33125
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive2.Label.displayName;
|
|
33308
|
-
var DropdownMenuSeparator =
|
|
33126
|
+
var DropdownMenuSeparator = React99.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx294(
|
|
33309
33127
|
DropdownMenuPrimitive2.Separator,
|
|
33310
33128
|
{
|
|
33311
33129
|
ref,
|
|
@@ -33723,7 +33541,7 @@ function WaitlistForm({
|
|
|
33723
33541
|
}
|
|
33724
33542
|
|
|
33725
33543
|
// src/components/features/board/board.tsx
|
|
33726
|
-
import * as
|
|
33544
|
+
import * as React103 from "react";
|
|
33727
33545
|
import {
|
|
33728
33546
|
DndContext,
|
|
33729
33547
|
DragOverlay,
|
|
@@ -33741,7 +33559,7 @@ init_cn();
|
|
|
33741
33559
|
// src/components/features/board/board-column.tsx
|
|
33742
33560
|
import { useDroppable } from "@dnd-kit/core";
|
|
33743
33561
|
import { SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable";
|
|
33744
|
-
import * as
|
|
33562
|
+
import * as React102 from "react";
|
|
33745
33563
|
init_cn();
|
|
33746
33564
|
|
|
33747
33565
|
// src/components/features/board/board-column-header.tsx
|
|
@@ -33841,7 +33659,7 @@ function tintOnDark(hex) {
|
|
|
33841
33659
|
import { useSortable } from "@dnd-kit/sortable";
|
|
33842
33660
|
import { CSS } from "@dnd-kit/utilities";
|
|
33843
33661
|
import Link11 from "next/link";
|
|
33844
|
-
import * as
|
|
33662
|
+
import * as React100 from "react";
|
|
33845
33663
|
init_cn();
|
|
33846
33664
|
import { Fragment as Fragment45, jsx as jsx298, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
33847
33665
|
var PRIORITY_COLOR_CLASS = {
|
|
@@ -33860,7 +33678,7 @@ function TicketCard({
|
|
|
33860
33678
|
dragDisabled,
|
|
33861
33679
|
renderAssignSlot
|
|
33862
33680
|
}) {
|
|
33863
|
-
const sortableData =
|
|
33681
|
+
const sortableData = React100.useMemo(
|
|
33864
33682
|
() => ({ columnId, type: "ticket" }),
|
|
33865
33683
|
[columnId]
|
|
33866
33684
|
);
|
|
@@ -33977,10 +33795,10 @@ function TicketTagRow({ tags }) {
|
|
|
33977
33795
|
}
|
|
33978
33796
|
|
|
33979
33797
|
// src/components/features/board/ticket-card-skeleton.tsx
|
|
33980
|
-
import * as
|
|
33798
|
+
import * as React101 from "react";
|
|
33981
33799
|
init_cn();
|
|
33982
33800
|
import { jsx as jsx299, jsxs as jsxs242 } from "react/jsx-runtime";
|
|
33983
|
-
var TicketCardSkeleton =
|
|
33801
|
+
var TicketCardSkeleton = React101.forwardRef(
|
|
33984
33802
|
({ className, ...props }, ref) => /* @__PURE__ */ jsxs242(
|
|
33985
33803
|
"div",
|
|
33986
33804
|
{
|
|
@@ -34068,8 +33886,8 @@ function BoardColumn({
|
|
|
34068
33886
|
);
|
|
34069
33887
|
}
|
|
34070
33888
|
function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadMoreRootMargin }) {
|
|
34071
|
-
const ticketIds =
|
|
34072
|
-
const droppableData =
|
|
33889
|
+
const ticketIds = React102.useMemo(() => column.tickets.map((t) => t.id), [column.tickets]);
|
|
33890
|
+
const droppableData = React102.useMemo(
|
|
34073
33891
|
() => ({ columnId: column.id, type: "column" }),
|
|
34074
33892
|
[column.id]
|
|
34075
33893
|
);
|
|
@@ -34078,13 +33896,13 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
34078
33896
|
data: droppableData,
|
|
34079
33897
|
disabled: column.dropDisabled
|
|
34080
33898
|
});
|
|
34081
|
-
const scrollRef =
|
|
34082
|
-
const sentinelRef =
|
|
34083
|
-
const loadMoreRef =
|
|
33899
|
+
const scrollRef = React102.useRef(null);
|
|
33900
|
+
const sentinelRef = React102.useRef(null);
|
|
33901
|
+
const loadMoreRef = React102.useRef(onLoadMore);
|
|
34084
33902
|
loadMoreRef.current = onLoadMore;
|
|
34085
|
-
const columnIdRef =
|
|
33903
|
+
const columnIdRef = React102.useRef(column.id);
|
|
34086
33904
|
columnIdRef.current = column.id;
|
|
34087
|
-
|
|
33905
|
+
React102.useEffect(() => {
|
|
34088
33906
|
if (!column.hasMore || column.isLoadingMore) return;
|
|
34089
33907
|
const sentinel = sentinelRef.current;
|
|
34090
33908
|
const root = scrollRef.current;
|
|
@@ -34100,7 +33918,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
34100
33918
|
observer.observe(sentinel);
|
|
34101
33919
|
return () => observer.disconnect();
|
|
34102
33920
|
}, [column.hasMore, column.isLoadingMore, loadMoreRootMargin]);
|
|
34103
|
-
const setBodyRef =
|
|
33921
|
+
const setBodyRef = React102.useCallback(
|
|
34104
33922
|
(el) => {
|
|
34105
33923
|
scrollRef.current = el;
|
|
34106
33924
|
setDroppableRef(el);
|
|
@@ -34134,7 +33952,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
34134
33952
|
);
|
|
34135
33953
|
}
|
|
34136
33954
|
function SkeletonStack({ count = 4 }) {
|
|
34137
|
-
const keys =
|
|
33955
|
+
const keys = React102.useMemo(
|
|
34138
33956
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
34139
33957
|
[count]
|
|
34140
33958
|
);
|
|
@@ -34201,18 +34019,18 @@ function Board({
|
|
|
34201
34019
|
onThumbPointerMove,
|
|
34202
34020
|
onThumbPointerUp
|
|
34203
34021
|
} = useHorizontalScrollbar();
|
|
34204
|
-
const [items, setItems] =
|
|
34205
|
-
const isDraggingRef =
|
|
34206
|
-
|
|
34022
|
+
const [items, setItems] = React103.useState(columns);
|
|
34023
|
+
const isDraggingRef = React103.useRef(false);
|
|
34024
|
+
React103.useEffect(() => {
|
|
34207
34025
|
if (!isDraggingRef.current) setItems(columns);
|
|
34208
34026
|
}, [columns]);
|
|
34209
|
-
const dragOriginRef =
|
|
34210
|
-
const [activeTicket, setActiveTicket] =
|
|
34027
|
+
const dragOriginRef = React103.useRef(null);
|
|
34028
|
+
const [activeTicket, setActiveTicket] = React103.useState(null);
|
|
34211
34029
|
const sensors = useSensors(
|
|
34212
34030
|
useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),
|
|
34213
34031
|
useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })
|
|
34214
34032
|
);
|
|
34215
|
-
const collisionDetection =
|
|
34033
|
+
const collisionDetection = React103.useCallback((args) => {
|
|
34216
34034
|
const pointer = pointerWithin(args);
|
|
34217
34035
|
const intersections = pointer.length > 0 ? pointer : rectIntersection(args);
|
|
34218
34036
|
const ticketHit = intersections.find(
|
|
@@ -34366,7 +34184,7 @@ function Board({
|
|
|
34366
34184
|
const joinLeft = !!(column.system && prev?.system);
|
|
34367
34185
|
const joinRight = !!(column.system && next?.system);
|
|
34368
34186
|
const showGap = i > 0 && !joinLeft;
|
|
34369
|
-
return /* @__PURE__ */ jsxs244(
|
|
34187
|
+
return /* @__PURE__ */ jsxs244(React103.Fragment, { children: [
|
|
34370
34188
|
showGap && /* @__PURE__ */ jsx301("div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
34371
34189
|
/* @__PURE__ */ jsx301(
|
|
34372
34190
|
BoardColumn,
|
|
@@ -34511,10 +34329,6 @@ export {
|
|
|
34511
34329
|
getSlackCommunityJoinUrl,
|
|
34512
34330
|
OS_PLATFORMS,
|
|
34513
34331
|
DEFAULT_OS_PLATFORM,
|
|
34514
|
-
validateAccessCode,
|
|
34515
|
-
consumeAccessCode,
|
|
34516
|
-
validateAndConsumeAccessCode,
|
|
34517
|
-
useAccessCodeIntegration,
|
|
34518
34332
|
isValidEmailDomain,
|
|
34519
34333
|
validateEmailDomain,
|
|
34520
34334
|
validateEmailDomainList,
|
|
@@ -35096,4 +34910,4 @@ export {
|
|
|
35096
34910
|
TMCG_SOCIAL_PLATFORMS,
|
|
35097
34911
|
assets
|
|
35098
34912
|
};
|
|
35099
|
-
//# sourceMappingURL=chunk-
|
|
34913
|
+
//# sourceMappingURL=chunk-OFCRX24Y.js.map
|