@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.
Files changed (70) hide show
  1. package/dist/chunk-27APPAJN.cjs +24 -0
  2. package/dist/chunk-27APPAJN.cjs.map +1 -0
  3. package/dist/{chunk-XGL5FKIK.js → chunk-D6BNDYZK.js} +114 -4
  4. package/dist/chunk-D6BNDYZK.js.map +1 -0
  5. package/dist/chunk-MJNXIEV2.js +24 -0
  6. package/dist/chunk-MJNXIEV2.js.map +1 -0
  7. package/dist/{chunk-25LVV26X.cjs → chunk-NLXY4QZE.cjs} +114 -4
  8. package/dist/chunk-NLXY4QZE.cjs.map +1 -0
  9. package/dist/{chunk-E6Q6UGDK.js → chunk-OFCRX24Y.js} +383 -569
  10. package/dist/chunk-OFCRX24Y.js.map +1 -0
  11. package/dist/{chunk-3YH2M76N.cjs → chunk-RDXOQWBY.cjs} +556 -742
  12. package/dist/chunk-RDXOQWBY.cjs.map +1 -0
  13. package/dist/components/announcement-bar.d.ts.map +1 -1
  14. package/dist/components/features/index.cjs +4 -3
  15. package/dist/components/features/index.cjs.map +1 -1
  16. package/dist/components/features/index.js +3 -2
  17. package/dist/components/index.cjs +4 -3
  18. package/dist/components/index.cjs.map +1 -1
  19. package/dist/components/index.js +3 -2
  20. package/dist/components/navigation/index.cjs +4 -3
  21. package/dist/components/navigation/index.cjs.map +1 -1
  22. package/dist/components/navigation/index.js +3 -2
  23. package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
  24. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts +1 -1
  25. package/dist/components/shared/product-release/product-release-card-skeleton.d.ts.map +1 -1
  26. package/dist/components/shared/product-release/product-release-card.d.ts +19 -12
  27. package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
  28. package/dist/components/ui/index.cjs +4 -3
  29. package/dist/components/ui/index.cjs.map +1 -1
  30. package/dist/components/ui/index.js +3 -2
  31. package/dist/contexts/endpoints-runtime-context.d.ts +28 -0
  32. package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -0
  33. package/dist/contexts/index.cjs +13 -0
  34. package/dist/contexts/index.cjs.map +1 -0
  35. package/dist/contexts/index.d.ts +24 -0
  36. package/dist/contexts/index.d.ts.map +1 -0
  37. package/dist/contexts/index.js +13 -0
  38. package/dist/contexts/index.js.map +1 -0
  39. package/dist/hooks/index.cjs +5 -2
  40. package/dist/hooks/index.cjs.map +1 -1
  41. package/dist/hooks/index.d.ts +1 -0
  42. package/dist/hooks/index.d.ts.map +1 -1
  43. package/dist/hooks/index.js +4 -1
  44. package/dist/hooks/use-access-code-integration.d.ts +48 -0
  45. package/dist/hooks/use-access-code-integration.d.ts.map +1 -0
  46. package/dist/hooks/use-contact-submission.d.ts.map +1 -1
  47. package/dist/index.cjs +4 -3
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.js +7 -6
  50. package/dist/utils/access-code-client.d.ts +21 -37
  51. package/dist/utils/access-code-client.d.ts.map +1 -1
  52. package/dist/utils/index.cjs +10 -51
  53. package/dist/utils/index.cjs.map +1 -1
  54. package/dist/utils/index.js +11 -47
  55. package/dist/utils/index.js.map +1 -1
  56. package/package.json +7 -1
  57. package/src/components/announcement-bar.tsx +25 -3
  58. package/src/components/navigation/navigation-sidebar.tsx +3 -1
  59. package/src/components/shared/product-release/product-release-card-skeleton.tsx +66 -70
  60. package/src/components/shared/product-release/product-release-card.tsx +194 -242
  61. package/src/contexts/endpoints-runtime-context.tsx +68 -0
  62. package/src/contexts/index.ts +29 -0
  63. package/src/hooks/index.ts +6 -0
  64. package/src/hooks/use-access-code-integration.ts +107 -0
  65. package/src/hooks/use-contact-submission.ts +6 -2
  66. package/src/utils/access-code-client.ts +32 -75
  67. package/dist/chunk-25LVV26X.cjs.map +0 -1
  68. package/dist/chunk-3YH2M76N.cjs.map +0 -1
  69. package/dist/chunk-E6Q6UGDK.js.map +0 -1
  70. 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-XGL5FKIK.js";
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 React38 from "react";
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 = React38.forwardRef(
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 = React38.forwardRef(
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 = React38.forwardRef(
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 = React38.forwardRef(
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 = React38.forwardRef(
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 = React38.forwardRef(
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 React50 from "react";
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 React12 from "react";
4179
+ import * as React11 from "react";
4273
4180
 
4274
4181
  // src/components/ui/square-avatar.tsx
4275
4182
  init_cn();
4276
- import * as React11 from "react";
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 = React11.memo(React11.forwardRef(
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 = React12.forwardRef(
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 = React12.forwardRef(
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 = React12.forwardRef(
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 = React12.forwardRef(
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 React13 from "react";
4547
+ import * as React12 from "react";
4641
4548
  import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
4642
- var Textarea = React13.forwardRef(
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 React14 from "react";
4654
+ import * as React13 from "react";
4748
4655
  import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
4749
- var ChatTypingIndicator = React14.forwardRef(
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 React15, { forwardRef as forwardRef20, memo as memo2, useMemo as useMemo6 } from "react";
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 (React15.isValidElement(rendered) && rendered.type === BlockCard) {
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 React16 from "react";
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 = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
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 = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
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 = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
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 React19 from "react";
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 = React19.forwardRef(
6582
+ var ChatQuickAction = React18.forwardRef(
6676
6583
  ({ className, text, onAction, onClick, isHintActive, onHintInteraction, disabled = false, ...props }, ref) => {
6677
- const handleClick = React19.useCallback((e) => {
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 React20 from "react";
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 = React20.forwardRef(
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 React21 from "react";
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 = React21.forwardRef(
6683
+ var ChatTicketList = React20.forwardRef(
6777
6684
  ({ className, tickets, onTicketClick, ...props }, ref) => {
6778
- const scrollRef = React21.useRef(null);
6779
- const [fadeTop, setFadeTop] = React21.useState(false);
6780
- const [fadeBottom, setFadeBottom] = React21.useState(false);
6781
- const updateFade = React21.useCallback(() => {
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
- React21.useLayoutEffect(() => {
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 React23 from "react";
6736
+ import React22 from "react";
6830
6737
 
6831
6738
  // src/components/hover-card.tsx
6832
6739
  init_cn();
6833
- import * as React22 from "react";
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 = React22.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx44(
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 = React23.forwardRef(
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 React24 from "react";
6923
+ import * as React23 from "react";
7017
6924
  import { jsx as jsx46, jsxs as jsxs37 } from "react/jsx-runtime";
7018
- var DialogListItemSkeleton = React24.forwardRef(
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 = React24.forwardRef(
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 React25, { useEffect as useEffect13, useRef as useRef13, useState as useState19 } from "react";
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(React25.Fragment, { children: item.element }, item.id);
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
- }, [config]);
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 React31 from "react";
10526
+ import React30 from "react";
10619
10527
  init_cn();
10620
10528
 
10621
10529
  // src/components/features/notifications/notifications-context.tsx
10622
- import * as React29 from "react";
10530
+ import * as React28 from "react";
10623
10531
  import { jsx as jsx58 } from "react/jsx-runtime";
10624
- var NotificationsContext = React29.createContext(null);
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] = React29.useReducer(reducer, initialNotifications);
10660
- const [isOpen, setIsOpen] = React29.useState(false);
10661
- const [showPopups, setShowPopupsState] = React29.useState(defaultShowPopups);
10662
- const addNotification = React29.useCallback(
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 = React29.useCallback((id) => dispatch({ type: "markRead", id }), []);
10677
- const markAllRead = React29.useCallback(() => dispatch({ type: "markAllRead" }), []);
10678
- const markSettled = React29.useCallback((id) => dispatch({ type: "markSettled", id }), []);
10679
- const remove = React29.useCallback((id) => dispatch({ type: "remove", id }), []);
10680
- const clear = React29.useCallback(() => dispatch({ type: "clear" }), []);
10681
- const open = React29.useCallback(() => setIsOpen(true), []);
10682
- const close = React29.useCallback(() => setIsOpen(false), []);
10683
- const toggle = React29.useCallback(() => setIsOpen((v) => !v), []);
10684
- const setShowPopups = React29.useCallback(
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 = React29.useMemo(
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 = React29.useMemo(
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 = React29.useContext(NotificationsContext);
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 React29.useContext(NotificationsContext);
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 React30 from "react";
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] = React30.useState(value);
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 = React31.memo(function AppHeader2({
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 React32 from "react";
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 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx63(
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 = React32.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs51(DrawerPortal, { children: [
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 = React32.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs51("div", { className: "flex items-start gap-4", children: [
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 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx63(
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 React33 from "react";
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 = React33.forwardRef(({ className, checked, onCheckedChange, ...props }, ref) => {
11212
- const [isChecked, setIsChecked] = React33.useState(checked || false);
11213
- React33.useEffect(() => {
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 React34, { useCallback as useCallback13, useEffect as useEffect21 } from "react";
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 = React34.memo(function MobileBurgerMenu2({
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: React34.cloneElement(item.icon, {
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(React34.Fragment, { children: renderNavigationItem(item, true) }, item.id)),
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(React34.Fragment, { children: renderNavigationItem(item, false) }, item.id)) }),
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(`/api/announcements/active`);
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 React35 from "react";
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 = React35.useMemo(() => {
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 = React35.useMemo(() => {
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 React36 from "react";
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 = React36.forwardRef(
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 React40 from "react";
14239
+ import * as React39 from "react";
14328
14240
  import { jsx as jsx101 } from "react/jsx-runtime";
14329
- var Slider = React40.forwardRef(
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 React42 from "react";
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 = React42.useMemo(() => {
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 React46, { useRef as useRef21, useCallback as useCallback19 } from "react";
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 React45 from "react";
17119
+ import React44 from "react";
17208
17120
 
17209
17121
  // src/components/ui/interactive-card.tsx
17210
17122
  init_cn();
17211
- import React44 from "react";
17123
+ import React43 from "react";
17212
17124
  import { jsx as jsx135 } from "react/jsx-runtime";
17213
- var InteractiveCard = React44.forwardRef(
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] = React45.useState(false);
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
- React46.useEffect(() => {
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 = "default",
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 === "catalog") {
17522
+ if (size === "lg") {
17612
17523
  const totalChangelog = (changelogCounts?.features ?? 0) + (changelogCounts?.fixes ?? 0) + (changelogCounts?.improvements ?? 0) + (changelogCounts?.breaking ?? 0);
17613
- const valueCells = [];
17614
- if (releaseType && releaseTypeBadgeColor) {
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 hasAuthorCell = !!author?.full_name;
17637
- const totalCells = valueCells.length + (hasAuthorCell ? 1 : 0);
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 mb-3", children: title }),
17671
- summary && /* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-4 flex-1", children: summary })
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
- totalChangelog > 0 && changelogCounts && /* @__PURE__ */ jsxs110("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: [
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
- totalCells > 0 && /* @__PURE__ */ jsxs110(
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("p", { className: "text-h4 text-ods-text-primary", children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value }),
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
- hasAuthorCell && author && /* @__PURE__ */ jsxs110("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
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: author.avatar_url ?? void 0,
17738
- alt: author.full_name,
17739
- fallback: author.full_name.charAt(0).toUpperCase(),
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: author.full_name }),
17746
- /* @__PURE__ */ jsx139("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: author.job_title || "Author" })
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
- if (anchorProps) {
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 = "default" }) {
17912
- if (size === "catalog") {
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-bg rounded-lg flex-shrink-0" }),
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-6 w-20 bg-ods-bg rounded mb-3" }),
17927
- /* @__PURE__ */ jsx140("div", { className: "h-7 w-3/4 bg-ods-bg rounded mb-2" }),
17928
- /* @__PURE__ */ jsx140("div", { className: "h-7 w-1/2 bg-ods-bg rounded mb-3" }),
17929
- /* @__PURE__ */ jsx140("div", { className: "h-3 w-full bg-ods-bg/60 rounded mb-1" }),
17930
- /* @__PURE__ */ jsx140("div", { className: "h-3 w-5/6 bg-ods-bg/60 rounded" })
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-4 w-2/3 bg-ods-bg/60 rounded" }) }),
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-6 w-24 bg-ods-bg rounded" }),
17941
- /* @__PURE__ */ jsx140("div", { className: "h-3 w-16 bg-ods-bg/60 rounded" })
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-4 w-3/4 bg-ods-bg rounded" }),
17950
- /* @__PURE__ */ jsx140("div", { className: "h-3 w-1/2 bg-ods-bg/60 rounded" })
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
- return /* @__PURE__ */ jsxs111(
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 ChevronRight7 } from "lucide-react";
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(ChevronRight7, { className: "w-6 h-6" })
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 React49 from "react";
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 React48, { useCallback as useCallback20, useState as useState36 } from "react";
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(React48.Fragment, { children: [
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(React49.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
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(React49.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
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(React49.Fragment, { children: renderActionButton({ ...action, variant: action.variant || "accent" }) }, `desktop-${actionKey(action, idx)}`))
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(React49.Fragment, { children: renderActionButton(action, { fullWidth: !!action.label }) }, `mobile-${actionKey(action, idx)}`)) });
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(React50.Fragment, { children: values.map((val, valIndex) => /* @__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 React51 from "react";
19276
+ import * as React50 from "react";
19459
19277
  import { jsx as jsx154, jsxs as jsxs123 } from "react/jsx-runtime";
19460
- var InputTrigger = React51.forwardRef(
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 React52 from "react";
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] = React52.useState(0);
19526
- React52.useEffect(() => {
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 React54 from "react";
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 = React54.forwardRef(({ className, ...props }, ref) => {
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 = React54.forwardRef(({ className, ...props }, ref) => {
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 = React54.forwardRef(
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 React55 from "react";
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] = React55.useState("");
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 React56 from "react";
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] = React56.useState(false);
19936
- const [search, setSearch] = React56.useState("");
19937
- const [editingId, setEditingId] = React56.useState(null);
19938
- const [editingName, setEditingName] = React56.useState("");
19939
- const editInputRef = React56.useRef(null);
19940
- const inputRef = React56.useRef(null);
19941
- const containerRef = React56.useRef(null);
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 = React56.useCallback(
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 = React56.useCallback(async () => {
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 = React56.useCallback((id, name) => {
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 = React56.useCallback(async () => {
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 = React56.useCallback(() => {
19796
+ const cancelEdit = React55.useCallback(() => {
19979
19797
  setEditingId(null);
19980
19798
  setEditingName("");
19981
19799
  }, []);
19982
- const handleDelete = React56.useCallback(
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 = React56.useCallback(
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 React57 from "react";
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs129(AlertDialogPortal, { children: [
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
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 = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx161(
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 React58 from "react";
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 = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(
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 = React58.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs130(DialogPortal, { children: [
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 = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(
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 = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx162(DialogPrimitive3.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
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 React59 from "react";
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 = React59.forwardRef(
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 = React59.forwardRef(
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 = React59.forwardRef(
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 = React59.forwardRef(
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 = React59.forwardRef(
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 React60 from "react";
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 = React60.createContext({});
20546
- var Modal2 = React60.forwardRef(
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 = React60.forwardRef(
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 = React60.forwardRef(
20417
+ var ModalHeader2 = React59.forwardRef(
20600
20418
  ({ children, className }, ref) => {
20601
- const { onClose } = React60.useContext(ModalContext);
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 = React60.forwardRef(
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 = React60.forwardRef(
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 React61 from "react";
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 = React61.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx165(
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 React62 from "react";
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 = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
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 = React62.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs133(SheetPortal, { children: [
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 = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
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 = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx166(
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 React63 from "react";
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 = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx167(AccordionPrimitive.Item, { ref, className: cn("border-b", className), ...props }));
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 = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx167(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs134(
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 = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx167(
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 React64 from "react";
20628
+ import * as React63 from "react";
20811
20629
  import { Slot } from "@radix-ui/react-slot";
20812
- import { ChevronRight as ChevronRight8, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
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 = React64.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx168("nav", { ref, "aria-label": "breadcrumb", ...props }));
20632
+ var Breadcrumb = React63.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx168("nav", { ref, "aria-label": "breadcrumb", ...props }));
20815
20633
  Breadcrumb.displayName = "Breadcrumb";
20816
- var BreadcrumbList = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
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 = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
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 = React64.forwardRef(({ asChild, className, ...props }, ref) => {
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 = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx168(
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(ChevronRight8, {})
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 React65 from "react";
20714
+ import * as React64 from "react";
20897
20715
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
20898
- import { Check as Check3, ChevronRight as ChevronRight9, Circle } from "lucide-react";
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 = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
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 = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
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 = React65.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs136(
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(ChevronRight9, { className: "ml-auto h-4 w-4" })
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 = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
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 = React65.forwardRef(
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 = React65.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx169(
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 = React65.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs136(
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 = React65.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs136(
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 = React65.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx169(
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 = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx169(
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 React66 from "react";
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 = React66.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs137(
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 = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
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 = React66.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs137(
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 = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
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 = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx170(
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 = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx170(
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 React68 from "react";
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 = React68.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx173(
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 = React68.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx173(
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 = React68.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx173(
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 React69 from "react";
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 = React69.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ jsx174(
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 React71 from "react";
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] = React71.useState(false);
21867
- React71.useEffect(() => {
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 React73 from "react";
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 React72 from "react";
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 = React72.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx184(
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 = React73.createContext({
21869
+ var ToggleGroupContext = React72.createContext({
22052
21870
  size: "default",
22053
21871
  variant: "default"
22054
21872
  });
22055
- var ToggleGroup = React73.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx185(
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 = React73.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
22066
- const context = React73.useContext(ToggleGroupContext);
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 React74 from "react";
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 = React74.Children.toArray(children);
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 React74.cloneElement(child, {
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 React75 from "react";
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 (React75.isValidElement(item.icon)) {
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 React76 from "react";
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] = React76.useState(false);
22427
- const arrowRef = React76.useRef(null);
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 = React76.useMemo(() => {
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 React78 from "react";
22892
+ import * as React77 from "react";
23075
22893
  import { jsx as jsx200 } from "react/jsx-runtime";
23076
- var IconsBlock = React78.forwardRef(
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 React79 from "react";
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] = React79.useState(false);
23216
- const handleOpenChange = React79.useCallback(
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 React81 from "react";
23170
+ import * as React80 from "react";
23353
23171
 
23354
23172
  // src/components/log-severity-dot.tsx
23355
23173
  init_cn();
23356
- import * as React80 from "react";
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 = React80.forwardRef(({ severity, size = "md", className }, ref) => {
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 = React81.forwardRef(({
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 = React81.useRef(null);
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 React83 from "react";
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 = React83.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx209(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx209(
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 ChevronRight10, RotateCcw as RotateCcw2, Home as Home2 } from "lucide-react";
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(ChevronRight10, { className: "h-4 w-4" }),
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(ChevronRight10, { className: "h-4 w-4" }),
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 React85 from "react";
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] = React85.useState(defaultValue);
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] = React85.useState(false);
26102
- const [highlightedIndex, setHighlightedIndex] = React85.useState(-1);
26103
- const containerRef = React85.useRef(null);
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 = React85.useRef(null);
26121
- const hiddenTagsPopupRef = React85.useRef(null);
26122
- const [showHiddenTags, setShowHiddenTags] = React85.useState(false);
26123
- React85.useEffect(() => {
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 } = React85.useMemo(() => {
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
- React85.useEffect(() => {
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 React86 from "react";
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(React86.Fragment, { children: [
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 React88 from "react";
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] = React88.useState(false);
27070
- const [validationError, setValidationError] = React88.useState(null);
27071
- const fileInputRef = React88.useRef(null);
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 = React88.useMemo(() => {
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 = React88.useRef(handleFiles);
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
- React88.useEffect(() => {
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 React89 from "react";
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 = React89.useRef(null);
27385
- const [dragActive, setDragActive] = React89.useState(false);
27386
- const [pressed, setPressed] = React89.useState(false);
27387
- const [validationError, setValidationError] = React89.useState(null);
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 React90 from "react";
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] = React90.useState(false);
27565
- const [search, setSearch] = React90.useState("");
27382
+ const [isOpen, setIsOpen] = React89.useState(false);
27383
+ const [search, setSearch] = React89.useState("");
27566
27384
  const hasAssignee = !!currentAssignee;
27567
- React90.useEffect(() => {
27385
+ React89.useEffect(() => {
27568
27386
  if (!isOpen) setSearch("");
27569
27387
  }, [isOpen]);
27570
- const filtered = React90.useMemo(() => {
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 = React90.useMemo(() => {
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] = React90.useState(false);
27509
+ const [isEditing, setIsEditing] = React89.useState(false);
27692
27510
  const hasAssignee = !!currentAssignee;
27693
- const renderOption = React90.useCallback((option) => {
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 React92 from "react";
27663
+ import * as React91 from "react";
27846
27664
  init_cn();
27847
27665
 
27848
27666
  // src/components/ui/ticket-note-card.tsx
27849
- import * as React91 from "react";
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] = React91.useState(false);
27854
- const [editText, setEditText] = React91.useState(note.text);
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] = React92.useState("");
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 React96 from "react";
30779
+ import React95 from "react";
30962
30780
  import { jsx as jsx270, jsxs as jsxs218 } from "react/jsx-runtime";
30963
- var SelectButton = React96.forwardRef(
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 React97 from "react";
31191
+ import * as React96 from "react";
31374
31192
  import { jsx as jsx273 } from "react/jsx-runtime";
31375
- var StartWithOpenFrameButton = React97.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
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 React100 from "react";
33019
+ import * as React99 from "react";
33202
33020
  import * as DropdownMenuPrimitive2 from "@radix-ui/react-dropdown-menu";
33203
- import { Check as Check5, ChevronRight as ChevronRight11, Circle as Circle2 } from "lucide-react";
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 = React100.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs237(
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(ChevronRight11, { className: "ml-auto" })
33037
+ /* @__PURE__ */ jsx294(ChevronRight10, { className: "ml-auto" })
33220
33038
  ]
33221
33039
  }
33222
33040
  ));
33223
33041
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive2.SubTrigger.displayName;
33224
- var DropdownMenuSubContent = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx294(
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 = React100.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx294(DropdownMenuPrimitive2.Portal, { children: /* @__PURE__ */ jsx294(
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 = React100.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx294(
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 = React100.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs237(
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 = React100.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs237(
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 = React100.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx294(
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 = React100.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx294(
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 React104 from "react";
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 React103 from "react";
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 React101 from "react";
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 = React101.useMemo(
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 React102 from "react";
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 = React102.forwardRef(
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 = React103.useMemo(() => column.tickets.map((t) => t.id), [column.tickets]);
34072
- const droppableData = React103.useMemo(
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 = React103.useRef(null);
34082
- const sentinelRef = React103.useRef(null);
34083
- const loadMoreRef = React103.useRef(onLoadMore);
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 = React103.useRef(column.id);
33903
+ const columnIdRef = React102.useRef(column.id);
34086
33904
  columnIdRef.current = column.id;
34087
- React103.useEffect(() => {
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 = React103.useCallback(
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 = React103.useMemo(
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] = React104.useState(columns);
34205
- const isDraggingRef = React104.useRef(false);
34206
- React104.useEffect(() => {
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 = React104.useRef(null);
34210
- const [activeTicket, setActiveTicket] = React104.useState(null);
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 = React104.useCallback((args) => {
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(React104.Fragment, { children: [
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-E6Q6UGDK.js.map
34913
+ //# sourceMappingURL=chunk-OFCRX24Y.js.map