@flamingo-stack/openframe-frontend-core 0.0.255 → 0.0.256

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 (147) hide show
  1. package/dist/{chunk-GYKDSPC4.cjs → chunk-3DC6MHW6.cjs} +31 -31
  2. package/dist/{chunk-GYKDSPC4.cjs.map → chunk-3DC6MHW6.cjs.map} +1 -1
  3. package/dist/{chunk-EFIEQ4XD.js → chunk-46DHPQY6.js} +4 -4
  4. package/dist/{chunk-RCW2IL4K.cjs → chunk-6F5CGBVT.cjs} +692 -728
  5. package/dist/chunk-6F5CGBVT.cjs.map +1 -0
  6. package/dist/{chunk-HMFBMVJC.js → chunk-6GBA6YJN.js} +2 -2
  7. package/dist/{chunk-4HHYUEMD.js → chunk-7RLV3U5C.js} +2 -2
  8. package/dist/{chunk-SGJBUL2Y.cjs → chunk-7VMEOFEA.cjs} +45 -2
  9. package/dist/chunk-7VMEOFEA.cjs.map +1 -0
  10. package/dist/{chunk-UGFSMA7K.cjs → chunk-CMWRZECW.cjs} +77 -42
  11. package/dist/chunk-CMWRZECW.cjs.map +1 -0
  12. package/dist/{chunk-D524LJYO.js → chunk-HCMVLEC3.js} +4 -4
  13. package/dist/{chunk-LZL6P7SN.cjs → chunk-IG4QRNYZ.cjs} +10 -10
  14. package/dist/{chunk-LZL6P7SN.cjs.map → chunk-IG4QRNYZ.cjs.map} +1 -1
  15. package/dist/{chunk-CVGZJBHT.cjs → chunk-ISALYOFX.cjs} +19 -19
  16. package/dist/{chunk-CVGZJBHT.cjs.map → chunk-ISALYOFX.cjs.map} +1 -1
  17. package/dist/{chunk-MKVKVJQQ.js → chunk-J3QMPOS6.js} +5 -4
  18. package/dist/chunk-J3QMPOS6.js.map +1 -0
  19. package/dist/{chunk-LHR7MBUY.js → chunk-JK25REDL.js} +48 -13
  20. package/dist/chunk-JK25REDL.js.map +1 -0
  21. package/dist/{chunk-Z4IBEIWD.cjs → chunk-LGLPNWS6.cjs} +3 -3
  22. package/dist/{chunk-Z4IBEIWD.cjs.map → chunk-LGLPNWS6.cjs.map} +1 -1
  23. package/dist/{chunk-VAUI3CND.js → chunk-NR535XIY.js} +44 -1
  24. package/dist/chunk-NR535XIY.js.map +1 -0
  25. package/dist/{chunk-2FCXJTOV.js → chunk-QXSRQVRO.js} +3 -1
  26. package/dist/chunk-QXSRQVRO.js.map +1 -0
  27. package/dist/{chunk-6TB24AUH.js → chunk-S7IX7YU4.js} +154 -190
  28. package/dist/chunk-S7IX7YU4.js.map +1 -0
  29. package/dist/{chunk-6LK4VEXE.cjs → chunk-TSZBJVYK.cjs} +35 -31
  30. package/dist/chunk-TSZBJVYK.cjs.map +1 -0
  31. package/dist/{chunk-TU26IZPO.cjs → chunk-U6UNAC32.cjs} +3 -1
  32. package/dist/chunk-U6UNAC32.cjs.map +1 -0
  33. package/dist/{chunk-265KKBV2.js → chunk-V4IIBNTA.js} +3 -3
  34. package/dist/chunk-V4IIBNTA.js.map +1 -0
  35. package/dist/{chunk-2FAX6LZB.cjs → chunk-V4Q5PIBV.cjs} +30 -30
  36. package/dist/{chunk-2FAX6LZB.cjs.map → chunk-V4Q5PIBV.cjs.map} +1 -1
  37. package/dist/{chunk-LKI3YCAX.js → chunk-V5L4D454.js} +10 -6
  38. package/dist/chunk-V5L4D454.js.map +1 -0
  39. package/dist/{chunk-3TDLFCCS.cjs → chunk-ZJP2BB3E.cjs} +6 -5
  40. package/dist/chunk-ZJP2BB3E.cjs.map +1 -0
  41. package/dist/components/chat/entity-cards/entity-author-card.d.ts +13 -9
  42. package/dist/components/chat/entity-cards/entity-author-card.d.ts.map +1 -1
  43. package/dist/components/chat/index.cjs +9 -7
  44. package/dist/components/chat/index.cjs.map +1 -1
  45. package/dist/components/chat/index.d.ts +1 -0
  46. package/dist/components/chat/index.d.ts.map +1 -1
  47. package/dist/components/chat/index.js +8 -6
  48. package/dist/components/chat/types/entities/onboarding-guide.d.ts +2 -7
  49. package/dist/components/chat/types/entities/onboarding-guide.d.ts.map +1 -1
  50. package/dist/components/contact/index.cjs +8 -8
  51. package/dist/components/contact/index.js +7 -7
  52. package/dist/components/faq/faq-section.d.ts.map +1 -1
  53. package/dist/components/faq/index.cjs +3 -3
  54. package/dist/components/faq/index.js +2 -2
  55. package/dist/components/features/index.cjs +7 -7
  56. package/dist/components/features/index.js +6 -6
  57. package/dist/components/icons/index.cjs +2 -2
  58. package/dist/components/icons/index.js +1 -1
  59. package/dist/components/index.cjs +166 -156
  60. package/dist/components/index.cjs.map +1 -1
  61. package/dist/components/index.js +54 -44
  62. package/dist/components/index.js.map +1 -1
  63. package/dist/components/navigation/index.cjs +7 -7
  64. package/dist/components/navigation/index.js +6 -6
  65. package/dist/components/onboarding-guides/index.cjs +25 -23
  66. package/dist/components/onboarding-guides/index.cjs.map +1 -1
  67. package/dist/components/onboarding-guides/index.js +6 -4
  68. package/dist/components/onboarding-guides/index.js.map +1 -1
  69. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +4 -1
  70. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  71. package/dist/components/related-content/index.cjs +10 -8
  72. package/dist/components/related-content/index.cjs.map +1 -1
  73. package/dist/components/related-content/index.d.ts +1 -1
  74. package/dist/components/related-content/index.d.ts.map +1 -1
  75. package/dist/components/related-content/index.js +9 -7
  76. package/dist/components/related-content/related-content-section.d.ts +16 -1
  77. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  78. package/dist/components/shared/product-release/release-detail-page.d.ts +4 -1
  79. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  80. package/dist/components/social-icon-row.d.ts +17 -4
  81. package/dist/components/social-icon-row.d.ts.map +1 -1
  82. package/dist/components/tickets/index.cjs +80 -80
  83. package/dist/components/tickets/index.js +8 -8
  84. package/dist/components/ui/button/button.d.ts.map +1 -1
  85. package/dist/components/ui/file-manager/index.cjs +20 -20
  86. package/dist/components/ui/file-manager/index.js +1 -1
  87. package/dist/components/ui/index.cjs +9 -7
  88. package/dist/components/ui/index.cjs.map +1 -1
  89. package/dist/components/ui/index.js +8 -6
  90. package/dist/hooks/index.cjs +3 -3
  91. package/dist/hooks/index.js +2 -2
  92. package/dist/index.cjs +12 -8
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.js +16 -12
  95. package/dist/types/blog.d.ts +7 -0
  96. package/dist/types/blog.d.ts.map +1 -1
  97. package/dist/types/entity-author.d.ts +18 -0
  98. package/dist/types/entity-author.d.ts.map +1 -0
  99. package/dist/types/index.cjs.map +1 -1
  100. package/dist/types/index.d.ts +1 -0
  101. package/dist/types/index.d.ts.map +1 -1
  102. package/dist/types/index.js.map +1 -1
  103. package/dist/types/product-release.d.ts +2 -7
  104. package/dist/types/product-release.d.ts.map +1 -1
  105. package/dist/utils/common.d.ts +9 -0
  106. package/dist/utils/common.d.ts.map +1 -1
  107. package/dist/utils/index.cjs +6 -2
  108. package/dist/utils/index.cjs.map +1 -1
  109. package/dist/utils/index.d.ts +1 -1
  110. package/dist/utils/index.d.ts.map +1 -1
  111. package/dist/utils/index.js +6 -3
  112. package/dist/utils/index.js.map +1 -1
  113. package/package.json +1 -1
  114. package/src/components/chat/entity-cards/entity-author-card.tsx +30 -11
  115. package/src/components/chat/index.ts +1 -0
  116. package/src/components/chat/types/entities/onboarding-guide.ts +3 -7
  117. package/src/components/faq/faq-section.tsx +4 -1
  118. package/src/components/icons/x-logo.tsx +2 -2
  119. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +5 -0
  120. package/src/components/related-content/index.ts +1 -0
  121. package/src/components/related-content/related-content-section.tsx +84 -8
  122. package/src/components/shared/product-release/release-detail-page.tsx +18 -21
  123. package/src/components/social-icon-row.tsx +51 -22
  124. package/src/components/ui/button/button.tsx +7 -0
  125. package/src/types/blog.ts +9 -1
  126. package/src/types/entity-author.ts +17 -0
  127. package/src/types/index.ts +1 -0
  128. package/src/types/product-release.ts +2 -7
  129. package/src/utils/common.ts +12 -0
  130. package/src/utils/index.ts +1 -1
  131. package/dist/chunk-265KKBV2.js.map +0 -1
  132. package/dist/chunk-2FCXJTOV.js.map +0 -1
  133. package/dist/chunk-3TDLFCCS.cjs.map +0 -1
  134. package/dist/chunk-6LK4VEXE.cjs.map +0 -1
  135. package/dist/chunk-6TB24AUH.js.map +0 -1
  136. package/dist/chunk-LHR7MBUY.js.map +0 -1
  137. package/dist/chunk-LKI3YCAX.js.map +0 -1
  138. package/dist/chunk-MKVKVJQQ.js.map +0 -1
  139. package/dist/chunk-RCW2IL4K.cjs.map +0 -1
  140. package/dist/chunk-SGJBUL2Y.cjs.map +0 -1
  141. package/dist/chunk-TU26IZPO.cjs.map +0 -1
  142. package/dist/chunk-UGFSMA7K.cjs.map +0 -1
  143. package/dist/chunk-VAUI3CND.js.map +0 -1
  144. /package/dist/{chunk-EFIEQ4XD.js.map → chunk-46DHPQY6.js.map} +0 -0
  145. /package/dist/{chunk-HMFBMVJC.js.map → chunk-6GBA6YJN.js.map} +0 -0
  146. /package/dist/{chunk-4HHYUEMD.js.map → chunk-7RLV3U5C.js.map} +0 -0
  147. /package/dist/{chunk-D524LJYO.js.map → chunk-HCMVLEC3.js.map} +0 -0
@@ -14,7 +14,10 @@ import {
14
14
  useMdUp,
15
15
  useOnboardingState,
16
16
  useToast
17
- } from "./chunk-HMFBMVJC.js";
17
+ } from "./chunk-6GBA6YJN.js";
18
+ import {
19
+ cn as cn2
20
+ } from "./chunk-NR535XIY.js";
18
21
  import {
19
22
  Checkbox,
20
23
  FieldWrapper,
@@ -78,7 +81,7 @@ import {
78
81
  useControllableState,
79
82
  useEntityCardLink,
80
83
  useEntityCardPlaceholder
81
- } from "./chunk-LKI3YCAX.js";
84
+ } from "./chunk-V5L4D454.js";
82
85
  import {
83
86
  useAutoLimitTags,
84
87
  useDebounce
@@ -109,7 +112,7 @@ import {
109
112
  init_button,
110
113
  init_button2,
111
114
  usePortalContainer
112
- } from "./chunk-2FCXJTOV.js";
115
+ } from "./chunk-QXSRQVRO.js";
113
116
  import {
114
117
  init_next_link,
115
118
  next_link_default
@@ -149,7 +152,7 @@ import {
149
152
  WindowsIcon,
150
153
  XLogo,
151
154
  YouTubeIcon
152
- } from "./chunk-265KKBV2.js";
155
+ } from "./chunk-V4IIBNTA.js";
153
156
  import {
154
157
  cn,
155
158
  init_cn,
@@ -3332,6 +3335,99 @@ var ChatQuickAction = React5.forwardRef(
3332
3335
  );
3333
3336
  ChatQuickAction.displayName = "ChatQuickAction";
3334
3337
 
3338
+ // src/components/chat/chat-quick-action-row.tsx
3339
+ init_cn();
3340
+ import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
3341
+ function ChipButton({ chip }) {
3342
+ return /* @__PURE__ */ jsx25(
3343
+ "button",
3344
+ {
3345
+ type: "button",
3346
+ onClick: chip.onSelect,
3347
+ className: "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
3348
+ children: /* @__PURE__ */ jsx25(Tag, { variant: chip.variant ?? "outline", icon: chip.icon, label: chip.label })
3349
+ }
3350
+ );
3351
+ }
3352
+ function ChatQuickActionRow({
3353
+ leading,
3354
+ chips,
3355
+ className
3356
+ }) {
3357
+ const auto = useAutoLimitTags({
3358
+ count: chips.length,
3359
+ reserveInputWidth: false
3360
+ });
3361
+ const visibleChips = chips.slice(0, auto.visibleCount);
3362
+ const hiddenChips = chips.slice(auto.visibleCount);
3363
+ if (!leading && chips.length === 0) return null;
3364
+ return /* @__PURE__ */ jsxs21(
3365
+ "div",
3366
+ {
3367
+ className: cn("relative flex shrink-0 items-center gap-1", className),
3368
+ children: [
3369
+ leading,
3370
+ chips.length > 0 && // Measured zone: `flex-1 min-w-0 overflow-hidden` so it claims the width
3371
+ // left by the pinned `leading` slot and clips anything past the fit.
3372
+ /* @__PURE__ */ jsxs21(
3373
+ "div",
3374
+ {
3375
+ ref: auto.middleRef,
3376
+ className: "flex flex-1 min-w-0 items-center gap-1 overflow-hidden",
3377
+ children: [
3378
+ visibleChips.map((chip) => /* @__PURE__ */ jsx25(ChipButton, { chip }, chip.id)),
3379
+ hiddenChips.length > 0 && /* @__PURE__ */ jsx25(
3380
+ ActionsMenuDropdown,
3381
+ {
3382
+ triggerAriaLabel: "More quick actions",
3383
+ onCloseAutoFocus: (e) => e.preventDefault(),
3384
+ groups: [
3385
+ {
3386
+ items: hiddenChips.map((chip) => ({
3387
+ id: chip.id,
3388
+ label: chip.label,
3389
+ icon: chip.icon,
3390
+ onClick: chip.onSelect
3391
+ }))
3392
+ }
3393
+ ],
3394
+ customTrigger: /* @__PURE__ */ jsx25(
3395
+ "button",
3396
+ {
3397
+ ref: auto.badgeRef,
3398
+ type: "button",
3399
+ "aria-label": "More quick actions",
3400
+ className: "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
3401
+ children: /* @__PURE__ */ jsx25(Tag, { variant: "outline", label: /* @__PURE__ */ jsx25(Ellipsis01Icon, { size: 16 }) })
3402
+ }
3403
+ )
3404
+ }
3405
+ )
3406
+ ]
3407
+ }
3408
+ ),
3409
+ /* @__PURE__ */ jsx25(
3410
+ "div",
3411
+ {
3412
+ ref: auto.measureRef,
3413
+ "aria-hidden": true,
3414
+ className: "pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-1",
3415
+ children: chips.map((chip) => /* @__PURE__ */ jsx25(
3416
+ Tag,
3417
+ {
3418
+ variant: chip.variant ?? "outline",
3419
+ icon: chip.icon,
3420
+ label: chip.label
3421
+ },
3422
+ `measure-${chip.id}`
3423
+ ))
3424
+ }
3425
+ )
3426
+ ]
3427
+ }
3428
+ );
3429
+ }
3430
+
3335
3431
  // src/components/chat/chat-ticket-list.tsx
3336
3432
  init_cn();
3337
3433
  import * as React7 from "react";
@@ -3340,7 +3436,7 @@ import * as React7 from "react";
3340
3436
  init_cn();
3341
3437
  import * as React6 from "react";
3342
3438
  import { ChevronRight as ChevronRight2 } from "lucide-react";
3343
- import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
3439
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
3344
3440
  var ChatTicketItem = React6.forwardRef(
3345
3441
  ({ className, ticket, onClick, ...props }, ref) => {
3346
3442
  const statusTagProps = resolveStatusTagProps({
@@ -3351,7 +3447,7 @@ var ChatTicketItem = React6.forwardRef(
3351
3447
  });
3352
3448
  const isResolved = ticket.statusKind === "RESOLVED" || resolveTicketStatus(ticket.status) === "RESOLVED";
3353
3449
  const subtitle = [ticket.ticketNumber, ticket.category, ticket.timeAgo].filter(Boolean).join(" \u2022 ");
3354
- return /* @__PURE__ */ jsxs21(
3450
+ return /* @__PURE__ */ jsxs22(
3355
3451
  "button",
3356
3452
  {
3357
3453
  ref,
@@ -3372,8 +3468,8 @@ var ChatTicketItem = React6.forwardRef(
3372
3468
  ),
3373
3469
  ...props,
3374
3470
  children: [
3375
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-col justify-center flex-1 min-w-0 text-left", children: [
3376
- /* @__PURE__ */ jsx25(
3471
+ /* @__PURE__ */ jsxs22("div", { className: "flex flex-col justify-center flex-1 min-w-0 text-left", children: [
3472
+ /* @__PURE__ */ jsx26(
3377
3473
  "p",
3378
3474
  {
3379
3475
  className: cn(
@@ -3384,19 +3480,19 @@ var ChatTicketItem = React6.forwardRef(
3384
3480
  children: ticket.title
3385
3481
  }
3386
3482
  ),
3387
- subtitle && /* @__PURE__ */ jsx25("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
3483
+ subtitle && /* @__PURE__ */ jsx26("p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
3388
3484
  ] }),
3389
- ticket.linkedTaskLabel && /* @__PURE__ */ jsx25(
3485
+ ticket.linkedTaskLabel && /* @__PURE__ */ jsx26(
3390
3486
  Tag,
3391
3487
  {
3392
3488
  label: ticket.linkedTaskLabel,
3393
3489
  variant: "outline",
3394
- icon: /* @__PURE__ */ jsx25(WrenchIcon, { size: 14, color: "var(--ods-text-secondary)" }),
3490
+ icon: /* @__PURE__ */ jsx26(WrenchIcon, { size: 14, color: "var(--ods-text-secondary)" }),
3395
3491
  className: "shrink-0 hidden sm:inline-flex"
3396
3492
  }
3397
3493
  ),
3398
- (statusTagProps.status || statusTagProps.label) && /* @__PURE__ */ jsx25(TicketStatusTag, { ...statusTagProps }),
3399
- /* @__PURE__ */ jsx25("div", { className: "flex items-center justify-center shrink-0 size-12 rounded-md bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx25(ChevronRight2, { className: "size-6 text-ods-text-secondary" }) })
3494
+ (statusTagProps.status || statusTagProps.label) && /* @__PURE__ */ jsx26(TicketStatusTag, { ...statusTagProps }),
3495
+ /* @__PURE__ */ jsx26("div", { className: "flex items-center justify-center shrink-0 size-12 rounded-md bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx26(ChevronRight2, { className: "size-6 text-ods-text-secondary" }) })
3400
3496
  ]
3401
3497
  }
3402
3498
  );
@@ -3405,7 +3501,7 @@ var ChatTicketItem = React6.forwardRef(
3405
3501
  ChatTicketItem.displayName = "ChatTicketItem";
3406
3502
 
3407
3503
  // src/components/chat/chat-ticket-list.tsx
3408
- import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
3504
+ import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
3409
3505
  function getMask(top, bottom) {
3410
3506
  if (top && bottom) return "linear-gradient(to bottom, transparent, black 64px, black calc(100% - 64px), transparent)";
3411
3507
  if (top) return "linear-gradient(to bottom, transparent, black 64px)";
@@ -3429,9 +3525,9 @@ var ChatTicketList = React7.forwardRef(
3429
3525
  }, [ticketCount, updateFade]);
3430
3526
  if (tickets.length === 0) return null;
3431
3527
  const mask = getMask(fadeTop, fadeBottom);
3432
- return /* @__PURE__ */ jsxs22("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
3433
- /* @__PURE__ */ jsx26("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
3434
- /* @__PURE__ */ jsx26(
3528
+ return /* @__PURE__ */ jsxs23("div", { ref, className: cn("flex flex-col gap-2 min-h-0", className), ...props, children: [
3529
+ /* @__PURE__ */ jsx27("p", { className: "text-h5 text-ods-text-secondary shrink-0", children: "Your Chats:" }),
3530
+ /* @__PURE__ */ jsx27(
3435
3531
  "div",
3436
3532
  {
3437
3533
  className: cn(
@@ -3439,14 +3535,14 @@ var ChatTicketList = React7.forwardRef(
3439
3535
  !fadeTop && "border-t rounded-t-md",
3440
3536
  !fadeBottom && "border-b rounded-b-md"
3441
3537
  ),
3442
- children: /* @__PURE__ */ jsx26(
3538
+ children: /* @__PURE__ */ jsx27(
3443
3539
  "div",
3444
3540
  {
3445
3541
  ref: scrollRef,
3446
3542
  className: "overflow-y-auto h-full",
3447
3543
  onScroll: updateFade,
3448
3544
  style: mask !== "none" ? { maskImage: mask, WebkitMaskImage: mask } : void 0,
3449
- children: tickets.map((ticket) => /* @__PURE__ */ jsx26(
3545
+ children: tickets.map((ticket) => /* @__PURE__ */ jsx27(
3450
3546
  ChatTicketItem,
3451
3547
  {
3452
3548
  ticket,
@@ -3465,7 +3561,7 @@ ChatTicketList.displayName = "ChatTicketList";
3465
3561
 
3466
3562
  // src/components/chat/mingo-onboarding-card-skeleton.tsx
3467
3563
  init_cn();
3468
- import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
3564
+ import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
3469
3565
  function MingoOnboardingCardSkeleton({
3470
3566
  titleWidth = "w-32",
3471
3567
  slashWidth = "w-20",
@@ -3474,25 +3570,25 @@ function MingoOnboardingCardSkeleton({
3474
3570
  className
3475
3571
  }) {
3476
3572
  const hasChips = chipWidths.length > 0;
3477
- return /* @__PURE__ */ jsx27(
3573
+ return /* @__PURE__ */ jsx28(
3478
3574
  "div",
3479
3575
  {
3480
3576
  className: cn(
3481
3577
  "flex w-full items-start p-[var(--spacing-system-s)] bg-ods-card border-b border-ods-border last:border-b-0",
3482
3578
  className
3483
3579
  ),
3484
- children: /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
3485
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
3486
- /* @__PURE__ */ jsx27(Skeleton, { className: "size-4 shrink-0 rounded-sm" }),
3487
- /* @__PURE__ */ jsx27(Skeleton, { className: cn("h-3.5 rounded-sm", titleWidth) }),
3488
- /* @__PURE__ */ jsx27("span", { className: "flex-1" }),
3489
- /* @__PURE__ */ jsx27(Skeleton, { className: cn("h-3.5 rounded-sm shrink-0", slashWidth) })
3580
+ children: /* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] w-full", children: [
3581
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] w-full", children: [
3582
+ /* @__PURE__ */ jsx28(Skeleton, { className: "size-4 shrink-0 rounded-sm" }),
3583
+ /* @__PURE__ */ jsx28(Skeleton, { className: cn("h-3.5 rounded-sm", titleWidth) }),
3584
+ /* @__PURE__ */ jsx28("span", { className: "flex-1" }),
3585
+ /* @__PURE__ */ jsx28(Skeleton, { className: cn("h-3.5 rounded-sm shrink-0", slashWidth) })
3490
3586
  ] }),
3491
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
3492
- /* @__PURE__ */ jsx27(Skeleton, { className: "h-3.5 w-full rounded-sm" }),
3493
- descriptionLines === 2 ? /* @__PURE__ */ jsx27(Skeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
3587
+ /* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
3588
+ /* @__PURE__ */ jsx28(Skeleton, { className: "h-3.5 w-full rounded-sm" }),
3589
+ descriptionLines === 2 ? /* @__PURE__ */ jsx28(Skeleton, { className: "h-3.5 w-[70%] rounded-sm" }) : null
3494
3590
  ] }),
3495
- hasChips ? /* @__PURE__ */ jsx27("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ jsx27(Skeleton, { className: cn("h-7 rounded-md", w) }, i)) }) : null
3591
+ hasChips ? /* @__PURE__ */ jsx28("div", { className: "flex flex-wrap items-center gap-[var(--spacing-system-xxs)] mt-[var(--spacing-system-xs)]", children: chipWidths.map((w, i) => /* @__PURE__ */ jsx28(Skeleton, { className: cn("h-7 rounded-md", w) }, i)) }) : null
3496
3592
  ] })
3497
3593
  }
3498
3594
  );
@@ -3501,7 +3597,7 @@ function MingoOnboardingListSkeleton({
3501
3597
  rows = 6,
3502
3598
  className
3503
3599
  }) {
3504
- return /* @__PURE__ */ jsx27(
3600
+ return /* @__PURE__ */ jsx28(
3505
3601
  "div",
3506
3602
  {
3507
3603
  role: "status",
@@ -3513,7 +3609,7 @@ function MingoOnboardingListSkeleton({
3513
3609
  ),
3514
3610
  children: Array.from({ length: rows }).map((_, i) => {
3515
3611
  const variant = ROW_VARIANTS[i % ROW_VARIANTS.length];
3516
- return /* @__PURE__ */ jsx27(
3612
+ return /* @__PURE__ */ jsx28(
3517
3613
  MingoOnboardingCardSkeleton,
3518
3614
  {
3519
3615
  titleWidth: variant.titleWidth,
@@ -3543,7 +3639,7 @@ import * as React9 from "react";
3543
3639
  init_cn();
3544
3640
  import * as React8 from "react";
3545
3641
  init_button2();
3546
- import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
3642
+ import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
3547
3643
  function dialogTime(d) {
3548
3644
  if (!d.timestamp) return null;
3549
3645
  const t = typeof d.timestamp === "string" ? Date.parse(d.timestamp) : d.timestamp.getTime();
@@ -3595,7 +3691,7 @@ function MingoChatHistoryRow({
3595
3691
  onClick: () => onRequestArchive(dialog)
3596
3692
  }
3597
3693
  ].filter(Boolean);
3598
- return /* @__PURE__ */ jsxs24(
3694
+ return /* @__PURE__ */ jsxs25(
3599
3695
  "div",
3600
3696
  {
3601
3697
  className: cn(
@@ -3604,7 +3700,7 @@ function MingoChatHistoryRow({
3604
3700
  isActive && "bg-ods-bg-hover"
3605
3701
  ),
3606
3702
  children: [
3607
- /* @__PURE__ */ jsxs24(
3703
+ /* @__PURE__ */ jsxs25(
3608
3704
  "div",
3609
3705
  {
3610
3706
  role: "button",
@@ -3618,8 +3714,8 @@ function MingoChatHistoryRow({
3618
3714
  },
3619
3715
  className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-s)] cursor-pointer focus:outline-none focus-visible:bg-ods-bg-hover",
3620
3716
  children: [
3621
- unread > 0 ? /* @__PURE__ */ jsx28("span", { className: "flex h-8 min-w-8 shrink-0 items-center justify-center rounded-md bg-ods-accent px-[var(--spacing-system-xsf)] text-h5 text-ods-text-on-accent", children: unread > 99 ? "99+" : unread }) : null,
3622
- /* @__PURE__ */ jsx28(
3717
+ unread > 0 ? /* @__PURE__ */ jsx29("span", { className: "flex h-8 min-w-8 shrink-0 items-center justify-center rounded-md bg-ods-accent px-[var(--spacing-system-xsf)] text-h5 text-ods-text-on-accent", children: unread > 99 ? "99+" : unread }) : null,
3718
+ /* @__PURE__ */ jsx29(
3623
3719
  "span",
3624
3720
  {
3625
3721
  className: "min-w-0 flex-1 truncate text-h4 text-ods-text-primary",
@@ -3635,7 +3731,7 @@ function MingoChatHistoryRow({
3635
3731
  // right edge, free of the content's left padding. Revealed on row
3636
3732
  // hover/focus; kept visible while its menu is open. Hidden on mobile —
3637
3733
  // it's a hover affordance (no hover on touch).
3638
- /* @__PURE__ */ jsx28(
3734
+ /* @__PURE__ */ jsx29(
3639
3735
  "span",
3640
3736
  {
3641
3737
  onClick: (e) => e.stopPropagation(),
@@ -3647,7 +3743,7 @@ function MingoChatHistoryRow({
3647
3743
  "self-stretch shrink-0 transition-opacity max-md:hidden",
3648
3744
  menuOpen ? "opacity-100" : "opacity-0 group-hover/row:opacity-100 focus-within:opacity-100"
3649
3745
  ),
3650
- children: /* @__PURE__ */ jsx28(
3746
+ children: /* @__PURE__ */ jsx29(
3651
3747
  ActionsMenuDropdown,
3652
3748
  {
3653
3749
  triggerAriaLabel: "Chat actions",
@@ -3655,14 +3751,14 @@ function MingoChatHistoryRow({
3655
3751
  open: menuOpen,
3656
3752
  onOpenChange: setMenuOpen,
3657
3753
  onCloseAutoFocus: (e) => e.preventDefault(),
3658
- customTrigger: /* @__PURE__ */ jsx28(
3754
+ customTrigger: /* @__PURE__ */ jsx29(
3659
3755
  Button,
3660
3756
  {
3661
3757
  variant: "transparent",
3662
3758
  size: "icon",
3663
3759
  "aria-label": "Chat actions",
3664
3760
  className: "h-full md:h-full rounded-none p-0 text-ods-text-secondary hover:text-ods-text-primary",
3665
- children: /* @__PURE__ */ jsx28(Ellipsis01Icon, {})
3761
+ children: /* @__PURE__ */ jsx29(Ellipsis01Icon, {})
3666
3762
  }
3667
3763
  )
3668
3764
  }
@@ -3679,7 +3775,7 @@ function MingoChatHistorySkeleton({ className }) {
3679
3775
  { withBadge: 2, widths: ["w-3/5", "w-4/5", "w-2/5", "w-3/4"] },
3680
3776
  { withBadge: 0, widths: ["w-1/2", "w-3/5", "w-2/3"] }
3681
3777
  ];
3682
- return /* @__PURE__ */ jsx28(
3778
+ return /* @__PURE__ */ jsx29(
3683
3779
  "div",
3684
3780
  {
3685
3781
  "aria-hidden": true,
@@ -3687,15 +3783,15 @@ function MingoChatHistorySkeleton({ className }) {
3687
3783
  "flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)] overflow-hidden",
3688
3784
  className
3689
3785
  ),
3690
- children: groups.map((group, g) => /* @__PURE__ */ jsxs24("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
3691
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-16 animate-pulse rounded bg-ods-border" }),
3692
- /* @__PURE__ */ jsx28("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.widths.map((w, i) => /* @__PURE__ */ jsxs24(
3786
+ children: groups.map((group, g) => /* @__PURE__ */ jsxs25("div", { className: "flex shrink-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
3787
+ /* @__PURE__ */ jsx29("div", { className: "h-3 w-16 animate-pulse rounded bg-ods-border" }),
3788
+ /* @__PURE__ */ jsx29("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.widths.map((w, i) => /* @__PURE__ */ jsxs25(
3693
3789
  "div",
3694
3790
  {
3695
3791
  className: "flex h-12 items-center gap-[var(--spacing-system-xsf)] bg-ods-bg border-b border-ods-border px-[var(--spacing-system-s)] last:border-b-0",
3696
3792
  children: [
3697
- i < group.withBadge && /* @__PURE__ */ jsx28("div", { className: "h-8 w-8 shrink-0 animate-pulse rounded-md bg-ods-border" }),
3698
- /* @__PURE__ */ jsx28("div", { className: cn("h-4 animate-pulse rounded bg-ods-border", w) })
3793
+ i < group.withBadge && /* @__PURE__ */ jsx29("div", { className: "h-8 w-8 shrink-0 animate-pulse rounded-md bg-ods-border" }),
3794
+ /* @__PURE__ */ jsx29("div", { className: cn("h-4 animate-pulse rounded bg-ods-border", w) })
3699
3795
  ]
3700
3796
  },
3701
3797
  i
@@ -3754,21 +3850,21 @@ function MingoChatHistory({
3754
3850
  io.observe(sentinel);
3755
3851
  return () => io.disconnect();
3756
3852
  }, [hasMore]);
3757
- return /* @__PURE__ */ jsxs24("div", { className: cn("relative flex flex-1 min-h-0 flex-col", className), children: [
3758
- /* @__PURE__ */ jsxs24(
3853
+ return /* @__PURE__ */ jsxs25("div", { className: cn("relative flex flex-1 min-h-0 flex-col", className), children: [
3854
+ /* @__PURE__ */ jsxs25(
3759
3855
  "div",
3760
3856
  {
3761
3857
  ref: scrollRef,
3762
3858
  onScroll: updateFade,
3763
3859
  className: "flex flex-1 min-h-0 flex-col gap-[var(--spacing-system-m)] overflow-y-auto",
3764
3860
  children: [
3765
- groups.map((group) => /* @__PURE__ */ jsxs24(
3861
+ groups.map((group) => /* @__PURE__ */ jsxs25(
3766
3862
  "div",
3767
3863
  {
3768
3864
  className: "flex flex-col gap-[var(--spacing-system-xxs)]",
3769
3865
  children: [
3770
- /* @__PURE__ */ jsx28("p", { className: "text-h5 text-ods-text-secondary", children: group.label }),
3771
- /* @__PURE__ */ jsx28("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.items.map((dialog) => /* @__PURE__ */ jsx28(
3866
+ /* @__PURE__ */ jsx29("p", { className: "text-h5 text-ods-text-secondary", children: group.label }),
3867
+ /* @__PURE__ */ jsx29("div", { className: "overflow-hidden rounded-md border border-ods-border", children: group.items.map((dialog) => /* @__PURE__ */ jsx29(
3772
3868
  MingoChatHistoryRow,
3773
3869
  {
3774
3870
  dialog,
@@ -3783,11 +3879,11 @@ function MingoChatHistory({
3783
3879
  },
3784
3880
  group.key
3785
3881
  )),
3786
- hasMore ? /* @__PURE__ */ jsx28("div", { ref: sentinelRef, className: "h-px shrink-0" }) : null
3882
+ hasMore ? /* @__PURE__ */ jsx29("div", { ref: sentinelRef, className: "h-px shrink-0" }) : null
3787
3883
  ]
3788
3884
  }
3789
3885
  ),
3790
- /* @__PURE__ */ jsx28(
3886
+ /* @__PURE__ */ jsx29(
3791
3887
  "div",
3792
3888
  {
3793
3889
  "aria-hidden": true,
@@ -3800,7 +3896,7 @@ function MingoChatHistory({
3800
3896
  }
3801
3897
  }
3802
3898
  ),
3803
- /* @__PURE__ */ jsx28(
3899
+ /* @__PURE__ */ jsx29(
3804
3900
  "div",
3805
3901
  {
3806
3902
  "aria-hidden": true,
@@ -3816,99 +3912,6 @@ function MingoChatHistory({
3816
3912
  ] });
3817
3913
  }
3818
3914
 
3819
- // src/components/chat/chat-quick-action-row.tsx
3820
- init_cn();
3821
- import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
3822
- function ChipButton({ chip }) {
3823
- return /* @__PURE__ */ jsx29(
3824
- "button",
3825
- {
3826
- type: "button",
3827
- onClick: chip.onSelect,
3828
- className: "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
3829
- children: /* @__PURE__ */ jsx29(Tag, { variant: chip.variant ?? "outline", icon: chip.icon, label: chip.label })
3830
- }
3831
- );
3832
- }
3833
- function ChatQuickActionRow({
3834
- leading,
3835
- chips,
3836
- className
3837
- }) {
3838
- const auto = useAutoLimitTags({
3839
- count: chips.length,
3840
- reserveInputWidth: false
3841
- });
3842
- const visibleChips = chips.slice(0, auto.visibleCount);
3843
- const hiddenChips = chips.slice(auto.visibleCount);
3844
- if (!leading && chips.length === 0) return null;
3845
- return /* @__PURE__ */ jsxs25(
3846
- "div",
3847
- {
3848
- className: cn("relative flex shrink-0 items-center gap-1", className),
3849
- children: [
3850
- leading,
3851
- chips.length > 0 && // Measured zone: `flex-1 min-w-0 overflow-hidden` so it claims the width
3852
- // left by the pinned `leading` slot and clips anything past the fit.
3853
- /* @__PURE__ */ jsxs25(
3854
- "div",
3855
- {
3856
- ref: auto.middleRef,
3857
- className: "flex flex-1 min-w-0 items-center gap-1 overflow-hidden",
3858
- children: [
3859
- visibleChips.map((chip) => /* @__PURE__ */ jsx29(ChipButton, { chip }, chip.id)),
3860
- hiddenChips.length > 0 && /* @__PURE__ */ jsx29(
3861
- ActionsMenuDropdown,
3862
- {
3863
- triggerAriaLabel: "More quick actions",
3864
- onCloseAutoFocus: (e) => e.preventDefault(),
3865
- groups: [
3866
- {
3867
- items: hiddenChips.map((chip) => ({
3868
- id: chip.id,
3869
- label: chip.label,
3870
- icon: chip.icon,
3871
- onClick: chip.onSelect
3872
- }))
3873
- }
3874
- ],
3875
- customTrigger: /* @__PURE__ */ jsx29(
3876
- "button",
3877
- {
3878
- ref: auto.badgeRef,
3879
- type: "button",
3880
- "aria-label": "More quick actions",
3881
- className: "shrink-0 rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent",
3882
- children: /* @__PURE__ */ jsx29(Tag, { variant: "outline", label: /* @__PURE__ */ jsx29(Ellipsis01Icon, { size: 16 }) })
3883
- }
3884
- )
3885
- }
3886
- )
3887
- ]
3888
- }
3889
- ),
3890
- /* @__PURE__ */ jsx29(
3891
- "div",
3892
- {
3893
- ref: auto.measureRef,
3894
- "aria-hidden": true,
3895
- className: "pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-1",
3896
- children: chips.map((chip) => /* @__PURE__ */ jsx29(
3897
- Tag,
3898
- {
3899
- variant: chip.variant ?? "outline",
3900
- icon: chip.icon,
3901
- label: chip.label
3902
- },
3903
- `measure-${chip.id}`
3904
- ))
3905
- }
3906
- )
3907
- ]
3908
- }
3909
- );
3910
- }
3911
-
3912
3915
  // src/components/chat/mingo-welcome.tsx
3913
3916
  init_button2();
3914
3917
  import { Fragment as Fragment2, jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
@@ -12153,41 +12156,6 @@ import React54 from "react";
12153
12156
  // src/utils/index.ts
12154
12157
  init_cn();
12155
12158
  init_platform_domains();
12156
-
12157
- // src/utils/common.ts
12158
- import { clsx } from "clsx";
12159
- import { twMerge } from "tailwind-merge";
12160
- function cn2(...inputs) {
12161
- return twMerge(clsx(inputs));
12162
- }
12163
- function delay(ms) {
12164
- return new Promise((resolve) => setTimeout(resolve, ms));
12165
- }
12166
- function generateRandomString(length = 8) {
12167
- const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
12168
- let result = "";
12169
- for (let i = 0; i < length; i++) {
12170
- result += chars.charAt(Math.floor(Math.random() * chars.length));
12171
- }
12172
- return result;
12173
- }
12174
- function truncateString(str, maxLength, suffix = "...") {
12175
- if (str.length <= maxLength) return str;
12176
- return str.substring(0, maxLength - suffix.length) + suffix;
12177
- }
12178
- function deepClone(obj) {
12179
- return JSON.parse(JSON.stringify(obj));
12180
- }
12181
- function getSlackCommunityJoinUrl() {
12182
- const url = process.env.NEXT_PUBLIC_SLACK_COMMUNITY_JOIN_URL;
12183
- if (!url) {
12184
- console.warn("NEXT_PUBLIC_SLACK_COMMUNITY_JOIN_URL is not defined in environment variables");
12185
- return "https://join.slack.com/t/openmsp/shared_invite/zt-36bl7mx0h-3~U2nFH6nqHqoTPXMaHEHA";
12186
- }
12187
- return url;
12188
- }
12189
-
12190
- // src/utils/index.ts
12191
12159
  init_cn();
12192
12160
 
12193
12161
  // src/utils/os-platforms.ts
@@ -39265,6 +39233,7 @@ export {
39265
39233
  ChatMessageRow,
39266
39234
  ChatMessageRowSkeleton,
39267
39235
  ChatQuickAction,
39236
+ ChatQuickActionRow,
39268
39237
  ChatTicketItem,
39269
39238
  ChatTicketList,
39270
39239
  MingoOnboardingCardSkeleton,
@@ -39443,11 +39412,6 @@ export {
39443
39412
  Toggle,
39444
39413
  ToggleGroup,
39445
39414
  ToggleGroupItem,
39446
- delay,
39447
- generateRandomString,
39448
- truncateString,
39449
- deepClone,
39450
- getSlackCommunityJoinUrl,
39451
39415
  OS_PLATFORMS,
39452
39416
  DEFAULT_OS_PLATFORM,
39453
39417
  isValidEmailDomain,
@@ -39753,4 +39717,4 @@ export {
39753
39717
  LogsList,
39754
39718
  assets
39755
39719
  };
39756
- //# sourceMappingURL=chunk-6TB24AUH.js.map
39720
+ //# sourceMappingURL=chunk-S7IX7YU4.js.map