@flamingo-stack/openframe-frontend-core 0.0.744 → 0.0.746
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/export-map.json +1 -1
- package/dist/{chunk-LJ46XYYP.cjs → chunk-2ZVNXD74.cjs} +24 -24
- package/dist/{chunk-FTYQS6VI.cjs → chunk-3AUTORMB.cjs} +13 -13
- package/dist/{chunk-2JRCJV3M.cjs → chunk-3KVB5FQZ.cjs} +5 -5
- package/dist/{chunk-2UBR53AN.cjs → chunk-3OAACQQG.cjs} +4 -4
- package/dist/{chunk-QSO56JZ2.cjs → chunk-5X3F2KL7.cjs} +90 -90
- package/dist/{chunk-AT6ZI4CO.cjs → chunk-7AKFKPBV.cjs} +12 -12
- package/dist/{chunk-4N7KGOBS.cjs → chunk-B24U6KNJ.cjs} +3 -3
- package/dist/{chunk-H62FNZGG.cjs → chunk-DJ4YDVBF.cjs} +18 -18
- package/dist/{chunk-QZYF2YQ3.cjs → chunk-FAN73OTP.cjs} +6 -6
- package/dist/{chunk-HJ4KGA2M.cjs → chunk-GPSHFEF2.cjs} +1084 -890
- package/dist/{chunk-OC2LBQQJ.cjs → chunk-GSFANY2L.cjs} +80 -80
- package/dist/{chunk-URVIPSAJ.cjs → chunk-HNLI4OU5.cjs} +14 -14
- package/dist/{chunk-PYWHDPVC.cjs → chunk-IRKUFXVV.cjs} +38 -38
- package/dist/{chunk-ABLUMGCI.cjs → chunk-JHQNUWFM.cjs} +83 -33
- package/dist/{chunk-4A6OF4HI.cjs → chunk-KVPSV4ZI.cjs} +44 -44
- package/dist/{chunk-UY6A6TEY.cjs → chunk-L2IQESTQ.cjs} +2 -2
- package/dist/{chunk-YIOWV7LS.cjs → chunk-NZMQIAQC.cjs} +2 -2
- package/dist/{chunk-YJRMCFX3.cjs → chunk-O4J4NIMB.cjs} +7 -7
- package/dist/{chunk-GAGNKWOC.cjs → chunk-OWABNVDV.cjs} +2 -2
- package/dist/{chunk-HTQJYN47.cjs → chunk-PLBJ3XVC.cjs} +32 -32
- package/dist/{chunk-OWGLRE74.cjs → chunk-PSIKUDUV.cjs} +8 -8
- package/dist/{chunk-NURAL5HD.cjs → chunk-SDDZHPVK.cjs} +24 -24
- package/dist/{chunk-HHL23RFC.cjs → chunk-SLODGX6D.cjs} +35 -35
- package/dist/{chunk-7YDF3QBN.cjs → chunk-TILK7SC4.cjs} +320 -207
- package/dist/{chunk-U2O5YQRP.cjs → chunk-U6XWGK53.cjs} +33 -33
- package/dist/{chunk-JGZEHBBD.cjs → chunk-VZGCSVH7.cjs} +10 -10
- package/dist/{chunk-35IQLGV3.cjs → chunk-X4Y74M5K.cjs} +74 -74
- package/dist/{chunk-HMSUYWSB.cjs → chunk-XQJOYPPN.cjs} +4 -4
- package/dist/{chunk-65LJNDR2.cjs → chunk-YKF66VQY.cjs} +20 -20
- package/dist/{chunk-5TCIRWHL.cjs → chunk-YRULLK7N.cjs} +5 -5
- package/dist/{cloud-tenants-JPXAXSPE.cjs → cloud-tenants-OKUFSNPW.cjs} +13 -13
- package/dist/components/case-studies/index.cjs +25 -25
- package/dist/components/chat/index.cjs +9 -9
- package/dist/components/contact/index.cjs +14 -14
- package/dist/components/docs/index.cjs +17 -17
- package/dist/components/embeds/index.cjs +14 -14
- package/dist/components/embeds/reddit-embed-client.d.ts +3 -1
- package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/reddit-embed-client.js +5 -3
- package/dist/components/embeds/twitter-embed-client.d.ts +3 -1
- package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -1
- package/dist/components/embeds/twitter-embed-client.js +5 -3
- package/dist/components/faq/index.cjs +15 -15
- package/dist/components/features/index.cjs +13 -13
- package/dist/components/help-center-pages/index.cjs +116 -116
- package/dist/components/index.cjs +123 -125
- package/dist/components/meeting-scheduler/index.cjs +63 -63
- package/dist/components/navigation/index.cjs +16 -16
- package/dist/components/onboarding-guides/index.cjs +16 -16
- package/dist/components/product-demo/index.cjs +9 -9
- package/dist/components/related-content/index.cjs +7 -7
- package/dist/components/tickets/index.cjs +19 -19
- package/dist/components/ui/filter-checkbox-item.d.ts +8 -2
- package/dist/components/ui/filter-checkbox-item.d.ts.map +1 -1
- package/dist/components/ui/filter-checkbox-item.js +14 -4
- package/dist/components/ui/index.cjs +17 -13
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +1 -0
- package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
- package/dist/components/ui/markdown/base-components.js +3 -2
- package/dist/components/ui/markdown/rich/embed-overrides.d.ts.map +1 -1
- package/dist/components/ui/markdown/rich/embed-overrides.js +11 -8
- package/dist/components/ui/markdown-editor.d.ts.map +1 -1
- package/dist/components/ui/markdown-editor.js +4 -0
- package/dist/components/ui/markdown-link-command.d.ts +37 -0
- package/dist/components/ui/markdown-link-command.d.ts.map +1 -0
- package/dist/components/ui/markdown-link-command.js +180 -0
- package/dist/components/unified-filter-logic.js +1 -1
- package/dist/components/vendor-tag.d.ts +12 -0
- package/dist/components/vendor-tag.d.ts.map +1 -1
- package/dist/components/vendor-tag.js +50 -47
- package/dist/{devices-ONC4JOVH.cjs → devices-URCDMYFU.cjs} +14 -14
- package/dist/{embeddable-chat-7ZEGCDVF.cjs → embeddable-chat-B35GB5B6.cjs} +80 -80
- package/dist/index.cjs +36 -18
- package/dist/{knowledge-G7XU5YST.cjs → knowledge-5MW2PREQ.cjs} +14 -14
- package/dist/{logs-5B7NY4G6.cjs → logs-LJJK5CK4.cjs} +21 -21
- package/dist/{policies-OYR3SLJN.cjs → policies-6TCEWQYG.cjs} +17 -17
- package/dist/{remote-session-N4PJB5FW.cjs → remote-session-IYT4LWJC.cjs} +7 -7
- package/dist/{scripts-6CWHTY6U.cjs → scripts-ABB2P6PT.cjs} +20 -20
- package/dist/{software-update-AJPIY4SQ.cjs → software-update-4427ZRMO.cjs} +17 -17
- package/dist/{tickets-board-O753S4ZB.cjs → tickets-board-4MT6ZB4F.cjs} +8 -8
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +2 -3
- package/dist/utils/index.cjs +193 -28
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +9 -6
- package/dist/utils/markdown-link.d.ts +44 -0
- package/dist/utils/markdown-link.d.ts.map +1 -0
- package/dist/utils/markdown-link.js +83 -0
- package/dist/utils/markdown-to-plain.d.ts +3 -16
- package/dist/utils/markdown-to-plain.d.ts.map +1 -1
- package/dist/utils/markdown-to-plain.js +33 -3
- package/dist/utils/vendor-classification.d.ts +43 -17
- package/dist/utils/vendor-classification.d.ts.map +1 -1
- package/dist/utils/vendor-classification.js +73 -22
- package/package.json +3 -1
- package/src/components/embeds/reddit-embed-client.tsx +7 -3
- package/src/components/embeds/twitter-embed-client.tsx +7 -3
- package/src/components/ui/filter-checkbox-item.tsx +21 -5
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/markdown/base-components.tsx +5 -2
- package/src/components/ui/markdown/rich/embed-overrides.tsx +12 -9
- package/src/components/ui/markdown-editor.tsx +6 -0
- package/src/components/ui/markdown-link-command.tsx +252 -0
- package/src/components/unified-filter-logic.tsx +1 -1
- package/src/components/vendor-tag.tsx +73 -69
- package/src/utils/format.ts +2 -3
- package/src/utils/index.ts +8 -5
- package/src/utils/markdown-link.ts +148 -0
- package/src/utils/markdown-to-plain.ts +64 -22
- package/src/utils/vendor-classification.ts +113 -34
- package/dist/utils/format-text-stub.d.ts +0 -5
- package/dist/utils/format-text-stub.d.ts.map +0 -1
- package/dist/utils/format-text-stub.js +0 -20
- 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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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,
|
|
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 } =
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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 ?
|
|
519
|
-
const tooltipLabel = ticket.createdAt ?
|
|
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
|
-
|
|
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,
|
|
789
|
-
hidden > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
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,7 +1,7 @@
|
|
|
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
|
|
4
|
+
var _chunk3OAACQQGcjs = require('./chunk-3OAACQQG.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -12,7 +12,7 @@ var _chunk2UBR53ANcjs = require('./chunk-2UBR53AN.cjs');
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkGPSHFEF2cjs = require('./chunk-GPSHFEF2.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
var _chunkNTGIQP7Ocjs = require('./chunk-NTGIQP7O.cjs');
|
|
@@ -32,13 +32,13 @@ var _chunk24I6RFVUcjs = require('./chunk-24I6RFVU.cjs');
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
var
|
|
35
|
+
var _chunkGSFANY2Lcjs = require('./chunk-GSFANY2L.cjs');
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _chunkTILK7SC4cjs = require('./chunk-TILK7SC4.cjs');
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
var
|
|
41
|
+
var _chunkPSIKUDUVcjs = require('./chunk-PSIKUDUV.cjs');
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
var _chunk756VZNPPcjs = require('./chunk-756VZNPP.cjs');
|
|
@@ -87,11 +87,11 @@ var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
|
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
var
|
|
90
|
+
var _chunk2ZVNXD74cjs = require('./chunk-2ZVNXD74.cjs');
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
|
|
94
|
-
var
|
|
94
|
+
var _chunkJHQNUWFMcjs = require('./chunk-JHQNUWFM.cjs');
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
var _chunkR34JD6NPcjs = require('./chunk-R34JD6NP.cjs');
|
|
@@ -155,7 +155,7 @@ function RowGlyph({ link, box, glyph }) {
|
|
|
155
155
|
{
|
|
156
156
|
"aria-hidden": "true",
|
|
157
157
|
className: _chunk3ATAYP36cjs.cn.call(void 0, "flex shrink-0 items-center justify-center overflow-hidden rounded-full", box),
|
|
158
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
158
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2ZVNXD74cjs.EntityIcon, { icon: link.icon, className: "h-full w-full" })
|
|
159
159
|
}
|
|
160
160
|
);
|
|
161
161
|
}
|
|
@@ -168,7 +168,7 @@ function RowGlyph({ link, box, glyph }) {
|
|
|
168
168
|
"flex shrink-0 items-center justify-center rounded-lg border border-ods-border bg-ods-bg text-ods-text-primary",
|
|
169
169
|
box
|
|
170
170
|
),
|
|
171
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
171
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2ZVNXD74cjs.EntityIcon, { icon: { name: link.iconName }, size: glyph })
|
|
172
172
|
}
|
|
173
173
|
);
|
|
174
174
|
}
|
|
@@ -181,7 +181,7 @@ function NavItemRow({
|
|
|
181
181
|
className
|
|
182
182
|
}) {
|
|
183
183
|
const label = navLinkLabel(link);
|
|
184
|
-
const counter = badge ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
184
|
+
const counter = badge ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.UnreadCountBadge, { count: badge, className: "static shrink-0" }) : null;
|
|
185
185
|
const singleLine = !link.description && !link.builtOn;
|
|
186
186
|
const rowClassName = _chunk3ATAYP36cjs.cn.call(void 0,
|
|
187
187
|
ROW_CLASSES[variant],
|
|
@@ -198,7 +198,7 @@ function NavItemRow({
|
|
|
198
198
|
] });
|
|
199
199
|
} else if (variant === "side") {
|
|
200
200
|
children = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
201
|
-
link.iconName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "flex shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
201
|
+
link.iconName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "flex shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2ZVNXD74cjs.EntityIcon, { icon: { name: link.iconName }, size: 18 }) }),
|
|
202
202
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1", children: label }),
|
|
203
203
|
counter
|
|
204
204
|
] });
|
|
@@ -302,7 +302,7 @@ var NavPanel = _react.forwardRef.call(void 0, function NavPanelImpl({
|
|
|
302
302
|
!!_optionalChain([menu, 'access', _10 => _10.features, 'optionalAccess', _11 => _11.length]) && // One row of cards, as many as the bar's width holds: a card that
|
|
303
303
|
// would wrap lands on a zero-height row, where its cell clips it.
|
|
304
304
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid min-w-0 flex-[3] auto-rows-[0px] grid-cols-[repeat(auto-fit,minmax(240px,1fr))] grid-rows-[minmax(0,1fr)] gap-x-[var(--spacing-system-mf)]", children: menu.features.map((feature) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 min-w-0 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
305
|
-
|
|
305
|
+
_chunk2ZVNXD74cjs.CaseStudyCard,
|
|
306
306
|
{
|
|
307
307
|
size: "menu",
|
|
308
308
|
study: feature.study,
|
|
@@ -419,7 +419,7 @@ function TopNavigation({
|
|
|
419
419
|
|
|
420
420
|
var TOP_ITEM_CLASS = "relative inline-flex h-10 items-center gap-1.5 whitespace-nowrap rounded-md px-3.5 text-ods-text-secondary transition-colors text-h6 hover:bg-ods-bg-hover hover:text-ods-text-primary";
|
|
421
421
|
var TOP_ITEM_CURRENT_CLASS = "rounded-b-none bg-gradient-to-b from-transparent to-ods-accent/10 text-ods-text-primary after:absolute after:inset-x-0 after:bottom-0 after:h-0.5 after:bg-ods-accent";
|
|
422
|
-
var menuIcon = (menu) => menu.iconName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
422
|
+
var menuIcon = (menu) => menu.iconName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2ZVNXD74cjs.EntityIcon, { icon: { name: menu.iconName }, size: 20, className: "size-5 shrink-0" }) : null;
|
|
423
423
|
function SiteHeader({
|
|
424
424
|
nav,
|
|
425
425
|
pathname,
|
|
@@ -569,7 +569,7 @@ function SiteHeader({
|
|
|
569
569
|
leading: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
570
570
|
leading,
|
|
571
571
|
mobile && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
572
|
-
|
|
572
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
573
573
|
{
|
|
574
574
|
className: "border-r border-ods-border lg:hidden",
|
|
575
575
|
onClick: mobile.onToggle,
|
|
@@ -595,7 +595,7 @@ function SiteHeader({
|
|
|
595
595
|
centerClassName: "justify-start pl-[var(--spacing-system-xlf)]",
|
|
596
596
|
cta: hasRight ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
597
597
|
mingo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
598
|
-
|
|
598
|
+
_chunkGSFANY2Lcjs.MingoAiButton,
|
|
599
599
|
{
|
|
600
600
|
source: mingo.source,
|
|
601
601
|
icon: mingo.icon,
|
|
@@ -697,7 +697,7 @@ function MobileNavSheetBody({
|
|
|
697
697
|
] }),
|
|
698
698
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain px-5", children: [
|
|
699
699
|
askAI && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
700
|
-
|
|
700
|
+
_chunkGSFANY2Lcjs.MingoAiButton,
|
|
701
701
|
{
|
|
702
702
|
variant: "field",
|
|
703
703
|
source: askAI.source,
|
|
@@ -875,7 +875,7 @@ function SiteFooter({
|
|
|
875
875
|
const columns = nav.footerColumns;
|
|
876
876
|
const accordion = columns.length > ACCORDION_OVER;
|
|
877
877
|
const socialRow = _nullishCoalesce(social, () => ( (nav.brand.social.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
878
|
-
|
|
878
|
+
_chunkGPSHFEF2cjs.SocialIconRow,
|
|
879
879
|
{
|
|
880
880
|
compact: true,
|
|
881
881
|
links: nav.brand.social.map((link) => ({
|
|
@@ -978,7 +978,7 @@ var _framermotion = require('framer-motion');
|
|
|
978
978
|
|
|
979
979
|
function SlidingSidebar({ config }) {
|
|
980
980
|
const [expandedItems, setExpandedItems] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
|
|
981
|
-
const mounted =
|
|
981
|
+
const mounted = _chunkTILK7SC4cjs.useIsHydrated.call(void 0, );
|
|
982
982
|
const headerHeight = _chunk24I6RFVUcjs.useHeaderHeight.call(void 0, );
|
|
983
983
|
const asideRef = _react.useRef.call(void 0, null);
|
|
984
984
|
const prefersReducedMotion = _framermotion.useReducedMotion.call(void 0, );
|
|
@@ -1186,7 +1186,7 @@ function NavigationSidebarHeader({ minimized }) {
|
|
|
1186
1186
|
|
|
1187
1187
|
function NavigationItemBadge({ label, compact = false, className, ...rest }) {
|
|
1188
1188
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1189
|
-
|
|
1189
|
+
_chunkJHQNUWFMcjs.Tag,
|
|
1190
1190
|
{
|
|
1191
1191
|
as: "span",
|
|
1192
1192
|
label,
|
|
@@ -1251,7 +1251,7 @@ var NavigationSidebarItemButton = _react.memo.call(void 0, function NavigationSi
|
|
|
1251
1251
|
_react.cloneElement.call(void 0, item.icon, {
|
|
1252
1252
|
color: isActive && !disabled ? "text-ods-accent" : "text-ods-text-secondary"
|
|
1253
1253
|
}),
|
|
1254
|
-
hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1254
|
+
hasUnread && !showLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.UnreadDot, { size: "fixed" })
|
|
1255
1255
|
] }),
|
|
1256
1256
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1257
1257
|
"span",
|
|
@@ -1352,7 +1352,7 @@ function NavigationSidebar({ config, disabled = false, pushOnTablet = false }) {
|
|
|
1352
1352
|
setTabletFor(isTablet);
|
|
1353
1353
|
if (isTablet) setTabletMinimized(true);
|
|
1354
1354
|
}
|
|
1355
|
-
const hydrated =
|
|
1355
|
+
const hydrated = _chunkTILK7SC4cjs.useIsHydrated.call(void 0, );
|
|
1356
1356
|
const minimized = hydrated ? isTablet ? tabletMinimized : desktopMinimized : _nullishCoalesce(config.minimized, () => ( false));
|
|
1357
1357
|
const [transitionsEnabled, setTransitionsEnabled] = _react.useState.call(void 0, false);
|
|
1358
1358
|
const isOverlayOpen = isTablet && !minimized;
|
|
@@ -1544,7 +1544,7 @@ function HeaderGlobalSearch({
|
|
|
1544
1544
|
"form",
|
|
1545
1545
|
{
|
|
1546
1546
|
onSubmit: handleSubmit,
|
|
1547
|
-
...
|
|
1547
|
+
..._chunkGSFANY2Lcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
|
|
1548
1548
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
1549
1549
|
"flex h-full flex-1 items-center gap-2 px-3",
|
|
1550
1550
|
// Transparent so the cell inherits the bar's background
|
|
@@ -1615,7 +1615,7 @@ function HeaderMingoButton({
|
|
|
1615
1615
|
) : (
|
|
1616
1616
|
// Outer frame follows the button's text color (currentColor); the eyes
|
|
1617
1617
|
// and corner block are ODS cyan.
|
|
1618
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1618
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPSIKUDUVcjs.AgentMark, { agent: "mingo", className: "h-6 w-6 shrink-0" })
|
|
1619
1619
|
),
|
|
1620
1620
|
!iconOnly && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "whitespace-nowrap font-bold tracking-[-0.36px] text-h3", children: "Mingo AI" })
|
|
1621
1621
|
]
|
|
@@ -1669,16 +1669,16 @@ function HeaderOrganizationFilter({
|
|
|
1669
1669
|
// src/components/navigation/ticket-alerts-button.tsx
|
|
1670
1670
|
|
|
1671
1671
|
function TicketAlertsButton({ href, onNavigate, disabled, className }) {
|
|
1672
|
-
const live =
|
|
1672
|
+
const live = _chunk3OAACQQGcjs.useOptionalTicketLive.call(void 0, );
|
|
1673
1673
|
if (!live || !live.authed || live.unreadTotal === 0) return null;
|
|
1674
1674
|
const targetId = live.nextUnreadTicketId;
|
|
1675
|
-
const target = targetId ?
|
|
1675
|
+
const target = targetId ? _chunkGSFANY2Lcjs.buildTicketOpenHref.call(void 0, href, targetId) : href;
|
|
1676
1676
|
const handleClick = () => {
|
|
1677
1677
|
if (onNavigate) onNavigate(target);
|
|
1678
1678
|
else window.location.assign(target);
|
|
1679
1679
|
};
|
|
1680
1680
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1681
|
-
|
|
1681
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
1682
1682
|
{
|
|
1683
1683
|
icon: (
|
|
1684
1684
|
// Glyph inherits HeaderButton's standard cell coloring (secondary at
|
|
@@ -1688,7 +1688,7 @@ function TicketAlertsButton({ href, onNavigate, disabled, className }) {
|
|
|
1688
1688
|
// existing while updates are unread — never by tinting the glyph.
|
|
1689
1689
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "relative inline-flex", children: [
|
|
1690
1690
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk365ZKGGOcjs.LifeBuoyIcon, { className: "h-6 w-6" }),
|
|
1691
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1691
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.UnreadCountBadge, { count: live.unreadTotal })
|
|
1692
1692
|
] })
|
|
1693
1693
|
),
|
|
1694
1694
|
"aria-label": `Support tickets \u2014 ${live.unreadTotal} unread ${live.unreadTotal === 1 ? "update" : "updates"}`,
|
|
@@ -1764,7 +1764,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1764
1764
|
leading: (
|
|
1765
1765
|
// Mobile: Burger Menu Button
|
|
1766
1766
|
!isMdUp && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1767
|
-
|
|
1767
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
1768
1768
|
{
|
|
1769
1769
|
onClick: onToggleMobileMenu,
|
|
1770
1770
|
isActive: isMobileMenuOpen,
|
|
@@ -1790,7 +1790,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1790
1790
|
center: showSearch ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderGlobalSearch, { onSubmit: onSearch, className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", dimmedClass) }) : void 0,
|
|
1791
1791
|
sideActions: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1792
1792
|
showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1793
|
-
|
|
1793
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
1794
1794
|
{
|
|
1795
1795
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ74QE57Tcjs.SearchIcon, { className: "h-6 w-6" }),
|
|
1796
1796
|
"aria-label": "Search",
|
|
@@ -1807,7 +1807,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1807
1807
|
className: _chunk3ATAYP36cjs.cn.call(void 0, "hidden lg:flex", dimmedClass)
|
|
1808
1808
|
}
|
|
1809
1809
|
),
|
|
1810
|
-
showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1810
|
+
showTimeTracker && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.TimeTrackerHeaderButton, { disabled, className: _chunk3ATAYP36cjs.cn.call(void 0, cellDivider, dimmedClass) }),
|
|
1811
1811
|
showNotifications && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1812
1812
|
NotificationsHeaderButton,
|
|
1813
1813
|
{
|
|
@@ -1827,10 +1827,10 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1827
1827
|
),
|
|
1828
1828
|
isMdUp && showUser && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkL2RMTGOKcjs.DropdownMenu, { children: [
|
|
1829
1829
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL2RMTGOKcjs.DropdownMenuTrigger, { asChild: true, disabled, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1830
|
-
|
|
1830
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
1831
1831
|
{
|
|
1832
1832
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1833
|
-
|
|
1833
|
+
_chunkJHQNUWFMcjs.SquareAvatar,
|
|
1834
1834
|
{
|
|
1835
1835
|
src: userAvatarUrl || void 0,
|
|
1836
1836
|
alt: userName || "User",
|
|
@@ -1856,7 +1856,7 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1856
1856
|
children: [
|
|
1857
1857
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 border-b border-ods-border bg-ods-card p-3", children: [
|
|
1858
1858
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1859
|
-
|
|
1859
|
+
_chunkJHQNUWFMcjs.SquareAvatar,
|
|
1860
1860
|
{
|
|
1861
1861
|
src: userAvatarUrl || void 0,
|
|
1862
1862
|
alt: userName || "User",
|
|
@@ -1912,12 +1912,12 @@ var AppHeader = _react2.default.memo(function AppHeaderImpl({
|
|
|
1912
1912
|
);
|
|
1913
1913
|
});
|
|
1914
1914
|
function NotificationsHeaderButton({ fallbackUnreadCount, disabled, dimmedClass }) {
|
|
1915
|
-
const ctx =
|
|
1915
|
+
const ctx = _chunkGPSHFEF2cjs.useOptionalNotifications.call(void 0, );
|
|
1916
1916
|
const hasUnread = (_nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _52 => _52.unreadCount]), () => ( fallbackUnreadCount))) > 0;
|
|
1917
1917
|
const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _53 => _53.isOpen]), () => ( false));
|
|
1918
1918
|
const onClick = _optionalChain([ctx, 'optionalAccess', _54 => _54.toggle]);
|
|
1919
1919
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1920
|
-
|
|
1920
|
+
_chunkGPSHFEF2cjs.HeaderButton,
|
|
1921
1921
|
{
|
|
1922
1922
|
icon: isActive ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWWUSFOJ7cjs.XmarkIcon, { className: "h-6 w-6" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCON36SEJcjs.BellIcon, { className: "h-6 w-6" }),
|
|
1923
1923
|
showUnreadDot: !isActive && hasUnread,
|
|
@@ -2475,7 +2475,7 @@ var MobileBurgerMenu = _react2.default.memo(function MobileBurgerMenuImpl({
|
|
|
2475
2475
|
"aria-disabled": disabled || void 0,
|
|
2476
2476
|
children: [
|
|
2477
2477
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2478
|
-
|
|
2478
|
+
_chunkJHQNUWFMcjs.SquareAvatar,
|
|
2479
2479
|
{
|
|
2480
2480
|
src: user.userAvatarUrl || void 0,
|
|
2481
2481
|
alt: user.userName || "User",
|
|
@@ -2590,7 +2590,7 @@ function AppLayout({
|
|
|
2590
2590
|
}),
|
|
2591
2591
|
[]
|
|
2592
2592
|
);
|
|
2593
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2593
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.AppLayoutDrawerContainerContext.Provider, { value: drawerContainer, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.AppLayoutDrawerCoordinationContext.Provider, { value: drawerCoordination, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex h-screen flex-col bg-ods-bg", className), children: [
|
|
2594
2594
|
topBar,
|
|
2595
2595
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative flex min-h-0 flex-1", children: [
|
|
2596
2596
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, NavigationSidebar, { config: sidebarConfig, disabled, pushOnTablet: hasSidePanel }),
|
|
@@ -2614,7 +2614,7 @@ function AppLayout({
|
|
|
2614
2614
|
disabled
|
|
2615
2615
|
}
|
|
2616
2616
|
),
|
|
2617
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2617
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGPSHFEF2cjs.NotificationDrawer, {}),
|
|
2618
2618
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
2619
2619
|
"div",
|
|
2620
2620
|
{
|
|
@@ -309,35 +309,85 @@ function Tag({
|
|
|
309
309
|
}
|
|
310
310
|
|
|
311
311
|
// src/utils/vendor-classification.ts
|
|
312
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
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
|
|
337
|
-
|
|
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
|
|
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',
|
|
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',
|
|
548
|
-
return `${part("year")}/${part("month")}/${part("day")}${_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
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',
|
|
559
|
-
..._optionalChain([options, 'optionalAccess',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'").replace(/'/g, "'").replace(/&/g, "&").replace(/\s+/g, " ").trim();
|
|
736
786
|
}
|
|
737
787
|
function formatClassification(classification) {
|
|
738
|
-
|
|
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
|
-
|
|
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;
|