@flamingo-stack/openframe-frontend-core 0.0.190 → 0.0.191

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.
@@ -5110,7 +5110,7 @@ function normalizeContent(content) {
5110
5110
  return content;
5111
5111
  }
5112
5112
  var ChatMessageEnhanced = forwardRef20(
5113
- ({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, renderEntityCard, ...props }, ref) => {
5113
+ ({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, renderEntityCard, NavLinkAnchor, ...props }, ref) => {
5114
5114
  const isUser = role === "user";
5115
5115
  const isError = role === "error";
5116
5116
  const authorType = authorTypeProp ?? (isUser ? "user" : assistantType === "mingo" ? "mingo" : "fae");
@@ -5194,30 +5194,13 @@ var ChatMessageEnhanced = forwardRef20(
5194
5194
  return /* @__PURE__ */ jsx30("span", { className: "text-ods-text-primary", children: fallbackTitle });
5195
5195
  }
5196
5196
  }
5197
- const isAnchorOnly = typeof href === "string" && href.startsWith("#");
5198
- let isCrossOrigin = false;
5199
- if (typeof href === "string" && href.length > 0 && !isAnchorOnly && !(href.startsWith("/") && !href.startsWith("//")) && typeof window !== "undefined") {
5200
- try {
5201
- const u = new URL(href, window.location.origin);
5202
- isCrossOrigin = u.origin !== window.location.origin;
5203
- } catch {
5204
- isCrossOrigin = false;
5205
- }
5197
+ if (typeof href === "string" && NavLinkAnchor && !href.startsWith("#")) {
5198
+ return /* @__PURE__ */ jsx30(NavLinkAnchor, { href, className: linkClassName, ...rest, children });
5206
5199
  }
5207
- return /* @__PURE__ */ jsx30(
5208
- "a",
5209
- {
5210
- href,
5211
- className: linkClassName,
5212
- target: isCrossOrigin ? "_blank" : void 0,
5213
- rel: isCrossOrigin ? "noopener noreferrer" : void 0,
5214
- ...rest,
5215
- children
5216
- }
5217
- );
5200
+ return /* @__PURE__ */ jsx30("a", { href, className: linkClassName, ...rest, children });
5218
5201
  }
5219
5202
  };
5220
- }, [hasMarkerSupport, chatRefs, renderingPlan]);
5203
+ }, [hasMarkerSupport, chatRefs, renderingPlan, NavLinkAnchor]);
5221
5204
  const getAvatarProps = () => {
5222
5205
  const displayName = name || (isUser ? "User" : assistantType === "mingo" ? "Mingo" : "Fae");
5223
5206
  const initials = displayName.split(" ").map((n) => n[0]).join("").toUpperCase();
@@ -5369,7 +5352,7 @@ var MemoizedChatMessageEnhanced = memo2(ChatMessageEnhanced, (prevProps, nextPro
5369
5352
  // re-use the same Record instance per turn; mutations create a new map.
5370
5353
  // Without this check, a parent re-render with a new (but equivalent)
5371
5354
  // refs object would force a full markdown re-render every keystroke.
5372
- prevProps.chatRefs === nextProps.chatRefs && prevProps.renderEntityCard === nextProps.renderEntityCard;
5355
+ prevProps.chatRefs === nextProps.chatRefs && prevProps.renderEntityCard === nextProps.renderEntityCard && prevProps.NavLinkAnchor === nextProps.NavLinkAnchor;
5373
5356
  });
5374
5357
  MemoizedChatMessageEnhanced.displayName = "MemoizedChatMessageEnhanced";
5375
5358
 
@@ -5569,6 +5552,7 @@ var ChatMessageList = forwardRef21(
5569
5552
  isFetchingNextPage,
5570
5553
  onLoadMore,
5571
5554
  renderEntityCard,
5555
+ NavLinkAnchor,
5572
5556
  ...props
5573
5557
  }, ref) => {
5574
5558
  const { scrollRef, contentRef, scrollToBottom } = useStickToBottom({
@@ -5713,7 +5697,8 @@ var ChatMessageList = forwardRef21(
5713
5697
  authorType: message.authorType,
5714
5698
  assistantIcon: message.role !== "user" ? assistantIcon : void 0,
5715
5699
  chatRefs: message.chatRefs,
5716
- renderEntityCard
5700
+ renderEntityCard,
5701
+ NavLinkAnchor
5717
5702
  },
5718
5703
  message.id
5719
5704
  ))
@@ -5752,6 +5737,7 @@ var ChatMessageList = forwardRef21(
5752
5737
  showAvatar: showAvatars,
5753
5738
  assistantType,
5754
5739
  assistantIcon,
5740
+ NavLinkAnchor,
5755
5741
  className: "py-3"
5756
5742
  }
5757
5743
  ) })
@@ -16838,13 +16824,14 @@ function OnboardingWalkthrough({
16838
16824
  // src/components/shared/product-release/product-release-card.tsx
16839
16825
  init_cn();
16840
16826
  import { ChevronRight as ChevronRight6, Package as Package3 } from "lucide-react";
16841
- import { jsx as jsx138, jsxs as jsxs110 } from "react/jsx-runtime";
16827
+ import { Fragment as Fragment20, jsx as jsx138, jsxs as jsxs110 } from "react/jsx-runtime";
16842
16828
  function ProductReleaseCard({
16843
16829
  title,
16844
16830
  summary,
16845
16831
  version,
16846
16832
  formattedDate,
16847
16833
  onClick,
16834
+ anchorProps,
16848
16835
  className,
16849
16836
  size = "default"
16850
16837
  }) {
@@ -16856,38 +16843,75 @@ function ProductReleaseCard({
16856
16843
  onClick();
16857
16844
  }
16858
16845
  };
16859
- return /* @__PURE__ */ jsxs110(
16846
+ const isInteractive = !!anchorProps || !!onClick;
16847
+ const outerClassName = cn(
16848
+ // The base frame (`my-1.5 flex … no-underline`) mirrors the
16849
+ // hub's `COMPACT_CARD_OUTER` in `components/shared/compact-
16850
+ // card/compact-card-classes.ts` byte-for-byte. The OSS lib
16851
+ // can't import from the consumer, so the two strings are
16852
+ // kept identical by hand — if you edit one, edit the other.
16853
+ //
16854
+ // The interactive branch ADDS `cursor-pointer` + a focus-
16855
+ // visible ring. The `<a>` form would normally get focus styling
16856
+ // from the browser, but `no-underline` strips the default
16857
+ // affordance, so explicit ring styles match the `<span role>` form.
16858
+ "my-1.5 flex items-start gap-3 w-full p-2",
16859
+ "rounded-lg border border-ods-border bg-ods-card no-underline",
16860
+ isInteractive ? "transition-colors hover:border-ods-text-secondary/40 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
16861
+ className
16862
+ );
16863
+ const innerChildren = /* @__PURE__ */ jsxs110(Fragment20, { children: [
16864
+ /* @__PURE__ */ jsx138("span", { className: "flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center rounded-md bg-ods-bg text-ods-accent", children: /* @__PURE__ */ jsx138(Package3, { className: "h-5 w-5" }) }),
16865
+ /* @__PURE__ */ jsxs110("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14", children: [
16866
+ /* @__PURE__ */ jsxs110("span", { className: "flex items-center gap-2 min-w-0 h-5", children: [
16867
+ /* @__PURE__ */ jsx138("span", { className: "truncate text-sm font-semibold leading-5 text-ods-text-primary min-w-0", children: title }),
16868
+ version ? /* @__PURE__ */ jsx138("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 font-mono text-[10px] font-medium text-ods-accent", children: version }) : null
16869
+ ] }),
16870
+ /* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary", children: formattedDate || "Product release" }) }),
16871
+ /* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary/80", children: summary || "\xA0" }) })
16872
+ ] })
16873
+ ] });
16874
+ if (anchorProps) {
16875
+ return /* @__PURE__ */ jsx138("a", { ...anchorProps, className: outerClassName, children: innerChildren });
16876
+ }
16877
+ return /* @__PURE__ */ jsx138(
16860
16878
  "span",
16861
16879
  {
16862
16880
  role: onClick ? "button" : void 0,
16863
16881
  tabIndex: onClick ? 0 : void 0,
16864
16882
  onClick,
16865
16883
  onKeyDown: onClick ? handleKey : void 0,
16884
+ className: outerClassName,
16885
+ children: innerChildren
16886
+ }
16887
+ );
16888
+ }
16889
+ if (anchorProps) {
16890
+ return /* @__PURE__ */ jsxs110(
16891
+ "a",
16892
+ {
16893
+ ...anchorProps,
16866
16894
  className: cn(
16867
- // The base frame (`my-1.5 flex … no-underline`) mirrors the
16868
- // hub's `COMPACT_CARD_OUTER` in `components/shared/compact-
16869
- // card/compact-card-classes.ts` byte-for-byte. The OSS lib
16870
- // can't import from the consumer, so the two strings are
16871
- // kept identical by hand — if you edit one, edit the other.
16872
- //
16873
- // The interactive branch ADDS `cursor-pointer` + a focus-
16874
- // visible ring because this outer is a `<span role="button">`
16875
- // (not an `<a>`), so it needs explicit keyboard-focus
16876
- // styling that the hub's anchor variants get for free.
16877
- "my-1.5 flex items-start gap-3 w-full p-2",
16878
- "rounded-lg border border-ods-border bg-ods-card no-underline",
16879
- onClick ? "transition-colors hover:border-ods-text-secondary/40 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
16895
+ "bg-ods-card border border-ods-border rounded-[6px]",
16896
+ "flex flex-col md:flex-row",
16897
+ "items-start md:items-center",
16898
+ "gap-3 md:gap-4",
16899
+ "p-4 no-underline",
16900
+ "transition-colors hover:border-ods-text-secondary/40",
16901
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card",
16880
16902
  className
16881
16903
  ),
16882
16904
  children: [
16883
- /* @__PURE__ */ jsx138("span", { className: "flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center rounded-md bg-ods-bg text-ods-accent", children: /* @__PURE__ */ jsx138(Package3, { className: "h-5 w-5" }) }),
16884
- /* @__PURE__ */ jsxs110("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14", children: [
16885
- /* @__PURE__ */ jsxs110("span", { className: "flex items-center gap-2 min-w-0 h-5", children: [
16886
- /* @__PURE__ */ jsx138("span", { className: "truncate text-sm font-semibold leading-5 text-ods-text-primary min-w-0", children: title }),
16887
- version ? /* @__PURE__ */ jsx138("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 font-mono text-[10px] font-medium text-ods-accent", children: version }) : null
16905
+ /* @__PURE__ */ jsxs110("div", { className: "flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2", children: [
16906
+ /* @__PURE__ */ jsx138("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx138("h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2", children: title }) }),
16907
+ /* @__PURE__ */ jsx138("p", { className: "text-h4 text-ods-text-secondary line-clamp-3", children: summary || " " })
16908
+ ] }),
16909
+ /* @__PURE__ */ jsxs110("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", children: [
16910
+ /* @__PURE__ */ jsxs110("div", { className: "w-[200px] flex flex-col justify-center gap-2", children: [
16911
+ /* @__PURE__ */ jsx138("p", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] truncate", children: version }),
16912
+ /* @__PURE__ */ jsx138("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: formattedDate })
16888
16913
  ] }),
16889
- /* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary", children: formattedDate || "Product release" }) }),
16890
- /* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary/80", children: summary || "\xA0" }) })
16914
+ /* @__PURE__ */ jsx138("div", { className: "flex items-center justify-center p-3 shrink-0", children: /* @__PURE__ */ jsx138(ChevronRight6, { className: "h-6 w-6 text-ods-text-primary" }) })
16891
16915
  ] })
16892
16916
  ]
16893
16917
  }
@@ -17091,7 +17115,7 @@ function ReleaseChangelogSection({
17091
17115
  import { useState as useState33, useEffect as useEffect25 } from "react";
17092
17116
  import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight7 } from "lucide-react";
17093
17117
  import Image8 from "next/image";
17094
- import { Fragment as Fragment20, jsx as jsx143, jsxs as jsxs114 } from "react/jsx-runtime";
17118
+ import { Fragment as Fragment21, jsx as jsx143, jsxs as jsxs114 } from "react/jsx-runtime";
17095
17119
  function ImageGalleryModal({
17096
17120
  images,
17097
17121
  isOpen,
@@ -17147,7 +17171,7 @@ function ImageGalleryModal({
17147
17171
  onClose,
17148
17172
  className: "max-w-[95vw]",
17149
17173
  children: /* @__PURE__ */ jsxs114("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
17150
- images.length > 1 && /* @__PURE__ */ jsxs114(Fragment20, { children: [
17174
+ images.length > 1 && /* @__PURE__ */ jsxs114(Fragment21, { children: [
17151
17175
  selectedImageIndex > 0 && /* @__PURE__ */ jsx143("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx143(
17152
17176
  Button,
17153
17177
  {
@@ -17226,7 +17250,7 @@ import Link3 from "next/link";
17226
17250
  import React47, { useCallback as useCallback18, useState as useState34 } from "react";
17227
17251
  init_cn();
17228
17252
  init_button2();
17229
- import { Fragment as Fragment21, jsx as jsx144, jsxs as jsxs115 } from "react/jsx-runtime";
17253
+ import { Fragment as Fragment22, jsx as jsx144, jsxs as jsxs115 } from "react/jsx-runtime";
17230
17254
  var ROW_CLASSES = "flex flex-1 min-w-0 items-center gap-2 px-3 py-3 cursor-pointer transition-colors bg-ods-bg outline-none";
17231
17255
  var WRAPPER_CLASSES = "relative flex items-stretch border-b border-ods-border last:border-b-0";
17232
17256
  var SECONDARY_ACTION_CLASSES = "flex w-10 shrink-0 items-center justify-center self-stretch border-l border-ods-border transition-colors hover:bg-ods-bg-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus";
@@ -17328,7 +17352,7 @@ var MenuItem = ({ item, onItemClick }) => {
17328
17352
  "data-[state=open]:bg-[#2b2b2b] focus:bg-ods-bg-hover"
17329
17353
  );
17330
17354
  const renderAsLink = !!item.href && item.type !== "submenu" && item.type !== "checkbox";
17331
- const rowContent = /* @__PURE__ */ jsxs115(Fragment21, { children: [
17355
+ const rowContent = /* @__PURE__ */ jsxs115(Fragment22, { children: [
17332
17356
  item.icon && /* @__PURE__ */ jsx144(
17333
17357
  "div",
17334
17358
  {
@@ -17510,7 +17534,7 @@ var ActionsMenuDropdown = ({
17510
17534
 
17511
17535
  // src/components/ui/page-actions.tsx
17512
17536
  init_button2();
17513
- import { Fragment as Fragment22, jsx as jsx145, jsxs as jsxs116 } from "react/jsx-runtime";
17537
+ import { Fragment as Fragment23, jsx as jsx145, jsxs as jsxs116 } from "react/jsx-runtime";
17514
17538
  function actionKey(action, idx) {
17515
17539
  return `${action.label ?? action.ariaLabel ?? "action"}-${idx}`;
17516
17540
  }
@@ -17641,7 +17665,7 @@ function IconButtonsVariant({
17641
17665
  const isSingleAction = actions.length === 1 && !actions[0].submenu?.length;
17642
17666
  const singleAction = isSingleAction ? actions[0] : null;
17643
17667
  const useSingleActionMobile = isSingleAction && !hasMenuActions;
17644
- return /* @__PURE__ */ jsxs116(Fragment22, { children: [
17668
+ return /* @__PURE__ */ jsxs116(Fragment23, { children: [
17645
17669
  /* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
17646
17670
  selector,
17647
17671
  desktopActions.map((action, idx) => /* @__PURE__ */ jsx145(React48.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
@@ -17668,7 +17692,7 @@ function PrimaryButtonsVariant({
17668
17692
  return 0;
17669
17693
  });
17670
17694
  const desktopActions = sortedActions.filter((a) => !a.showOnlyMobile);
17671
- return /* @__PURE__ */ jsxs116(Fragment22, { children: [
17695
+ return /* @__PURE__ */ jsxs116(Fragment23, { children: [
17672
17696
  /* @__PURE__ */ jsx145("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx145(React48.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
17673
17697
  /* @__PURE__ */ jsx145(MobileBottomActions, { actions: sortedActions })
17674
17698
  ] });
@@ -17681,7 +17705,7 @@ function MenuPrimaryVariant({
17681
17705
  }) {
17682
17706
  const desktopActions = actions.filter((a) => !a.showOnlyMobile);
17683
17707
  const hasMenuActions = menuActions.some((g) => g.items.length > 0);
17684
- return /* @__PURE__ */ jsxs116(Fragment22, { children: [
17708
+ return /* @__PURE__ */ jsxs116(Fragment23, { children: [
17685
17709
  /* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
17686
17710
  selector,
17687
17711
  hasMenuActions && /* @__PURE__ */ jsx145(ActionsMenuDropdown, { groups: menuActions }),
@@ -17969,7 +17993,7 @@ function DetailPageSkeleton({
17969
17993
  }
17970
17994
 
17971
17995
  // src/components/shared/product-release/release-detail-page.tsx
17972
- import { Fragment as Fragment23, jsx as jsx149, jsxs as jsxs120 } from "react/jsx-runtime";
17996
+ import { Fragment as Fragment24, jsx as jsx149, jsxs as jsxs120 } from "react/jsx-runtime";
17973
17997
  function DefaultMarkdownRenderer({ content }) {
17974
17998
  return /* @__PURE__ */ jsx149("div", { className: "whitespace-pre-wrap", children: content });
17975
17999
  }
@@ -18136,7 +18160,7 @@ function ReleaseDetailPage({
18136
18160
  srtContent: release?.srt_content,
18137
18161
  captionsUrl: release?.captionsUrl
18138
18162
  }
18139
- ) : /* @__PURE__ */ jsxs120(Fragment23, { children: [
18163
+ ) : /* @__PURE__ */ jsxs120(Fragment24, { children: [
18140
18164
  youtubeUrl && /* @__PURE__ */ jsx149(
18141
18165
  Video2,
18142
18166
  {
@@ -18244,7 +18268,7 @@ function ReleaseDetailPage({
18244
18268
  (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs120("div", { className: "space-y-1 w-full", children: [
18245
18269
  /* @__PURE__ */ jsx149("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
18246
18270
  /* @__PURE__ */ jsx149(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs120("div", { className: "space-y-4", children: [
18247
- githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx149(Fragment23, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs120("div", { className: "flex items-start gap-1", children: [
18271
+ githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx149(Fragment24, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs120("div", { className: "flex items-start gap-1", children: [
18248
18272
  /* @__PURE__ */ jsx149(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
18249
18273
  /* @__PURE__ */ jsx149("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
18250
18274
  /* @__PURE__ */ jsx149(
@@ -18259,7 +18283,7 @@ function ReleaseDetailPage({
18259
18283
  ),
18260
18284
  /* @__PURE__ */ jsx149(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
18261
18285
  ] }, ghRelease.id)) }),
18262
- knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx149(Fragment23, { children: knowledgeBaseLinks.map((linkObj) => {
18286
+ knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx149(Fragment24, { children: knowledgeBaseLinks.map((linkObj) => {
18263
18287
  const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
18264
18288
  const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
18265
18289
  return /* @__PURE__ */ jsxs120("div", { className: "flex items-start gap-1", children: [
@@ -20135,7 +20159,7 @@ function TabContent({
20135
20159
  init_cn();
20136
20160
  import { useState as useState40, useEffect as useEffect31, useMemo as useMemo14, useRef as useRef23, useCallback as useCallback20 } from "react";
20137
20161
  import { useSearchParams as useSearchParams3, useRouter as useRouter5, usePathname as usePathname3 } from "next/navigation";
20138
- import { Fragment as Fragment24, jsx as jsx171, jsxs as jsxs139 } from "react/jsx-runtime";
20162
+ import { Fragment as Fragment25, jsx as jsx171, jsxs as jsxs139 } from "react/jsx-runtime";
20139
20163
  function TabNavigation({
20140
20164
  activeTab: controlledActiveTab,
20141
20165
  onTabChange: controlledOnTabChange,
@@ -20222,7 +20246,7 @@ function TabNavigation({
20222
20246
  }
20223
20247
  return { background: c };
20224
20248
  })();
20225
- return /* @__PURE__ */ jsxs139(Fragment24, { children: [
20249
+ return /* @__PURE__ */ jsxs139(Fragment25, { children: [
20226
20250
  /* @__PURE__ */ jsxs139("div", { className: cn("relative w-full", className), children: [
20227
20251
  /* @__PURE__ */ jsx171("div", { ref: scrollRef, className: "flex gap-[var(--spacing-system-xxs)] items-center justify-start h-full overflow-x-auto overflow-y-hidden", children: tabs.map((tab) => {
20228
20252
  const isActive = activeTab === tab.id;
@@ -20562,7 +20586,7 @@ function TagKeyValueFilter({
20562
20586
  }
20563
20587
 
20564
20588
  // src/components/ui/filter-modal.tsx
20565
- import { Fragment as Fragment25, jsx as jsx178, jsxs as jsxs144 } from "react/jsx-runtime";
20589
+ import { Fragment as Fragment26, jsx as jsx178, jsxs as jsxs144 } from "react/jsx-runtime";
20566
20590
  function FilterModal({
20567
20591
  isOpen,
20568
20592
  onClose,
@@ -20638,7 +20662,7 @@ function FilterModal({
20638
20662
  "flex-1 min-h-0 flex flex-col",
20639
20663
  !isEmpty && "md:bg-ods-bg md:border md:border-ods-border md:rounded-md md:px-3"
20640
20664
  ),
20641
- children: /* @__PURE__ */ jsx178("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx178(Fragment25, { children: [0, 1].map((group) => /* @__PURE__ */ jsxs144("div", { className: "flex flex-col gap-1", children: [
20665
+ children: /* @__PURE__ */ jsx178("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx178(Fragment26, { children: [0, 1].map((group) => /* @__PURE__ */ jsxs144("div", { className: "flex flex-col gap-1", children: [
20642
20666
  /* @__PURE__ */ jsx178(Skeleton, { className: "h-5 w-24" }),
20643
20667
  /* @__PURE__ */ jsx178("div", { className: "rounded-md border border-ods-border overflow-hidden", children: [0, 1, 2].map((row) => /* @__PURE__ */ jsxs144(
20644
20668
  "div",
@@ -20658,7 +20682,7 @@ function FilterModal({
20658
20682
  /* @__PURE__ */ jsx178("p", { className: "text-h4", children: emptyStateTitle }),
20659
20683
  /* @__PURE__ */ jsx178("p", { className: "text-h6", children: emptyStateDescription })
20660
20684
  ] })
20661
- ] }) : /* @__PURE__ */ jsxs144(Fragment25, { children: [
20685
+ ] }) : /* @__PURE__ */ jsxs144(Fragment26, { children: [
20662
20686
  sortConfig && sortConfig.columns.length > 0 && /* @__PURE__ */ jsxs144("div", { className: "flex flex-col gap-1", children: [
20663
20687
  /* @__PURE__ */ jsx178("span", { className: "text-h5 text-ods-text-secondary", children: sortConfig.title || "Sort By" }),
20664
20688
  /* @__PURE__ */ jsx178("div", { className: "rounded-md border border-ods-border overflow-hidden", children: sortConfig.columns.map((column) => /* @__PURE__ */ jsx178(
@@ -21320,7 +21344,7 @@ import {
21320
21344
  safePolygon,
21321
21345
  arrow
21322
21346
  } from "@floating-ui/react";
21323
- import { Fragment as Fragment26, jsx as jsx189, jsxs as jsxs152 } from "react/jsx-runtime";
21347
+ import { Fragment as Fragment27, jsx as jsx189, jsxs as jsxs152 } from "react/jsx-runtime";
21324
21348
  function parseColoredText(text) {
21325
21349
  if (typeof text !== "string") return text;
21326
21350
  const parts = [];
@@ -21345,7 +21369,7 @@ function parseColoredText(text) {
21345
21369
  const remainingText = text.slice(lastIndex);
21346
21370
  parts.push(/* @__PURE__ */ jsx189("span", { children: remainingText }, `text-${keyIndex++}`));
21347
21371
  }
21348
- return parts.length > 0 ? /* @__PURE__ */ jsx189(Fragment26, { children: parts }) : text;
21372
+ return parts.length > 0 ? /* @__PURE__ */ jsx189(Fragment27, { children: parts }) : text;
21349
21373
  }
21350
21374
  function FloatingTooltip({
21351
21375
  content,
@@ -21397,7 +21421,7 @@ function FloatingTooltip({
21397
21421
  bottom: "top",
21398
21422
  left: "right"
21399
21423
  }[placement.split("-")[0]];
21400
- return /* @__PURE__ */ jsxs152(Fragment26, { children: [
21424
+ return /* @__PURE__ */ jsxs152(Fragment27, { children: [
21401
21425
  /* @__PURE__ */ jsx189("div", { ref: refs.setReference, ...getReferenceProps(), children }),
21402
21426
  /* @__PURE__ */ jsx189(FloatingPortal, { children: isOpen && /* @__PURE__ */ jsxs152(
21403
21427
  "div",
@@ -21448,7 +21472,7 @@ function FloatingTooltip({
21448
21472
  }
21449
21473
 
21450
21474
  // src/components/ui/dashboard-info-card.tsx
21451
- import { Fragment as Fragment27, jsx as jsx190, jsxs as jsxs153 } from "react/jsx-runtime";
21475
+ import { Fragment as Fragment28, jsx as jsx190, jsxs as jsxs153 } from "react/jsx-runtime";
21452
21476
  function DashboardInfoCard({
21453
21477
  title,
21454
21478
  value,
@@ -21462,7 +21486,7 @@ function DashboardInfoCard({
21462
21486
  valueClassName
21463
21487
  }) {
21464
21488
  const formattedValue = typeof value === "number" ? value.toLocaleString() : value;
21465
- const cardContent = /* @__PURE__ */ jsxs153(Fragment27, { children: [
21489
+ const cardContent = /* @__PURE__ */ jsxs153(Fragment28, { children: [
21466
21490
  /* @__PURE__ */ jsxs153("div", { className: "flex-1 flex flex-col", children: [
21467
21491
  /* @__PURE__ */ jsx190("p", { className: "text-h5 text-ods-text-secondary", children: title }),
21468
21492
  /* @__PURE__ */ jsxs153("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
@@ -21681,7 +21705,7 @@ function DeviceCard({
21681
21705
 
21682
21706
  // src/components/ui/device-card-compact.tsx
21683
21707
  init_cn();
21684
- import { Fragment as Fragment28, jsx as jsx193, jsxs as jsxs156 } from "react/jsx-runtime";
21708
+ import { Fragment as Fragment29, jsx as jsx193, jsxs as jsxs156 } from "react/jsx-runtime";
21685
21709
  function DeviceCardCompact({
21686
21710
  deviceName,
21687
21711
  organization,
@@ -21691,7 +21715,7 @@ function DeviceCardCompact({
21691
21715
  const hasName = deviceName && deviceName !== "-" && deviceName !== "null";
21692
21716
  const hasOrg = organization && organization !== "-" && organization !== "null";
21693
21717
  if (!hasName && !hasOrg) {
21694
- return /* @__PURE__ */ jsx193(Fragment28, {});
21718
+ return /* @__PURE__ */ jsx193(Fragment29, {});
21695
21719
  }
21696
21720
  return /* @__PURE__ */ jsxs156(
21697
21721
  "div",
@@ -21970,7 +21994,7 @@ import React77 from "react";
21970
21994
  init_cn();
21971
21995
  import Link7 from "next/link";
21972
21996
  init_button2();
21973
- import { Fragment as Fragment29, jsx as jsx198, jsxs as jsxs160 } from "react/jsx-runtime";
21997
+ import { Fragment as Fragment30, jsx as jsx198, jsxs as jsxs160 } from "react/jsx-runtime";
21974
21998
  function MoreActionsMenu({
21975
21999
  items,
21976
22000
  align = "end",
@@ -22002,7 +22026,7 @@ function MoreActionsMenu({
22002
22026
  className: "bg-ods-card border border-ods-border p-0 rounded-[4px] min-w-[200px]",
22003
22027
  children: items.map((item, idx) => {
22004
22028
  const itemClassName = "flex items-center gap-2 px-4 py-3 bg-ods-bg hover:bg-ods-bg-hover focus:bg-ods-bg-hover border-b border-ods-border last:border-b-0 rounded-none cursor-pointer data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed";
22005
- const content = /* @__PURE__ */ jsxs160(Fragment29, { children: [
22029
+ const content = /* @__PURE__ */ jsxs160(Fragment30, { children: [
22006
22030
  item.icon && /* @__PURE__ */ jsx198("div", { className: cn(item.danger ? "text-ods-error" : "text-ods-text-secondary", "[&_svg]:size-6 [&_svg]:shrink-0"), children: item.icon }),
22007
22031
  /* @__PURE__ */ jsx198("span", { className: "font-medium text-[18px] leading-6 text-ods-text-primary", children: item.label })
22008
22032
  ] });
@@ -23201,7 +23225,7 @@ function getHideClasses(hideAt) {
23201
23225
  }
23202
23226
 
23203
23227
  // src/components/ui/table/table-header.tsx
23204
- import { Fragment as Fragment30, jsx as jsx213, jsxs as jsxs173 } from "react/jsx-runtime";
23228
+ import { Fragment as Fragment31, jsx as jsx213, jsxs as jsxs173 } from "react/jsx-runtime";
23205
23229
  function TableHeader({
23206
23230
  columns,
23207
23231
  className,
@@ -23312,10 +23336,10 @@ function TableHeader({
23312
23336
  column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
23313
23337
  ),
23314
23338
  onClick: () => handleSort(column),
23315
- children: column.renderHeader ? /* @__PURE__ */ jsxs173(Fragment30, { children: [
23339
+ children: column.renderHeader ? /* @__PURE__ */ jsxs173(Fragment31, { children: [
23316
23340
  column.renderHeader(),
23317
23341
  getSortIcon(column)
23318
- ] }) : /* @__PURE__ */ jsxs173(Fragment30, { children: [
23342
+ ] }) : /* @__PURE__ */ jsxs173(Fragment31, { children: [
23319
23343
  /* @__PURE__ */ jsx213("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
23320
23344
  getSortIcon(column)
23321
23345
  ] })
@@ -23370,7 +23394,7 @@ function TableCell({
23370
23394
 
23371
23395
  // src/components/ui/table/table-skeleton.tsx
23372
23396
  init_cn();
23373
- import { Fragment as Fragment31, jsx as jsx215, jsxs as jsxs174 } from "react/jsx-runtime";
23397
+ import { Fragment as Fragment32, jsx as jsx215, jsxs as jsxs174 } from "react/jsx-runtime";
23374
23398
  var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
23375
23399
  var ROW_HEIGHT_MOBILE = "h-[68px]";
23376
23400
  function TableCardSkeleton({
@@ -23381,7 +23405,7 @@ function TableCardSkeleton({
23381
23405
  className,
23382
23406
  rowClassName
23383
23407
  }) {
23384
- return /* @__PURE__ */ jsx215(Fragment31, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs174(
23408
+ return /* @__PURE__ */ jsx215(Fragment32, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs174(
23385
23409
  "div",
23386
23410
  {
23387
23411
  className: cn(
@@ -23536,7 +23560,7 @@ function TableRow({
23536
23560
  }
23537
23561
 
23538
23562
  // src/components/ui/table/table.tsx
23539
- import { Fragment as Fragment32, jsx as jsx217, jsxs as jsxs176 } from "react/jsx-runtime";
23563
+ import { Fragment as Fragment33, jsx as jsx217, jsxs as jsxs176 } from "react/jsx-runtime";
23540
23564
  function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
23541
23565
  const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
23542
23566
  const result = [...columns];
@@ -23736,7 +23760,7 @@ function Table({
23736
23760
  hasActions: Boolean(rowActions) && rowActions.length > 0,
23737
23761
  hasChevron: Boolean(rowHref)
23738
23762
  }
23739
- ) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs176(Fragment32, { children: [
23763
+ ) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs176(Fragment33, { children: [
23740
23764
  data.map((item, index) => /* @__PURE__ */ jsx217(
23741
23765
  TableRow,
23742
23766
  {
@@ -24357,7 +24381,7 @@ function DataTableColumnFilter({
24357
24381
  }
24358
24382
 
24359
24383
  // src/components/ui/data-table/data-table-header.tsx
24360
- import { Fragment as Fragment33, jsx as jsx226, jsxs as jsxs183 } from "react/jsx-runtime";
24384
+ import { Fragment as Fragment34, jsx as jsx226, jsxs as jsxs183 } from "react/jsx-runtime";
24361
24385
  function DataTableHeader({
24362
24386
  className,
24363
24387
  stickyHeader,
@@ -24451,7 +24475,7 @@ function HeaderLabel({ header }) {
24451
24475
  if (typeof headerDef === "string") {
24452
24476
  return /* @__PURE__ */ jsx226("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
24453
24477
  }
24454
- return /* @__PURE__ */ jsx226(Fragment33, { children: flexRender(headerDef, header.getContext()) });
24478
+ return /* @__PURE__ */ jsx226(Fragment34, { children: flexRender(headerDef, header.getContext()) });
24455
24479
  }
24456
24480
  function SortIcon({ sorted }) {
24457
24481
  if (sorted === "asc") return /* @__PURE__ */ jsx226(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
@@ -24509,7 +24533,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
24509
24533
 
24510
24534
  // src/components/ui/data-table/data-table-skeleton.tsx
24511
24535
  init_cn();
24512
- import { Fragment as Fragment34, jsx as jsx228, jsxs as jsxs185 } from "react/jsx-runtime";
24536
+ import { Fragment as Fragment35, jsx as jsx228, jsxs as jsxs185 } from "react/jsx-runtime";
24513
24537
  var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
24514
24538
  var ROW_HEIGHT_MOBILE2 = "h-[68px]";
24515
24539
  function DataTableSkeleton({
@@ -24520,7 +24544,7 @@ function DataTableSkeleton({
24520
24544
  const table = useDataTableContext();
24521
24545
  const columns = table.getVisibleFlatColumns();
24522
24546
  const firstColumnId = columns[0]?.id;
24523
- return /* @__PURE__ */ jsx228(Fragment34, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs185(
24547
+ return /* @__PURE__ */ jsx228(Fragment35, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs185(
24524
24548
  "div",
24525
24549
  {
24526
24550
  className: cn(
@@ -24576,7 +24600,7 @@ function DataTableSkeleton({
24576
24600
  }
24577
24601
 
24578
24602
  // src/components/ui/data-table/data-table-row.tsx
24579
- import { Fragment as Fragment35, jsx as jsx229, jsxs as jsxs186 } from "react/jsx-runtime";
24603
+ import { Fragment as Fragment36, jsx as jsx229, jsxs as jsxs186 } from "react/jsx-runtime";
24580
24604
  function DataTableRowImpl({
24581
24605
  row,
24582
24606
  onClick,
@@ -24648,7 +24672,7 @@ function CellContent({ children }) {
24648
24672
  if (typeof children === "string" || typeof children === "number") {
24649
24673
  return /* @__PURE__ */ jsx229("span", { className: "text-h4 text-ods-text-primary truncate", children });
24650
24674
  }
24651
- return /* @__PURE__ */ jsx229(Fragment35, { children });
24675
+ return /* @__PURE__ */ jsx229(Fragment36, { children });
24652
24676
  }
24653
24677
 
24654
24678
  // src/components/ui/data-table/data-table-body.tsx
@@ -24723,7 +24747,7 @@ function DataTableBody({
24723
24747
 
24724
24748
  // src/components/ui/data-table/data-table-infinite-footer.tsx
24725
24749
  import { useEffect as useEffect35, useRef as useRef29 } from "react";
24726
- import { Fragment as Fragment36, jsx as jsx231, jsxs as jsxs188 } from "react/jsx-runtime";
24750
+ import { Fragment as Fragment37, jsx as jsx231, jsxs as jsxs188 } from "react/jsx-runtime";
24727
24751
  function DataTableInfiniteFooter({
24728
24752
  hasNextPage,
24729
24753
  isFetchingNextPage,
@@ -24747,7 +24771,7 @@ function DataTableInfiniteFooter({
24747
24771
  observer.observe(sentinel);
24748
24772
  return () => observer.disconnect();
24749
24773
  }, [hasNextPage, isFetchingNextPage, rootMargin]);
24750
- return /* @__PURE__ */ jsxs188(Fragment36, { children: [
24774
+ return /* @__PURE__ */ jsxs188(Fragment37, { children: [
24751
24775
  isFetchingNextPage && /* @__PURE__ */ jsx231(DataTableSkeleton, { rows: skeletonRows }),
24752
24776
  hasNextPage && /* @__PURE__ */ jsx231("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
24753
24777
  ] });
@@ -26253,7 +26277,7 @@ function FileUpload({
26253
26277
  import * as React87 from "react";
26254
26278
  import { Loader2 as Loader25 } from "lucide-react";
26255
26279
  init_cn();
26256
- import { Fragment as Fragment38, jsx as jsx239, jsxs as jsxs196 } from "react/jsx-runtime";
26280
+ import { Fragment as Fragment39, jsx as jsx239, jsxs as jsxs196 } from "react/jsx-runtime";
26257
26281
  var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
26258
26282
  function formatSize(bytes) {
26259
26283
  const mb = bytes / (1024 * 1024);
@@ -26379,7 +26403,7 @@ function ImageUploader({
26379
26403
  !interactive && "opacity-60",
26380
26404
  !hasImage && !interactive && "cursor-not-allowed"
26381
26405
  ),
26382
- children: hasImage ? /* @__PURE__ */ jsxs196(Fragment38, { children: [
26406
+ children: hasImage ? /* @__PURE__ */ jsxs196(Fragment39, { children: [
26383
26407
  /* @__PURE__ */ jsx239("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx239(
26384
26408
  "img",
26385
26409
  {
@@ -26416,7 +26440,7 @@ function ImageUploader({
26416
26440
  )
26417
26441
  ] }),
26418
26442
  loading && /* @__PURE__ */ jsx239("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
26419
- ] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs196(Fragment38, { children: [
26443
+ ] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs196(Fragment39, { children: [
26420
26444
  /* @__PURE__ */ jsx239("div", { className: "flex shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-card p-[var(--spacing-system-s)]", children: /* @__PURE__ */ jsx239(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
26421
26445
  /* @__PURE__ */ jsxs196("div", { className: "flex w-full flex-col items-center text-center", children: [
26422
26446
  /* @__PURE__ */ jsx239("p", { className: "text-h4 text-ods-text-primary", children: label }),
@@ -26758,7 +26782,7 @@ init_cn();
26758
26782
  // src/components/ui/ticket-note-card.tsx
26759
26783
  import * as React89 from "react";
26760
26784
  init_cn();
26761
- import { Fragment as Fragment39, jsx as jsx243, jsxs as jsxs200 } from "react/jsx-runtime";
26785
+ import { Fragment as Fragment40, jsx as jsx243, jsxs as jsxs200 } from "react/jsx-runtime";
26762
26786
  function TicketNoteCard({ note, onEdit, onDelete, className }) {
26763
26787
  const [isEditing, setIsEditing] = React89.useState(false);
26764
26788
  const [editText, setEditText] = React89.useState(note.text);
@@ -26832,7 +26856,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
26832
26856
  children: /* @__PURE__ */ jsx243(XmarkIcon, { className: "size-5" })
26833
26857
  }
26834
26858
  )
26835
- ] }) : /* @__PURE__ */ jsxs200(Fragment39, { children: [
26859
+ ] }) : /* @__PURE__ */ jsxs200(Fragment40, { children: [
26836
26860
  /* @__PURE__ */ jsx243("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
26837
26861
  /* @__PURE__ */ jsxs200("p", { className: "text-h6 text-ods-text-secondary truncate", children: [
26838
26862
  note.authorName,
@@ -26932,7 +26956,7 @@ function TicketNotesSection({
26932
26956
  }
26933
26957
 
26934
26958
  // src/components/ui/ticket-info-section.tsx
26935
- import { Fragment as Fragment40, jsx as jsx245, jsxs as jsxs202 } from "react/jsx-runtime";
26959
+ import { Fragment as Fragment41, jsx as jsx245, jsxs as jsxs202 } from "react/jsx-runtime";
26936
26960
  function InfoCell2({ value, label, icon, onClick }) {
26937
26961
  return /* @__PURE__ */ jsx245("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs202("div", { className: "flex flex-col justify-center", children: [
26938
26962
  /* @__PURE__ */ jsxs202("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
@@ -27041,7 +27065,7 @@ function TicketInfoSection({
27041
27065
  )
27042
27066
  ] })
27043
27067
  ] }),
27044
- expanded && /* @__PURE__ */ jsxs202(Fragment40, { children: [
27068
+ expanded && /* @__PURE__ */ jsxs202(Fragment41, { children: [
27045
27069
  createdAt && /* @__PURE__ */ jsx245("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx245(InfoCell2, { value: createdAt, label: "Created" }) }),
27046
27070
  /* @__PURE__ */ jsxs202("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
27047
27071
  description && /* @__PURE__ */ jsx245(SimpleMarkdownRenderer, { content: description }),
@@ -29922,7 +29946,7 @@ SelectButton.displayName = "SelectButton";
29922
29946
  import { useState as useState65 } from "react";
29923
29947
  import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles2 } from "lucide-react";
29924
29948
  import Image14 from "next/image";
29925
- import { Fragment as Fragment41, jsx as jsx269, jsxs as jsxs221 } from "react/jsx-runtime";
29949
+ import { Fragment as Fragment42, jsx as jsx269, jsxs as jsxs221 } from "react/jsx-runtime";
29926
29950
  function SEOEditorPreview({
29927
29951
  seoTitle,
29928
29952
  seoDescription,
@@ -29971,7 +29995,7 @@ function SEOEditorPreview({
29971
29995
  /* @__PURE__ */ jsxs221("div", { className: "space-y-2", children: [
29972
29996
  /* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
29973
29997
  /* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
29974
- aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs221(Fragment41, { children: [
29998
+ aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
29975
29999
  /* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
29976
30000
  /* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
29977
30001
  "AI Generated"
@@ -30002,7 +30026,7 @@ function SEOEditorPreview({
30002
30026
  /* @__PURE__ */ jsxs221("div", { className: "space-y-2", children: [
30003
30027
  /* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
30004
30028
  /* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
30005
- aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs221(Fragment41, { children: [
30029
+ aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
30006
30030
  /* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
30007
30031
  /* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
30008
30032
  "AI Generated"
@@ -30034,7 +30058,7 @@ function SEOEditorPreview({
30034
30058
  /* @__PURE__ */ jsxs221("div", { className: "space-y-2 flex flex-col h-full", children: [
30035
30059
  /* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
30036
30060
  /* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
30037
- aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs221(Fragment41, { children: [
30061
+ aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
30038
30062
  /* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
30039
30063
  /* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
30040
30064
  "AI Generated"
@@ -30108,7 +30132,7 @@ function SEOEditorPreview({
30108
30132
  {
30109
30133
  className: "h-full min-h-[280px] border-2 border-dashed border-ods-border rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-ods-accent transition-colors bg-ods-bg-hover",
30110
30134
  onClick: () => onOgImageUpload && fileInputRef?.click(),
30111
- children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs221(Fragment41, { children: [
30135
+ children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs221(Fragment42, { children: [
30112
30136
  /* @__PURE__ */ jsx269(Upload5, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
30113
30137
  /* @__PURE__ */ jsx269("span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
30114
30138
  ] })
@@ -32230,7 +32254,7 @@ var DropdownMenuShortcut = ({
32230
32254
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
32231
32255
 
32232
32256
  // src/components/features/policy-configuration-panel.tsx
32233
- import { Fragment as Fragment42, jsx as jsx293, jsxs as jsxs240 } from "react/jsx-runtime";
32257
+ import { Fragment as Fragment43, jsx as jsx293, jsxs as jsxs240 } from "react/jsx-runtime";
32234
32258
  var approvalLevelOptions = [
32235
32259
  { value: "ALLOW", label: "Allow" },
32236
32260
  { value: "ASK_USER", label: "Ask User" },
@@ -32292,7 +32316,7 @@ var CategorySection = ({
32292
32316
  onPolicyPermissionChange
32293
32317
  }) => {
32294
32318
  const { contentRef, height } = useAnimatedHeight(category.isExpanded);
32295
- return /* @__PURE__ */ jsxs240(Fragment42, { children: [
32319
+ return /* @__PURE__ */ jsxs240(Fragment43, { children: [
32296
32320
  /* @__PURE__ */ jsxs240(
32297
32321
  "div",
32298
32322
  {
@@ -32433,7 +32457,7 @@ init_button2();
32433
32457
  init_cn();
32434
32458
  import { getCountries as getCountries2 } from "libphonenumber-js";
32435
32459
  import { useEffect as useEffect49, useState as useState70 } from "react";
32436
- import { Fragment as Fragment43, jsx as jsx294, jsxs as jsxs241 } from "react/jsx-runtime";
32460
+ import { Fragment as Fragment44, jsx as jsx294, jsxs as jsxs241 } from "react/jsx-runtime";
32437
32461
  function WaitlistForm({
32438
32462
  id = "waitlist-form",
32439
32463
  className,
@@ -32575,7 +32599,7 @@ function WaitlistForm({
32575
32599
  error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
32576
32600
  disabled: isSubmitting,
32577
32601
  label: smsCheckboxLabel,
32578
- description: /* @__PURE__ */ jsxs241(Fragment43, { children: [
32602
+ description: /* @__PURE__ */ jsxs241(Fragment44, { children: [
32579
32603
  consentText,
32580
32604
  " View our ",
32581
32605
  /* @__PURE__ */ jsx294(
@@ -32744,7 +32768,7 @@ import { CSS } from "@dnd-kit/utilities";
32744
32768
  import Link11 from "next/link";
32745
32769
  import * as React99 from "react";
32746
32770
  init_cn();
32747
- import { Fragment as Fragment44, jsx as jsx296, jsxs as jsxs243 } from "react/jsx-runtime";
32771
+ import { Fragment as Fragment45, jsx as jsx296, jsxs as jsxs243 } from "react/jsx-runtime";
32748
32772
  var PRIORITY_COLOR_CLASS = {
32749
32773
  low: "text-ods-text-secondary",
32750
32774
  medium: "text-ods-info",
@@ -32809,7 +32833,7 @@ function TicketCard({
32809
32833
  ] })
32810
32834
  ] }) : null
32811
32835
  ] }) : null;
32812
- const body = /* @__PURE__ */ jsxs243(Fragment44, { children: [
32836
+ const body = /* @__PURE__ */ jsxs243(Fragment45, { children: [
32813
32837
  /* @__PURE__ */ jsxs243("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
32814
32838
  /* @__PURE__ */ jsxs243("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
32815
32839
  /* @__PURE__ */ jsx296("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
@@ -32903,7 +32927,7 @@ var TicketCardSkeleton = React100.forwardRef(
32903
32927
  TicketCardSkeleton.displayName = "TicketCardSkeleton";
32904
32928
 
32905
32929
  // src/components/features/board/board-column.tsx
32906
- import { Fragment as Fragment45, jsx as jsx298, jsxs as jsxs245 } from "react/jsx-runtime";
32930
+ import { Fragment as Fragment46, jsx as jsx298, jsxs as jsxs245 } from "react/jsx-runtime";
32907
32931
  function BoardColumn({
32908
32932
  column,
32909
32933
  collapsed = false,
@@ -32938,7 +32962,7 @@ function BoardColumn({
32938
32962
  onAddTicket: !collapsed && onAddTicket ? () => onAddTicket(column.id) : void 0
32939
32963
  }
32940
32964
  ),
32941
- !collapsed && /* @__PURE__ */ jsxs245(Fragment45, { children: [
32965
+ !collapsed && /* @__PURE__ */ jsxs245(Fragment46, { children: [
32942
32966
  /* @__PURE__ */ jsx298("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
32943
32967
  /* @__PURE__ */ jsx298(
32944
32968
  ColumnBody,
@@ -33026,7 +33050,7 @@ function SkeletonStack({ count = 4 }) {
33026
33050
  () => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
33027
33051
  [count]
33028
33052
  );
33029
- return /* @__PURE__ */ jsx298(Fragment45, { children: keys.map((k) => /* @__PURE__ */ jsx298(TicketCardSkeleton, {}, k)) });
33053
+ return /* @__PURE__ */ jsx298(Fragment46, { children: keys.map((k) => /* @__PURE__ */ jsx298(TicketCardSkeleton, {}, k)) });
33030
33054
  }
33031
33055
  function EmptyState3() {
33032
33056
  return /* @__PURE__ */ jsxs245("div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-lf)] p-[var(--spacing-system-lf)] text-center text-ods-text-secondary", children: [
@@ -33932,4 +33956,4 @@ export {
33932
33956
  TMCG_SOCIAL_PLATFORMS,
33933
33957
  assets
33934
33958
  };
33935
- //# sourceMappingURL=chunk-6RHO5QK3.js.map
33959
+ //# sourceMappingURL=chunk-QAXTP73H.js.map