@flamingo-stack/openframe-frontend-core 0.0.745 → 0.0.747

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 (96) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-PM5ELQBL.cjs → chunk-2CEQGGRN.cjs} +32 -32
  3. package/dist/{chunk-6IQDQQ56.cjs → chunk-4AWI6CCU.cjs} +38 -38
  4. package/dist/{chunk-75BF7YJR.cjs → chunk-4DT5YXTM.cjs} +13 -13
  5. package/dist/{chunk-YJRMCFX3.cjs → chunk-4MGZYY6U.cjs} +7 -7
  6. package/dist/{chunk-HVR7DPAY.cjs → chunk-6RTHHU3S.cjs} +4 -4
  7. package/dist/{chunk-DJO7YMT3.cjs → chunk-7Y5U3Y4S.cjs} +194 -194
  8. package/dist/{chunk-GAGNKWOC.cjs → chunk-BBM2ICOY.cjs} +2 -2
  9. package/dist/{chunk-4N7KGOBS.cjs → chunk-BEC43GHL.cjs} +3 -3
  10. package/dist/{chunk-GOTEXQZN.cjs → chunk-C7NTL2GV.cjs} +80 -80
  11. package/dist/{chunk-NFINQ7IZ.cjs → chunk-FCQCEQBY.cjs} +6 -6
  12. package/dist/{chunk-URVIPSAJ.cjs → chunk-HNLI4OU5.cjs} +14 -14
  13. package/dist/{chunk-HMSCUL4R.cjs → chunk-HTMHDEIV.cjs} +4 -4
  14. package/dist/{chunk-3LX5AGZO.cjs → chunk-IJA3OZWF.cjs} +24 -24
  15. package/dist/{chunk-ABLUMGCI.cjs → chunk-JHQNUWFM.cjs} +83 -33
  16. package/dist/{chunk-RIGSZEXS.cjs → chunk-JPSMPXCH.cjs} +90 -90
  17. package/dist/{chunk-UY6A6TEY.cjs → chunk-L2IQESTQ.cjs} +2 -2
  18. package/dist/{chunk-M4FKV2U5.cjs → chunk-LLAKQT3B.cjs} +12 -12
  19. package/dist/{chunk-GQ2TRIOV.cjs → chunk-MA7T36JY.cjs} +35 -35
  20. package/dist/{chunk-7KHQHYXL.cjs → chunk-O6QQ44I3.cjs} +18 -18
  21. package/dist/{chunk-LJ46XYYP.cjs → chunk-P7KTAXXE.cjs} +41 -27
  22. package/dist/{chunk-FNIFUCXU.cjs → chunk-PIQRV4EQ.cjs} +5 -5
  23. package/dist/{chunk-OWGLRE74.cjs → chunk-PSIKUDUV.cjs} +8 -8
  24. package/dist/{chunk-4A6OF4HI.cjs → chunk-PSSGIZXZ.cjs} +44 -44
  25. package/dist/{chunk-YIOWV7LS.cjs → chunk-QPSQ5WLG.cjs} +2 -2
  26. package/dist/{chunk-QES5NV4T.cjs → chunk-R3FXJXSQ.cjs} +1040 -1010
  27. package/dist/{chunk-7PQOZLVP.cjs → chunk-TYW7NBP7.cjs} +20 -20
  28. package/dist/{chunk-U2O5YQRP.cjs → chunk-U6XWGK53.cjs} +33 -33
  29. package/dist/{chunk-GEEKJ7SH.cjs → chunk-WY4FKKCV.cjs} +74 -74
  30. package/dist/{chunk-JGZEHBBD.cjs → chunk-YIRX6C7V.cjs} +10 -10
  31. package/dist/{chunk-5TCIRWHL.cjs → chunk-YRULLK7N.cjs} +5 -5
  32. package/dist/{cloud-tenants-DECPWIYQ.cjs → cloud-tenants-QJZIF2JS.cjs} +13 -13
  33. package/dist/components/case-studies/index.cjs +31 -29
  34. package/dist/components/case-studies/share-experience-section.d.ts.map +1 -1
  35. package/dist/components/case-studies/share-experience-section.js +6 -5
  36. package/dist/components/chat/index.cjs +9 -9
  37. package/dist/components/contact/index.cjs +14 -14
  38. package/dist/components/docs/index.cjs +17 -17
  39. package/dist/components/embeds/index.cjs +14 -14
  40. package/dist/components/faq/index.cjs +15 -15
  41. package/dist/components/features/index.cjs +13 -13
  42. package/dist/components/help-center-pages/index.cjs +116 -116
  43. package/dist/components/index.cjs +121 -125
  44. package/dist/components/layout/page-heading.d.ts +16 -0
  45. package/dist/components/layout/page-heading.d.ts.map +1 -1
  46. package/dist/components/layout/page-heading.js +16 -2
  47. package/dist/components/meeting-scheduler/index.cjs +63 -63
  48. package/dist/components/navigation/index.cjs +16 -16
  49. package/dist/components/onboarding-guides/index.cjs +16 -16
  50. package/dist/components/product-demo/index.cjs +9 -9
  51. package/dist/components/related-content/index.cjs +7 -7
  52. package/dist/components/tickets/index.cjs +19 -19
  53. package/dist/components/ui/filter-checkbox-item.d.ts +8 -2
  54. package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
  55. package/dist/components/ui/filter-checkbox-item.js +14 -4
  56. package/dist/components/ui/index.cjs +15 -13
  57. package/dist/components/ui/layout-hold.d.ts +4 -3
  58. package/dist/components/ui/layout-hold.d.ts.map +1 -1
  59. package/dist/components/ui/layout-hold.js +29 -9
  60. package/dist/components/unified-filter-logic.js +1 -1
  61. package/dist/components/vendor-tag.d.ts +12 -0
  62. package/dist/components/vendor-tag.d.ts.map +1 -1
  63. package/dist/components/vendor-tag.js +50 -47
  64. package/dist/{devices-HJKDRWQX.cjs → devices-V55KQCAL.cjs} +14 -14
  65. package/dist/{embeddable-chat-3SKFBO2P.cjs → embeddable-chat-5CDR4I6E.cjs} +80 -80
  66. package/dist/index.cjs +22 -18
  67. package/dist/{knowledge-NH2CGY2C.cjs → knowledge-S3VGDRKR.cjs} +14 -14
  68. package/dist/{logs-KZYIDYQK.cjs → logs-K5E2BGZE.cjs} +21 -21
  69. package/dist/{policies-UAVTPIKM.cjs → policies-BWU4FRFE.cjs} +17 -17
  70. package/dist/{remote-session-N4PJB5FW.cjs → remote-session-IYT4LWJC.cjs} +7 -7
  71. package/dist/{scripts-FRPY43KU.cjs → scripts-25UPGXZU.cjs} +20 -20
  72. package/dist/{software-update-AEJJNLX5.cjs → software-update-F6UC7ULZ.cjs} +17 -17
  73. package/dist/{tickets-board-O753S4ZB.cjs → tickets-board-4MT6ZB4F.cjs} +8 -8
  74. package/dist/utils/format.d.ts.map +1 -1
  75. package/dist/utils/format.js +2 -3
  76. package/dist/utils/index.cjs +74 -24
  77. package/dist/utils/index.d.ts +1 -1
  78. package/dist/utils/index.d.ts.map +1 -1
  79. package/dist/utils/index.js +8 -6
  80. package/dist/utils/vendor-classification.d.ts +43 -17
  81. package/dist/utils/vendor-classification.d.ts.map +1 -1
  82. package/dist/utils/vendor-classification.js +73 -22
  83. package/package.json +1 -1
  84. package/src/components/case-studies/share-experience-section.tsx +9 -6
  85. package/src/components/layout/page-heading.tsx +52 -11
  86. package/src/components/ui/filter-checkbox-item.tsx +21 -5
  87. package/src/components/ui/layout-hold.tsx +38 -10
  88. package/src/components/unified-filter-logic.tsx +1 -1
  89. package/src/components/vendor-tag.tsx +73 -69
  90. package/src/utils/format.ts +2 -3
  91. package/src/utils/index.ts +7 -5
  92. package/src/utils/vendor-classification.ts +113 -34
  93. package/dist/utils/format-text-stub.d.ts +0 -5
  94. package/dist/utils/format-text-stub.d.ts.map +0 -1
  95. package/dist/utils/format-text-stub.js +0 -20
  96. package/src/utils/format-text-stub.ts +0 -17
@@ -12,7 +12,7 @@ var _chunkLU7TD6QScjs = require('./chunk-LU7TD6QS.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkOWGLRE74cjs = require('./chunk-OWGLRE74.cjs');
15
+ var _chunkPSIKUDUVcjs = require('./chunk-PSIKUDUV.cjs');
16
16
 
17
17
 
18
18
 
@@ -73,7 +73,7 @@ var _chunkQYLIHZKZcjs = require('./chunk-QYLIHZKZ.cjs');
73
73
 
74
74
 
75
75
 
76
- var _chunkABLUMGCIcjs = require('./chunk-ABLUMGCI.cjs');
76
+ var _chunkJHQNUWFMcjs = require('./chunk-JHQNUWFM.cjs');
77
77
 
78
78
 
79
79
  var _chunkKTPR66EEcjs = require('./chunk-KTPR66EE.cjs');
@@ -177,7 +177,7 @@ function BoardColumnHeader({
177
177
  }) {
178
178
  const count = _nullishCoalesce(column.total, () => ( column.tickets.length));
179
179
  const tagStatus = _nullishCoalesce(column.statusKey, () => ( column.id));
180
- const useStatusVariant = _chunkOWGLRE74cjs.resolveTicketStatus.call(void 0, tagStatus) !== null;
180
+ const useStatusVariant = _chunkPSIKUDUVcjs.resolveTicketStatus.call(void 0, tagStatus) !== null;
181
181
  const actionClass = "h-8 w-8 p-0 content-md:h-8 content-md:w-8";
182
182
  if (collapsed) {
183
183
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col items-center gap-[var(--spacing-system-xsf)]", children: [
@@ -193,7 +193,7 @@ function BoardColumnHeader({
193
193
  }
194
194
  ),
195
195
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
196
- _chunkOWGLRE74cjs.TicketStatusTag,
196
+ _chunkPSIKUDUVcjs.TicketStatusTag,
197
197
  {
198
198
  status: tagStatus,
199
199
  label: column.label,
@@ -206,7 +206,7 @@ function BoardColumnHeader({
206
206
  }
207
207
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xsf)]", children: [
208
208
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)]", children: [
209
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOWGLRE74cjs.TicketStatusTag, { status: tagStatus, label: column.label, color: useStatusVariant ? void 0 : column.color }),
209
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPSIKUDUVcjs.TicketStatusTag, { status: tagStatus, label: column.label, color: useStatusVariant ? void 0 : column.color }),
210
210
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h5", style: useStatusVariant ? void 0 : { color: column.color }, children: count })
211
211
  ] }),
212
212
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xxs)]", children: [
@@ -264,7 +264,7 @@ function tintOnDark(hex) {
264
264
 
265
265
  function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
266
266
  const [expanded, setExpanded] = _react.useState.call(void 0, false);
267
- const { innerRef, containerStyle } = _chunkOWGLRE74cjs.useCollapsible.call(void 0, { expanded });
267
+ const { innerRef, containerStyle } = _chunkPSIKUDUVcjs.useCollapsible.call(void 0, { expanded });
268
268
  const isAdmin = pendingApproval.approvalType === "ADMIN";
269
269
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "pointer-events-auto flex flex-col", children: [
270
270
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -293,7 +293,7 @@ function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
293
293
  }
294
294
  ),
295
295
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: containerStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: innerRef, className: "pt-[var(--spacing-system-xs)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
296
- _chunkOWGLRE74cjs.ApprovalBatchMessage,
296
+ _chunkPSIKUDUVcjs.ApprovalBatchMessage,
297
297
  {
298
298
  className: "mb-0",
299
299
  data: {
@@ -485,7 +485,7 @@ function TicketCardBody({
485
485
  role: "img",
486
486
  "aria-label": `Owned by ${ticket.agent === "fae" ? "Fae" : "Mingo"}`,
487
487
  className: "flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-full border border-ods-border bg-ods-bg",
488
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkOWGLRE74cjs.AgentMark, { agent: ticket.agent, className: ticket.agent === "fae" ? "size-full" : "size-5" })
488
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPSIKUDUVcjs.AgentMark, { agent: ticket.agent, className: ticket.agent === "fae" ? "size-full" : "size-5" })
489
489
  }
490
490
  ),
491
491
  renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _19 => _19.assignees, 'optionalAccess', _20 => _20.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
@@ -498,7 +498,7 @@ function TicketCardBody({
498
498
  },
499
499
  a.id
500
500
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
501
- _chunkABLUMGCIcjs.SquareAvatar,
501
+ _chunkJHQNUWFMcjs.SquareAvatar,
502
502
  {
503
503
  src: a.avatarUrl,
504
504
  alt: _nullishCoalesce(_nullishCoalesce(a.name, () => ( a.initials)), () => ( a.id)),
@@ -515,8 +515,8 @@ function TicketCardBody({
515
515
  ] })
516
516
  ] }) : null
517
517
  ] }) : null;
518
- const timestampLabel = ticket.createdAt ? _chunkOWGLRE74cjs.formatTicketRelativeTime.call(void 0, ticket.createdAt) : null;
519
- const tooltipLabel = ticket.createdAt ? _chunkOWGLRE74cjs.formatTicketFullTimestamp.call(void 0, ticket.createdAt) : null;
518
+ const timestampLabel = ticket.createdAt ? _chunkPSIKUDUVcjs.formatTicketRelativeTime.call(void 0, ticket.createdAt) : null;
519
+ const tooltipLabel = ticket.createdAt ? _chunkPSIKUDUVcjs.formatTicketFullTimestamp.call(void 0, ticket.createdAt) : null;
520
520
  const metaLabel = [ticket.ticketNumber || null, timestampLabel].filter(Boolean).join(" \u2022 ");
521
521
  const metaClass = "truncate text-ods-text-secondary text-h6";
522
522
  const meta = href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -565,7 +565,7 @@ function TicketCardBody({
565
565
  }
566
566
  ),
567
567
  showNewMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
568
- _chunkABLUMGCIcjs.Tag,
568
+ _chunkJHQNUWFMcjs.Tag,
569
569
  {
570
570
  label: "New Message",
571
571
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJSIUVERGcjs.MessagesIcon, { size: 16, color: newMessageTextColor }),
@@ -785,8 +785,8 @@ function TicketTagRow({ tags }) {
785
785
  const visible = tags.slice(0, MAX_VISIBLE_TAGS);
786
786
  const hidden = tags.length - visible.length;
787
787
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-8 flex-wrap items-start gap-[var(--spacing-system-xxs)] overflow-clip", children: [
788
- visible.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkABLUMGCIcjs.Tag, { variant: "outline", label: tag }, tag)),
789
- hidden > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkABLUMGCIcjs.Tag, { variant: "outline", label: `+${hidden}` })
788
+ visible.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJHQNUWFMcjs.Tag, { variant: "outline", label: tag }, tag)),
789
+ hidden > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJHQNUWFMcjs.Tag, { variant: "outline", label: `+${hidden}` })
790
790
  ] });
791
791
  }
792
792
 
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkGOTEXQZNcjs = require('./chunk-GOTEXQZN.cjs');
4
+ var _chunkC7NTL2GVcjs = require('./chunk-C7NTL2GV.cjs');
5
5
 
6
6
 
7
- var _chunkDJO7YMT3cjs = require('./chunk-DJO7YMT3.cjs');
7
+ var _chunk7Y5U3Y4Scjs = require('./chunk-7Y5U3Y4S.cjs');
8
8
 
9
9
 
10
10
  var _chunkDGFDBPO7cjs = require('./chunk-DGFDBPO7.cjs');
@@ -44,7 +44,7 @@ function isSummaryData(value) {
44
44
  }
45
45
  function TicketLiveProvider({ children, enabled = true }) {
46
46
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
47
- const identity = _chunkDJO7YMT3cjs.useChatIdentity.call(void 0, enabled);
47
+ const identity = _chunk7Y5U3Y4Scjs.useChatIdentity.call(void 0, enabled);
48
48
  const queryClient = _reactquery.useQueryClient.call(void 0, );
49
49
  const streamUrl = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _ => _.endpoints, 'access', _2 => _2.ticketStreamUrl]), () => ( TICKET_STREAM_ENDPOINT));
50
50
  const readUrl = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _3 => _3.endpoints, 'access', _4 => _4.ticketReadUrl]), () => ( TICKET_READ_ENDPOINT));
@@ -160,7 +160,7 @@ function TicketLiveProvider({ children, enabled = true }) {
160
160
  _react2.default.useEffect(() => {
161
161
  if (!streamEnabled) return void 0;
162
162
  if (typeof window === "undefined") return void 0;
163
- subscriptionRef.current = _chunkGOTEXQZNcjs.createSseSubscription.call(void 0, {
163
+ subscriptionRef.current = _chunkC7NTL2GVcjs.createSseSubscription.call(void 0, {
164
164
  url: streamUrl,
165
165
  onEvent: (name, data) => handlersRef.current.onEvent(name, data),
166
166
  onStatusChange: (status) => handlersRef.current.onStatus(status),
@@ -2,14 +2,14 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkQES5NV4Tcjs = require('./chunk-QES5NV4T.cjs');
5
+ var _chunkR3FXJXSQcjs = require('./chunk-R3FXJXSQ.cjs');
6
6
 
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkU2O5YQRPcjs = require('./chunk-U2O5YQRP.cjs');
12
+ var _chunkU6XWGK53cjs = require('./chunk-U6XWGK53.cjs');
13
13
 
14
14
 
15
15
 
@@ -17,16 +17,16 @@ var _chunkU2O5YQRPcjs = require('./chunk-U2O5YQRP.cjs');
17
17
  var _chunk4FWURR3Wcjs = require('./chunk-4FWURR3W.cjs');
18
18
 
19
19
 
20
- var _chunkGOTEXQZNcjs = require('./chunk-GOTEXQZN.cjs');
20
+ var _chunkC7NTL2GVcjs = require('./chunk-C7NTL2GV.cjs');
21
21
 
22
22
 
23
23
 
24
24
 
25
- var _chunkDJO7YMT3cjs = require('./chunk-DJO7YMT3.cjs');
25
+ var _chunk7Y5U3Y4Scjs = require('./chunk-7Y5U3Y4S.cjs');
26
26
 
27
27
 
28
28
 
29
- var _chunkLJ46XYYPcjs = require('./chunk-LJ46XYYP.cjs');
29
+ var _chunkP7KTAXXEcjs = require('./chunk-P7KTAXXE.cjs');
30
30
 
31
31
 
32
32
 
@@ -119,7 +119,7 @@ function ContactForm({
119
119
  successToastMessage = "Redirecting you to join our community...",
120
120
  rescue: rescueForm = null
121
121
  } = {}) {
122
- const attachments = _chunkDJO7YMT3cjs.useChatAttachments.call(void 0, );
122
+ const attachments = _chunk7Y5U3Y4Scjs.useChatAttachments.call(void 0, );
123
123
  const builtInSubmission = _chunk4FWURR3Wcjs.useContactSubmission.call(void 0, {
124
124
  userId,
125
125
  successRedirectUrl,
@@ -190,7 +190,7 @@ function ContactForm({
190
190
  className: `flex h-full flex-col ${!noBorder ? "rounded-2xl border border-ods-border content-md:rounded-3xl" : ""} ${!noPadding ? "p-6 content-md:p-8 content-lg:p-10" : ""}`,
191
191
  children: [
192
192
  (title || subtitle) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mb-6 content-md:mb-8", children: [
193
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkLJ46XYYPcjs.SECTION_HEADING_CLASS} mb-3 content-md:mb-4`, children: _chunkLJ46XYYPcjs.accentSentenceMarks.call(void 0, title) }),
193
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkP7KTAXXEcjs.SECTION_HEADING_CLASS} mb-3 content-md:mb-4`, children: _chunkP7KTAXXEcjs.accentSentenceMarks.call(void 0, title) }),
194
194
  subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: subtitle })
195
195
  ] }),
196
196
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -203,13 +203,13 @@ function ContactForm({
203
203
  );
204
204
  }),
205
205
  className: "flex flex-grow flex-col space-y-4 content-md:space-y-6",
206
- ..._chunkGOTEXQZNcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
206
+ ..._chunkC7NTL2GVcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
207
207
  children: [
208
208
  !showName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("name") }),
209
209
  !showEmail && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("email") }),
210
210
  !showHelpCategory && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("helpCategory") }),
211
211
  !showMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("message") }),
212
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQES5NV4Tcjs.HoneypotField, { ...honeypotInputProps }),
212
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3FXJXSQcjs.HoneypotField, { ...honeypotInputProps }),
213
213
  extraTopField,
214
214
  showNameEmailRow && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-md:grid-cols-2 content-md:gap-6", children: [
215
215
  showName && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
@@ -261,17 +261,17 @@ function ContactForm({
261
261
  {
262
262
  control,
263
263
  name: "companySize",
264
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU2O5YQRPcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
264
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU6XWGK53cjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
265
265
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
266
- _chunkU2O5YQRPcjs.SelectTrigger,
266
+ _chunkU6XWGK53cjs.SelectTrigger,
267
267
  {
268
268
  id: "companySize",
269
269
  "aria-label": "Company Size",
270
270
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
271
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectValue, { placeholder: "Select company size" })
271
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectValue, { placeholder: "Select company size" })
272
272
  }
273
273
  ),
274
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectContent, { children: companySizeOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectItem, { value: opt, children: opt }, opt)) })
274
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectContent, { children: companySizeOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectItem, { value: opt, children: opt }, opt)) })
275
275
  ] })
276
276
  }
277
277
  ),
@@ -284,17 +284,17 @@ function ContactForm({
284
284
  {
285
285
  control,
286
286
  name: "referralSource",
287
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU2O5YQRPcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
287
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU6XWGK53cjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
288
288
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
289
- _chunkU2O5YQRPcjs.SelectTrigger,
289
+ _chunkU6XWGK53cjs.SelectTrigger,
290
290
  {
291
291
  id: "referralSource",
292
292
  "aria-label": "Referral Source",
293
293
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
294
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectValue, { placeholder: "Select an option" })
294
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectValue, { placeholder: "Select an option" })
295
295
  }
296
296
  ),
297
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectContent, { children: referralSourceOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectItem, { value: opt, children: opt }, opt)) })
297
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectContent, { children: referralSourceOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectItem, { value: opt, children: opt }, opt)) })
298
298
  ] })
299
299
  }
300
300
  ),
@@ -311,18 +311,18 @@ function ContactForm({
311
311
  {
312
312
  control,
313
313
  name: "helpCategory",
314
- render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU2O5YQRPcjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
314
+ render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkU6XWGK53cjs.Select, { onValueChange: field.onChange, value: _nullishCoalesce(field.value, () => ( "")), children: [
315
315
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
316
- _chunkU2O5YQRPcjs.SelectTrigger,
316
+ _chunkU6XWGK53cjs.SelectTrigger,
317
317
  {
318
318
  id: "helpCategory",
319
319
  "aria-label": "Help Category",
320
320
  "aria-required": true,
321
321
  className: "h-12 border-ods-border bg-ods-card px-3 text-ods-text-primary",
322
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectValue, { placeholder: "Choose your main interest" })
322
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectValue, { placeholder: "Choose your main interest" })
323
323
  }
324
324
  ),
325
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectContent, { children: helpCategoryOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU2O5YQRPcjs.SelectItem, { value: opt, children: opt }, opt)) })
325
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectContent, { children: helpCategoryOptions.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU6XWGK53cjs.SelectItem, { value: opt, children: opt }, opt)) })
326
326
  ] })
327
327
  }
328
328
  ),
@@ -334,7 +334,7 @@ function ContactForm({
334
334
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTRILBJDcjs.RequiredMark, {})
335
335
  ] }),
336
336
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
337
- _chunkQES5NV4Tcjs.Textarea,
337
+ _chunkR3FXJXSQcjs.Textarea,
338
338
  {
339
339
  id: "message",
340
340
  ...register("message"),
@@ -349,7 +349,7 @@ function ContactForm({
349
349
  ] }),
350
350
  attachmentsEnabled && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
351
351
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
352
- _chunkDJO7YMT3cjs.ChatAttachmentChipStrip,
352
+ _chunk7Y5U3Y4Scjs.ChatAttachmentChipStrip,
353
353
  {
354
354
  attachments: attachments.attachments,
355
355
  onRemove: attachments.removeAttachment,
@@ -358,7 +358,7 @@ function ContactForm({
358
358
  ),
359
359
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
360
360
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
361
- _chunkDJO7YMT3cjs.ChatAttachmentAddButton,
361
+ _chunk7Y5U3Y4Scjs.ChatAttachmentAddButton,
362
362
  {
363
363
  attachmentsEnabled: true,
364
364
  attachmentsCount: attachments.attachments.length,
@@ -309,35 +309,85 @@ function Tag({
309
309
  }
310
310
 
311
311
  // src/utils/vendor-classification.ts
312
- var VENDOR_CLASSIFICATIONS = [
313
- "open_source",
314
- "commercial",
315
- "openframe_selected",
316
- "openframe_shipped",
317
- "openframe_connect"
318
- ];
319
- var OPENFRAME_CLASSIFICATIONS = {
312
+ var VENDOR_CLASSIFICATION_COPY = {
320
313
  openframe_selected: {
321
- word: "Selected",
322
314
  label: "OpenFrame Selected",
323
- description: "OpenFrame is a unified platform that integrates multiple open-source IT and security tools into a single dashboard for MSPs. This filter shows vendors selected by our team for their excellence, community support, and MSP-specific value."
315
+ word: "Selected",
316
+ description: "OpenFrame is a unified platform that integrates multiple open-source IT and security tools into a single dashboard for MSPs. This filter shows vendors selected by our team for their excellence, community support, and MSP-specific value.",
317
+ group: "openframe",
318
+ icon: { name: "openframe-logo", tone: "accent" }
319
+ },
320
+ openframe_connect: {
321
+ label: "OpenFrame Connect",
322
+ word: "Connect",
323
+ description: "Services OpenFrame connects to and manages for every client, such as Microsoft 365 and Google Workspace, beside devices and tickets.",
324
+ group: "openframe",
325
+ icon: { name: "openframe-logo", tone: "accent" }
324
326
  },
325
327
  openframe_shipped: {
326
- word: "Shipped",
327
328
  label: "OpenFrame Shipped",
328
- description: "Tools and OpenFrame products that are in the released OpenFrame product today, not on the roadmap."
329
+ word: "Shipped",
330
+ description: "Tools and OpenFrame products that are in the released OpenFrame product today, not on the roadmap.",
331
+ group: "openframe",
332
+ icon: { name: "openframe-logo", tone: "accent" }
329
333
  },
330
- openframe_connect: {
331
- word: "Connect",
332
- label: "OpenFrame Connect",
333
- description: "Services OpenFrame connects to and manages for every client, such as Microsoft 365 and Google Workspace, beside devices and tickets."
334
+ open_source: {
335
+ label: "Open Source",
336
+ description: "Released under an OSI-approved open-source license.",
337
+ group: "license",
338
+ icon: { name: "code", tone: "accent" }
339
+ },
340
+ source_available: {
341
+ label: "Source-available",
342
+ description: "The source code is public, but the license restricts how it may be used (for example SSPL, BSL, the Elastic License, or limits on company size or on offering it as a service).",
343
+ group: "license",
344
+ icon: { name: "file-code", tone: "neutral" }
345
+ },
346
+ commercial: {
347
+ label: "Commercial",
348
+ description: "Proprietary software sold by the vendor.",
349
+ group: "license",
350
+ icon: { name: "dollar", tone: "neutral" }
351
+ },
352
+ end_of_life: {
353
+ label: "End of life",
354
+ description: "The vendor has discontinued or retired the product. No new releases.",
355
+ group: "lifecycle",
356
+ icon: { name: "alert-triangle", tone: "warning" }
357
+ },
358
+ end_of_support: {
359
+ label: "End of support",
360
+ description: "The vendor no longer provides support or security fixes, though the product can still be obtained.",
361
+ group: "lifecycle",
362
+ icon: { name: "clock", tone: "warning" }
363
+ },
364
+ unmaintained: {
365
+ label: "Unmaintained",
366
+ description: "No release for years and no official end-of-life notice.",
367
+ group: "lifecycle",
368
+ icon: { name: "pause-circle", tone: "warning" }
334
369
  }
335
370
  };
336
- function isVendorClassification(value) {
337
- return VENDOR_CLASSIFICATIONS.includes(value);
371
+ function vendorClassificationCopy(value) {
372
+ if (!value || !Object.prototype.hasOwnProperty.call(VENDOR_CLASSIFICATION_COPY, value)) return void 0;
373
+ return VENDOR_CLASSIFICATION_COPY[value];
374
+ }
375
+ function vendorClassificationGroup(value) {
376
+ return _optionalChain([vendorClassificationCopy, 'call', _ => _(value), 'optionalAccess', _2 => _2.group]);
338
377
  }
339
378
  function isOpenFrameClassification(value) {
340
- return !!value && Object.prototype.hasOwnProperty.call(OPENFRAME_CLASSIFICATIONS, value);
379
+ return vendorClassificationGroup(value) === "openframe";
380
+ }
381
+ var DISPLAY_ORDER = Object.keys(VENDOR_CLASSIFICATION_COPY);
382
+ function compareVendorClassifications(a, b) {
383
+ const ia = DISPLAY_ORDER.indexOf(a);
384
+ const ib = DISPLAY_ORDER.indexOf(b);
385
+ if (ia !== -1 || ib !== -1) {
386
+ if (ia === -1) return 1;
387
+ if (ib === -1) return -1;
388
+ return ia - ib;
389
+ }
390
+ return a.localeCompare(b);
341
391
  }
342
392
 
343
393
  // src/utils/format.ts
@@ -534,7 +584,7 @@ function formatDateWithTimezone(date, timezone, style = "medium", options) {
534
584
  const dateObj = toValidDate(date);
535
585
  if (!dateObj) return "";
536
586
  const { timeZone: _ignored, ...fields } = typeof style === "string" ? ZONED_DATE_STYLES[style] : style;
537
- return formatterFor(timezone, fields, _optionalChain([options, 'optionalAccess', _ => _.viewerLocale]) ? void 0 : "en-US").format(dateObj);
587
+ return formatterFor(timezone, fields, _optionalChain([options, 'optionalAccess', _3 => _3.viewerLocale]) ? void 0 : "en-US").format(dateObj);
538
588
  }
539
589
  function formatDateTimeYmd(date, timezone, options) {
540
590
  const dateObj = toValidDate(date);
@@ -544,8 +594,8 @@ function formatDateTimeYmd(date, timezone, options) {
544
594
  { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hourCycle: "h23" },
545
595
  "en-US"
546
596
  ).formatToParts(dateObj);
547
- const part = (type) => _nullishCoalesce(_optionalChain([parts, 'access', _2 => _2.find, 'call', _3 => _3((p) => p.type === type), 'optionalAccess', _4 => _4.value]), () => ( ""));
548
- return `${part("year")}/${part("month")}/${part("day")}${_nullishCoalesce(_optionalChain([options, 'optionalAccess', _5 => _5.separator]), () => ( ", "))}${part("hour")}:${part("minute")}`;
597
+ const part = (type) => _nullishCoalesce(_optionalChain([parts, 'access', _4 => _4.find, 'call', _5 => _5((p) => p.type === type), 'optionalAccess', _6 => _6.value]), () => ( ""));
598
+ return `${part("year")}/${part("month")}/${part("day")}${_nullishCoalesce(_optionalChain([options, 'optionalAccess', _7 => _7.separator]), () => ( ", "))}${part("hour")}:${part("minute")}`;
549
599
  }
550
600
  function formatTimeWithTimezone(date, timezone, options) {
551
601
  return formatDateWithTimezone(
@@ -555,10 +605,10 @@ function formatTimeWithTimezone(date, timezone, options) {
555
605
  hour: "numeric",
556
606
  minute: "2-digit",
557
607
  // A viewer-locale clock uses the locale's own 12/24h convention.
558
- ..._optionalChain([options, 'optionalAccess', _6 => _6.viewerLocale]) ? {} : { hour12: true },
559
- ..._optionalChain([options, 'optionalAccess', _7 => _7.withZoneLabel]) ? { timeZoneName: "short" } : {}
608
+ ..._optionalChain([options, 'optionalAccess', _8 => _8.viewerLocale]) ? {} : { hour12: true },
609
+ ..._optionalChain([options, 'optionalAccess', _9 => _9.withZoneLabel]) ? { timeZoneName: "short" } : {}
560
610
  },
561
- { viewerLocale: _optionalChain([options, 'optionalAccess', _8 => _8.viewerLocale]) }
611
+ { viewerLocale: _optionalChain([options, 'optionalAccess', _10 => _10.viewerLocale]) }
562
612
  );
563
613
  }
564
614
  function formatProgramDate(at, style = "medium") {
@@ -572,7 +622,7 @@ function formatProgramDateRange(at, end) {
572
622
  const formatter = formatterFor(at.timezone, { year: "numeric", month: "short", day: "numeric" }, "en-US");
573
623
  const partsOf = (date) => {
574
624
  const parts = formatter.formatToParts(date);
575
- const part = (type) => _nullishCoalesce(_optionalChain([parts, 'access', _9 => _9.find, 'call', _10 => _10((p) => p.type === type), 'optionalAccess', _11 => _11.value]), () => ( ""));
625
+ const part = (type) => _nullishCoalesce(_optionalChain([parts, 'access', _11 => _11.find, 'call', _12 => _12((p) => p.type === type), 'optionalAccess', _13 => _13.value]), () => ( ""));
576
626
  return { month: part("month"), day: part("day"), year: part("year") };
577
627
  };
578
628
  const from = partsOf(start);
@@ -646,15 +696,15 @@ function formatWholeDollars(price, currency = "USD") {
646
696
  }
647
697
  function formatCompactMetric(value, format = "number", options) {
648
698
  if (value === 0 || value === null || value === void 0) {
649
- if (format === "currency") return `${_optionalChain([options, 'optionalAccess', _12 => _12.prefix]) || "$"}0`;
699
+ if (format === "currency") return `${_optionalChain([options, 'optionalAccess', _14 => _14.prefix]) || "$"}0`;
650
700
  if (format === "percentage") return "0%";
651
- if (format === "months") return `0 ${_optionalChain([options, 'optionalAccess', _13 => _13.suffix]) || "months"}`;
701
+ if (format === "months") return `0 ${_optionalChain([options, 'optionalAccess', _15 => _15.suffix]) || "months"}`;
652
702
  return "0";
653
703
  }
654
704
  const absValue = Math.abs(value);
655
705
  const sign = value < 0 ? "-" : "";
656
706
  if (format === "currency") {
657
- const prefix = _optionalChain([options, 'optionalAccess', _14 => _14.prefix]) || "$";
707
+ const prefix = _optionalChain([options, 'optionalAccess', _16 => _16.prefix]) || "$";
658
708
  const compact = (val, divisor, suffix) => {
659
709
  const divided = val / divisor;
660
710
  const formatted = divided % 1 === 0 ? divided.toFixed(0) : divided.toFixed(1);
@@ -670,7 +720,7 @@ function formatCompactMetric(value, format = "number", options) {
670
720
  }
671
721
  if (format === "months") {
672
722
  const rounded = Math.round(value * 10) / 10;
673
- return `${rounded} ${_optionalChain([options, 'optionalAccess', _15 => _15.suffix]) || "months"}`;
723
+ return `${rounded} ${_optionalChain([options, 'optionalAccess', _17 => _17.suffix]) || "months"}`;
674
724
  }
675
725
  if (absValue >= 1e6) return `${sign}${(absValue / 1e6).toFixed(1)}M`;
676
726
  if (absValue >= 1e3) return `${sign}${(absValue / 1e3).toFixed(1)}K`;
@@ -735,8 +785,7 @@ function stripHtml(html) {
735
785
  return noTags.replace(/&nbsp;/g, " ").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&#x27;/g, "'").replace(/&apos;/g, "'").replace(/&amp;/g, "&").replace(/\s+/g, " ").trim();
736
786
  }
737
787
  function formatClassification(classification) {
738
- if (isOpenFrameClassification(classification)) return OPENFRAME_CLASSIFICATIONS[classification].label;
739
- return formatUnderscoreText(classification);
788
+ return _nullishCoalesce(_optionalChain([vendorClassificationCopy, 'call', _18 => _18(classification), 'optionalAccess', _19 => _19.label]), () => ( formatUnderscoreText(classification)));
740
789
  }
741
790
  function formatPricingModel(pricingModel) {
742
791
  const customMappings = {
@@ -932,4 +981,5 @@ SquareAvatar.displayName = "SquareAvatar";
932
981
 
933
982
 
934
983
 
935
- exports.FloatingTooltip = FloatingTooltip; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.VENDOR_CLASSIFICATIONS = VENDOR_CLASSIFICATIONS; exports.OPENFRAME_CLASSIFICATIONS = OPENFRAME_CLASSIFICATIONS; exports.isVendorClassification = isVendorClassification; exports.isOpenFrameClassification = isOpenFrameClassification; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.nameInitials = nameInitials; exports.personInitials = personInitials; exports.personFirstName = personFirstName; exports.singleInitial = singleInitial; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE; exports.formatDateWithTimezone = formatDateWithTimezone; exports.formatDateTimeYmd = formatDateTimeYmd; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatProgramDate = formatProgramDate; exports.formatProgramDateRange = formatProgramDateRange; exports.isOrderedRange = isOrderedRange; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.titleCaseFromSlug = titleCaseFromSlug; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.formatProgramTimeRange = formatProgramTimeRange; exports.formatWebinarTimeMeta = formatWebinarTimeMeta; exports.formatUrlForDisplay = formatUrlForDisplay; exports.SquareAvatar = SquareAvatar;
984
+
985
+ exports.FloatingTooltip = FloatingTooltip; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.VENDOR_CLASSIFICATION_COPY = VENDOR_CLASSIFICATION_COPY; exports.vendorClassificationCopy = vendorClassificationCopy; exports.vendorClassificationGroup = vendorClassificationGroup; exports.isOpenFrameClassification = isOpenFrameClassification; exports.compareVendorClassifications = compareVendorClassifications; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.nameInitials = nameInitials; exports.personInitials = personInitials; exports.personFirstName = personFirstName; exports.singleInitial = singleInitial; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE; exports.formatDateWithTimezone = formatDateWithTimezone; exports.formatDateTimeYmd = formatDateTimeYmd; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatProgramDate = formatProgramDate; exports.formatProgramDateRange = formatProgramDateRange; exports.isOrderedRange = isOrderedRange; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.titleCaseFromSlug = titleCaseFromSlug; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.formatProgramTimeRange = formatProgramTimeRange; exports.formatWebinarTimeMeta = formatWebinarTimeMeta; exports.formatUrlForDisplay = formatUrlForDisplay; exports.SquareAvatar = SquareAvatar;