@flamingo-stack/openframe-frontend-core 0.0.757 → 0.0.759
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-7RADSQJF.cjs → chunk-4IXA5CJT.cjs} +142 -96
- package/dist/{chunk-S5ITKW6G.cjs → chunk-6VDOHVYE.cjs} +83 -82
- package/dist/{chunk-RPADJ2E6.cjs → chunk-7ITYKDJN.cjs} +3 -3
- package/dist/{chunk-ORC3ZKHT.cjs → chunk-CDA2MY7U.cjs} +48 -24
- package/dist/{chunk-L2RNZOCI.cjs → chunk-DHFQECP3.cjs} +11 -11
- package/dist/{chunk-33RJU565.cjs → chunk-EFCX5SYN.cjs} +2 -2
- package/dist/{chunk-WSRMYHIV.cjs → chunk-F7WIKBRI.cjs} +2 -2
- package/dist/{chunk-JEIAB7JQ.cjs → chunk-G7RDJACG.cjs} +2 -2
- package/dist/{chunk-AZFSHHWT.cjs → chunk-I4W4DQ6C.cjs} +4 -4
- package/dist/{chunk-BLYP7ZT4.cjs → chunk-O75A3FBT.cjs} +47 -36
- package/dist/{chunk-NTGIQP7O.cjs → chunk-QU5K52OP.cjs} +8 -2
- package/dist/{chunk-VD4HVLXG.cjs → chunk-S23DIVIP.cjs} +25 -25
- package/dist/{chunk-UWXUGP3V.cjs → chunk-SIOSQMIB.cjs} +3 -3
- package/dist/{chunk-33PJH2TF.cjs → chunk-SYACKQYF.cjs} +13 -13
- package/dist/{chunk-HB3QFOHD.cjs → chunk-WBSYC6EY.cjs} +5 -5
- package/dist/{chunk-CT3UDNAV.cjs → chunk-WGFTIEHY.cjs} +75 -68
- package/dist/{chunk-3C4U4UW6.cjs → chunk-XXM74P3N.cjs} +1 -1
- package/dist/{cloud-tenants-PA5UU2KQ.cjs → cloud-tenants-YUMG3O36.cjs} +4 -4
- package/dist/components/case-studies/index.cjs +12 -12
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/docs/doc-viewer.d.ts +4 -0
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/doc-viewer.js +3 -0
- package/dist/components/docs/index.cjs +8 -8
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/docs/use-document-tree.js +9 -1
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/help-center-pages/index.cjs +58 -57
- package/dist/components/help-center-pages/trust-center-page.d.ts +7 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-page.js +4 -3
- package/dist/components/index.cjs +35 -33
- package/dist/components/layout/page-data-sync.d.ts +18 -0
- package/dist/components/layout/page-data-sync.d.ts.map +1 -0
- package/dist/components/layout/page-data-sync.js +33 -0
- package/dist/components/meeting-scheduler/index.cjs +20 -20
- package/dist/components/navigation/index.cjs +7 -7
- package/dist/components/onboarding-guides/index.cjs +6 -6
- package/dist/components/product-demo/index.cjs +7 -7
- package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-lists.js +6 -0
- package/dist/components/shared/dev-section/dev-section-view.d.ts +3 -16
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.js +6 -13
- package/dist/components/shared/legal-document/legal-document-page.d.ts +1 -3
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +3 -9
- package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-view.js +29 -17
- package/dist/components/tickets/hooks/use-tickets-list.d.ts +4 -0
- package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
- package/dist/components/tickets/hooks/use-tickets-list.js +1 -0
- package/dist/components/tickets/index.cjs +9 -9
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-center.js +5 -6
- package/dist/components/ui/data-attribution.d.ts +13 -0
- package/dist/components/ui/data-attribution.d.ts.map +1 -1
- package/dist/components/ui/data-attribution.js +30 -1
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +5 -2
- package/dist/components/ui/index.cjs +6 -4
- package/dist/{devices-72YSJM4Z.cjs → devices-EFDFNWIV.cjs} +5 -5
- package/dist/{embeddable-chat-CHHWPGAY.cjs → embeddable-chat-LTXUQWEK.cjs} +4 -4
- package/dist/index.cjs +14 -8
- package/dist/{knowledge-76RIDA7P.cjs → knowledge-UT2XI45N.cjs} +4 -4
- package/dist/{logs-ODMJ3KOP.cjs → logs-ZTYEI35Y.cjs} +12 -12
- package/dist/{policies-5BZ5X2S4.cjs → policies-S3IF2U3D.cjs} +8 -8
- package/dist/{scripts-TWQPG46M.cjs → scripts-IZWNCX5A.cjs} +9 -9
- package/dist/{software-update-TSGISQV5.cjs → software-update-6T4GFJPA.cjs} +7 -7
- package/dist/types/data-sync.d.ts +22 -0
- package/dist/types/data-sync.d.ts.map +1 -0
- package/dist/types/data-sync.js +12 -0
- package/dist/types/doc-source.d.ts +4 -0
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/types/index.cjs +12 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/package.json +1 -1
- package/src/components/docs/doc-viewer.tsx +9 -0
- package/src/components/docs/use-document-tree.ts +10 -0
- package/src/components/help-center-pages/trust-center-page.tsx +10 -3
- package/src/components/layout/page-data-sync.tsx +60 -0
- package/src/components/shared/delivery/delivery-lists.tsx +12 -2
- package/src/components/shared/dev-section/dev-section-view.tsx +37 -56
- package/src/components/shared/legal-document/legal-document-page.tsx +5 -13
- package/src/components/shared/roadmap/roadmap-view.tsx +37 -20
- package/src/components/tickets/hooks/use-tickets-list.ts +7 -0
- package/src/components/tickets/ticket-center.tsx +7 -3
- package/src/components/ui/data-attribution.tsx +44 -0
- package/src/components/ui/drawer.tsx +12 -1
- package/src/types/data-sync.ts +26 -0
- package/src/types/doc-source.ts +4 -0
- package/src/types/index.ts +1 -0
|
@@ -8,9 +8,9 @@ var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
|
|
|
8
8
|
var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
|
|
12
12
|
require('./chunk-2ANICXS7.cjs');
|
|
13
|
-
require('./chunk-
|
|
13
|
+
require('./chunk-QU5K52OP.cjs');
|
|
14
14
|
require('./chunk-AXBVN5SW.cjs');
|
|
15
15
|
require('./chunk-HQQE74RO.cjs');
|
|
16
16
|
require('./chunk-DEY6XXGO.cjs');
|
|
@@ -21,7 +21,7 @@ require('./chunk-A6P6DHEZ.cjs');
|
|
|
21
21
|
require('./chunk-MZ4KBSH7.cjs');
|
|
22
22
|
require('./chunk-T4BBZ5ST.cjs');
|
|
23
23
|
require('./chunk-YUMFVQIN.cjs');
|
|
24
|
-
require('./chunk-
|
|
24
|
+
require('./chunk-XXM74P3N.cjs');
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
var _chunkQTYSYEHKcjs = require('./chunk-QTYSYEHK.cjs');
|
|
@@ -1907,7 +1907,7 @@ function KnowledgeScreen(_props) {
|
|
|
1907
1907
|
const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
|
|
1908
1908
|
const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
|
|
1909
1909
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1910
|
-
|
|
1910
|
+
_chunk4IXA5CJTcjs.KnowledgeBaseArticleView,
|
|
1911
1911
|
{
|
|
1912
1912
|
...fixture.article,
|
|
1913
1913
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQTYSYEHKcjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
|
|
@@ -16,9 +16,9 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
|
|
20
20
|
require('./chunk-2ANICXS7.cjs');
|
|
21
|
-
require('./chunk-
|
|
21
|
+
require('./chunk-QU5K52OP.cjs');
|
|
22
22
|
require('./chunk-AXBVN5SW.cjs');
|
|
23
23
|
require('./chunk-HQQE74RO.cjs');
|
|
24
24
|
require('./chunk-DEY6XXGO.cjs');
|
|
@@ -31,7 +31,7 @@ require('./chunk-T4BBZ5ST.cjs');
|
|
|
31
31
|
require('./chunk-YUMFVQIN.cjs');
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.cjs');
|
|
35
35
|
require('./chunk-QTYSYEHK.cjs');
|
|
36
36
|
require('./chunk-F64VMOIB.cjs');
|
|
37
37
|
require('./chunk-3RFQPQ7Z.cjs');
|
|
@@ -1888,7 +1888,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
|
|
|
1888
1888
|
id: logId,
|
|
1889
1889
|
logId,
|
|
1890
1890
|
timestamp: displayTime(_chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, minutesAgo)),
|
|
1891
|
-
status: { label: severity, variant:
|
|
1891
|
+
status: { label: severity, variant: _chunk4IXA5CJTcjs.logSeverityVariant.call(void 0, severity) },
|
|
1892
1892
|
source: { name: toolType, toolType },
|
|
1893
1893
|
device: device2,
|
|
1894
1894
|
description: { title: summary }
|
|
@@ -1960,13 +1960,13 @@ var NO_FILTERS = {};
|
|
|
1960
1960
|
var ACTION_COLUMNS = ["copy", "quickView", "open"];
|
|
1961
1961
|
var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
|
|
1962
1962
|
var logHref = () => "#";
|
|
1963
|
-
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1963
|
+
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.LogCopyIconButton, {});
|
|
1964
1964
|
function LogsScreen({ compact = false }) {
|
|
1965
1965
|
const [dock, setDock] = _react.useState.call(void 0, null);
|
|
1966
1966
|
const selected = LOGS_FIXTURE_SELECTED;
|
|
1967
1967
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
|
|
1968
1968
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1969
|
-
|
|
1969
|
+
_chunk4IXA5CJTcjs.LogsPageView,
|
|
1970
1970
|
{
|
|
1971
1971
|
showHeader: false,
|
|
1972
1972
|
className: "p-[var(--spacing-system-l)]",
|
|
@@ -1974,7 +1974,7 @@ function LogsScreen({ compact = false }) {
|
|
|
1974
1974
|
onSearchChange: noop,
|
|
1975
1975
|
onOpenFilters: noop,
|
|
1976
1976
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1977
|
-
|
|
1977
|
+
_chunk4IXA5CJTcjs.LogsTableView,
|
|
1978
1978
|
{
|
|
1979
1979
|
logs: LOGS_FIXTURE_ENTRIES,
|
|
1980
1980
|
facets: LOGS_FIXTURE_FACETS,
|
|
@@ -1988,8 +1988,8 @@ function LogsScreen({ compact = false }) {
|
|
|
1988
1988
|
)
|
|
1989
1989
|
}
|
|
1990
1990
|
) }),
|
|
1991
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1992
|
-
|
|
1991
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1992
|
+
_chunk4IXA5CJTcjs.LogDrawer,
|
|
1993
1993
|
{
|
|
1994
1994
|
docked: true,
|
|
1995
1995
|
isOpen: true,
|
|
@@ -2001,12 +2001,12 @@ function LogsScreen({ compact = false }) {
|
|
|
2001
2001
|
{ label: "Log ID", value: selected.logId },
|
|
2002
2002
|
{
|
|
2003
2003
|
label: "Source",
|
|
2004
|
-
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2004
|
+
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.ToolBadge, { toolType: _chunkXXM74P3Ncjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
|
|
2005
2005
|
},
|
|
2006
|
-
{ label: "Device", value:
|
|
2006
|
+
{ label: "Device", value: _chunk4IXA5CJTcjs.logSourceLabels.call(void 0, selected.device).deviceName }
|
|
2007
2007
|
],
|
|
2008
2008
|
deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2009
|
-
|
|
2009
|
+
_chunk4IXA5CJTcjs.DeviceCard,
|
|
2010
2010
|
{
|
|
2011
2011
|
...LOGS_FIXTURE_DEVICE,
|
|
2012
2012
|
actions: {
|
|
@@ -10,9 +10,9 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
|
|
14
14
|
require('./chunk-2ANICXS7.cjs');
|
|
15
|
-
require('./chunk-
|
|
15
|
+
require('./chunk-QU5K52OP.cjs');
|
|
16
16
|
require('./chunk-AXBVN5SW.cjs');
|
|
17
17
|
require('./chunk-HQQE74RO.cjs');
|
|
18
18
|
require('./chunk-DEY6XXGO.cjs');
|
|
@@ -23,7 +23,7 @@ require('./chunk-A6P6DHEZ.cjs');
|
|
|
23
23
|
require('./chunk-MZ4KBSH7.cjs');
|
|
24
24
|
require('./chunk-T4BBZ5ST.cjs');
|
|
25
25
|
require('./chunk-YUMFVQIN.cjs');
|
|
26
|
-
require('./chunk-
|
|
26
|
+
require('./chunk-XXM74P3N.cjs');
|
|
27
27
|
require('./chunk-QTYSYEHK.cjs');
|
|
28
28
|
require('./chunk-F64VMOIB.cjs');
|
|
29
29
|
require('./chunk-3RFQPQ7Z.cjs');
|
|
@@ -1893,14 +1893,14 @@ var POLICIES = [
|
|
|
1893
1893
|
policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
|
|
1894
1894
|
];
|
|
1895
1895
|
var POLICIES_FIXTURE = {
|
|
1896
|
-
summary:
|
|
1896
|
+
summary: _chunk4IXA5CJTcjs.computePolicySummary.call(void 0, POLICIES),
|
|
1897
1897
|
rows: POLICIES.map((item) => ({
|
|
1898
1898
|
id: item.id,
|
|
1899
1899
|
name: item.name,
|
|
1900
1900
|
description: item.description,
|
|
1901
1901
|
critical: item.critical,
|
|
1902
1902
|
severityLabel: item.critical ? "Critical" : "Low",
|
|
1903
|
-
status:
|
|
1903
|
+
status: _chunk4IXA5CJTcjs.getPolicyTableStatus.call(void 0, item),
|
|
1904
1904
|
actions: [
|
|
1905
1905
|
{ label: "Policy Details", onClick: noop },
|
|
1906
1906
|
{ label: "Delete Policy", onClick: noop }
|
|
@@ -1914,16 +1914,16 @@ var POLICIES_FIXTURE = {
|
|
|
1914
1914
|
var _jsxruntime = require('react/jsx-runtime');
|
|
1915
1915
|
function PoliciesScreen({ compact = false }) {
|
|
1916
1916
|
const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1917
|
-
|
|
1917
|
+
_chunk4IXA5CJTcjs.PoliciesTable,
|
|
1918
1918
|
{
|
|
1919
1919
|
rows: POLICIES_FIXTURE.rows,
|
|
1920
1920
|
rowAsLink: true,
|
|
1921
|
-
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1921
|
+
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.DataTable.RowCount, {}),
|
|
1922
1922
|
emptyMessage: "No policies found."
|
|
1923
1923
|
}
|
|
1924
1924
|
);
|
|
1925
1925
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col gap-[var(--spacing-system-l)] bg-ods-bg p-[var(--spacing-system-l)]", children: [
|
|
1926
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1926
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
|
|
1927
1927
|
table
|
|
1928
1928
|
] });
|
|
1929
1929
|
}
|
|
@@ -13,9 +13,9 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
|
|
17
17
|
require('./chunk-2ANICXS7.cjs');
|
|
18
|
-
require('./chunk-
|
|
18
|
+
require('./chunk-QU5K52OP.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
|
|
@@ -28,7 +28,7 @@ require('./chunk-A6P6DHEZ.cjs');
|
|
|
28
28
|
require('./chunk-MZ4KBSH7.cjs');
|
|
29
29
|
require('./chunk-T4BBZ5ST.cjs');
|
|
30
30
|
require('./chunk-YUMFVQIN.cjs');
|
|
31
|
-
require('./chunk-
|
|
31
|
+
require('./chunk-XXM74P3N.cjs');
|
|
32
32
|
require('./chunk-QTYSYEHK.cjs');
|
|
33
33
|
require('./chunk-F64VMOIB.cjs');
|
|
34
34
|
require('./chunk-3RFQPQ7Z.cjs');
|
|
@@ -1997,8 +1997,8 @@ function buildScriptsFixture(cast) {
|
|
|
1997
1997
|
var _jsxruntime = require('react/jsx-runtime');
|
|
1998
1998
|
var WIDE_HIDDEN_COLUMNS = ["result", "open"];
|
|
1999
1999
|
var COMPACT_COLUMNS = [
|
|
2000
|
-
{ ...
|
|
2001
|
-
|
|
2000
|
+
{ ..._chunk4IXA5CJTcjs.EXECUTION_COLUMNS.machineId, width: "flex-1 min-w-0", hideAt: void 0 },
|
|
2001
|
+
_chunk4IXA5CJTcjs.EXECUTION_COLUMNS.status
|
|
2002
2002
|
];
|
|
2003
2003
|
var COMPACT_ROWS = 4;
|
|
2004
2004
|
var TOKEN_CLASS = {
|
|
@@ -2057,7 +2057,7 @@ function ScriptCodePicture({ script }) {
|
|
|
2057
2057
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center justify-between gap-[var(--spacing-system-m)]", children: [
|
|
2058
2058
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAXBVN5SWcjs.TruncateText, { variant: "h6", tone: "secondary", children: `Written by ${provenance.author} \xB7 approved by ${provenance.approver}` }),
|
|
2059
2059
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2060
|
-
|
|
2060
|
+
_chunk4IXA5CJTcjs.ScriptShellBadge,
|
|
2061
2061
|
{
|
|
2062
2062
|
value: script.shellType,
|
|
2063
2063
|
className: "shrink-0 text-ods-text-secondary text-h6",
|
|
@@ -2081,7 +2081,7 @@ function ScriptsScreen({ compact = false }) {
|
|
|
2081
2081
|
return (
|
|
2082
2082
|
// Four runs of the card's row height fill the frame; the padding is what is left round them.
|
|
2083
2083
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full overflow-hidden bg-ods-bg p-[var(--spacing-system-xsf)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2084
|
-
|
|
2084
|
+
_chunk4IXA5CJTcjs.ScriptExecutionsTable,
|
|
2085
2085
|
{
|
|
2086
2086
|
rows: fixture.executions.slice(0, COMPACT_ROWS),
|
|
2087
2087
|
columns: COMPACT_COLUMNS,
|
|
@@ -2091,13 +2091,13 @@ function ScriptsScreen({ compact = false }) {
|
|
|
2091
2091
|
) })
|
|
2092
2092
|
);
|
|
2093
2093
|
}
|
|
2094
|
-
const renderOutput = (row) => row.id === fixture.openExecutionId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2094
|
+
const renderOutput = (row) => row.id === fixture.openExecutionId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.ScriptExecutionResult, { result: row.result, empty: "\u2014" }) : null;
|
|
2095
2095
|
return (
|
|
2096
2096
|
// The frame's tighter padding and no header row: the output opened under a run needs the height.
|
|
2097
2097
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full gap-[var(--spacing-system-m)] overflow-hidden bg-ods-bg p-[var(--spacing-system-m)]", children: [
|
|
2098
2098
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[39%] shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptCodePicture, { script: fixture.script }) }),
|
|
2099
2099
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2100
|
-
|
|
2100
|
+
_chunk4IXA5CJTcjs.ScriptExecutionsTable,
|
|
2101
2101
|
{
|
|
2102
2102
|
rows: fixture.executions,
|
|
2103
2103
|
hideColumns: WIDE_HIDDEN_COLUMNS,
|
|
@@ -15,9 +15,9 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
|
|
19
19
|
require('./chunk-2ANICXS7.cjs');
|
|
20
|
-
require('./chunk-
|
|
20
|
+
require('./chunk-QU5K52OP.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
|
|
@@ -30,7 +30,7 @@ require('./chunk-A6P6DHEZ.cjs');
|
|
|
30
30
|
require('./chunk-MZ4KBSH7.cjs');
|
|
31
31
|
require('./chunk-T4BBZ5ST.cjs');
|
|
32
32
|
require('./chunk-YUMFVQIN.cjs');
|
|
33
|
-
require('./chunk-
|
|
33
|
+
require('./chunk-XXM74P3N.cjs');
|
|
34
34
|
require('./chunk-QTYSYEHK.cjs');
|
|
35
35
|
require('./chunk-F64VMOIB.cjs');
|
|
36
36
|
require('./chunk-3RFQPQ7Z.cjs');
|
|
@@ -1924,12 +1924,12 @@ function StaticPackageField({ value }) {
|
|
|
1924
1924
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1925
1925
|
_chunkAXBVN5SWcjs.Autocomplete,
|
|
1926
1926
|
{
|
|
1927
|
-
label:
|
|
1927
|
+
label: _chunk4IXA5CJTcjs.PACKAGE_SEARCH_LABEL,
|
|
1928
1928
|
labelVariant: "large",
|
|
1929
1929
|
options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
|
|
1930
1930
|
value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
|
|
1931
1931
|
onChange: noop,
|
|
1932
|
-
placeholder:
|
|
1932
|
+
placeholder: _chunk4IXA5CJTcjs.PACKAGE_SEARCH_PLACEHOLDER
|
|
1933
1933
|
}
|
|
1934
1934
|
);
|
|
1935
1935
|
}
|
|
@@ -1943,7 +1943,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
1943
1943
|
[fixture.devices, fixture.selectedIds]
|
|
1944
1944
|
);
|
|
1945
1945
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1946
|
-
|
|
1946
|
+
_chunk4IXA5CJTcjs.SoftwareActionForm,
|
|
1947
1947
|
{
|
|
1948
1948
|
action: fixture.action,
|
|
1949
1949
|
showHeader: false,
|
|
@@ -1955,7 +1955,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
1955
1955
|
initialValues: fixture.initialValues,
|
|
1956
1956
|
renderPackageSearch,
|
|
1957
1957
|
renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1958
|
-
|
|
1958
|
+
_chunk4IXA5CJTcjs.DeviceSelector,
|
|
1959
1959
|
{
|
|
1960
1960
|
devices: selected,
|
|
1961
1961
|
loading: false,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every system a shared page's records are mirrored from, with the name a page shows for it. THE list: `DataSync`,
|
|
3
|
+
* `DataSyncLine`'s marks, the docs hook and every host that answers a `sync` read it.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DATA_SYNC_SOURCES: {
|
|
6
|
+
readonly clickup: "ClickUp";
|
|
7
|
+
readonly hubspot: "HubSpot";
|
|
8
|
+
readonly github: "GitHub";
|
|
9
|
+
};
|
|
10
|
+
export type DataSyncSource = keyof typeof DATA_SYNC_SOURCES;
|
|
11
|
+
export declare function isDataSyncSource(value: unknown): value is DataSyncSource;
|
|
12
|
+
/**
|
|
13
|
+
* Where a list's records are mirrored from and when that mirror last read them: the `sync` a shared page's
|
|
14
|
+
* endpoint answers beside its records, drawn by `DataSyncLine`. Server-safe.
|
|
15
|
+
*/
|
|
16
|
+
export interface DataSync {
|
|
17
|
+
/** The system the records are read from. */
|
|
18
|
+
source: DataSyncSource;
|
|
19
|
+
/** ISO instant of the mirror's last successful read, or null when it never ran. */
|
|
20
|
+
syncedAt: string | null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sync.d.ts","sourceRoot":"","sources":["../../src/types/data-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,MAAM,EAAE,cAAc,CAAC;IACvB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const DATA_SYNC_SOURCES = {
|
|
2
|
+
clickup: "ClickUp",
|
|
3
|
+
hubspot: "HubSpot",
|
|
4
|
+
github: "GitHub"
|
|
5
|
+
};
|
|
6
|
+
function isDataSyncSource(value) {
|
|
7
|
+
return typeof value === "string" && Object.prototype.hasOwnProperty.call(DATA_SYNC_SOURCES, value);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
DATA_SYNC_SOURCES,
|
|
11
|
+
isDataSyncSource
|
|
12
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DataSync } from './data-sync';
|
|
1
2
|
/**
|
|
2
3
|
* Single home for doc-source tree + content types.
|
|
3
4
|
*
|
|
@@ -54,6 +55,9 @@ export interface DocContent {
|
|
|
54
55
|
* from the underlying row's sync/update timestamp. Undefined when unknown. */
|
|
55
56
|
publishedAt?: string;
|
|
56
57
|
updatedAt?: string;
|
|
58
|
+
/** Where the document is mirrored from and when it was last read (a synced docs source only); the viewer draws
|
|
59
|
+
* it as the shared sync line. */
|
|
60
|
+
sync?: DataSync;
|
|
57
61
|
}
|
|
58
62
|
/**
|
|
59
63
|
* Doc-source data-access contract. Each doc source's hub-side DAL conforms
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-source.d.ts","sourceRoot":"","sources":["../../src/types/doc-source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;IACtE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;mFAC+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"doc-source.d.ts","sourceRoot":"","sources":["../../src/types/doc-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;IACtE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;mFAC+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;sCACkC;IAClC,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,MAAM,GAAG,OAAO;IAC5C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACtE;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9G,WAAW,EAAE,MAAM,CAAC;IACpB;uFACmF;IACnF,QAAQ,EAAE,WAAW,CAAC;IACtB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACnF"}
|
package/dist/types/index.cjs
CHANGED
|
@@ -24,6 +24,16 @@ var AVAILABLE_SVG_ICONS = [
|
|
|
24
24
|
{ name: "package", label: "Package", component: null }
|
|
25
25
|
];
|
|
26
26
|
|
|
27
|
+
// src/types/data-sync.ts
|
|
28
|
+
var DATA_SYNC_SOURCES = {
|
|
29
|
+
clickup: "ClickUp",
|
|
30
|
+
hubspot: "HubSpot",
|
|
31
|
+
github: "GitHub"
|
|
32
|
+
};
|
|
33
|
+
function isDataSyncSource(value) {
|
|
34
|
+
return typeof value === "string" && Object.prototype.hasOwnProperty.call(DATA_SYNC_SOURCES, value);
|
|
35
|
+
}
|
|
36
|
+
|
|
27
37
|
// src/types/product-release.ts
|
|
28
38
|
var releaseTypeOptions = [
|
|
29
39
|
{ value: "major", label: "Major Release", description: "Breaking changes, new architecture", color: "red" },
|
|
@@ -604,6 +614,7 @@ exports.ANNOUNCEMENT_DEFAULT_ICON = ANNOUNCEMENT_DEFAULT_ICON;
|
|
|
604
614
|
exports.ANNOUNCEMENT_SURFACES = ANNOUNCEMENT_SURFACES;
|
|
605
615
|
exports.APP_DOWNLOAD_KINDS = APP_DOWNLOAD_KINDS;
|
|
606
616
|
exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS;
|
|
617
|
+
exports.DATA_SYNC_SOURCES = DATA_SYNC_SOURCES;
|
|
607
618
|
exports.DESKTOP_OS_LABELS = DESKTOP_OS_LABELS;
|
|
608
619
|
exports.DOWNLOADS_API_PATH = DOWNLOADS_API_PATH;
|
|
609
620
|
exports.DOWNLOADS_CACHE_SECONDS = DOWNLOADS_CACHE_SECONDS;
|
|
@@ -640,6 +651,7 @@ exports.TRUST_FRAMEWORK_MONITORING = TRUST_FRAMEWORK_MONITORING;
|
|
|
640
651
|
exports.ToolTypeValues = ToolTypeValues;
|
|
641
652
|
exports.changelogLabels = changelogLabels;
|
|
642
653
|
exports.filterTrustControlDomains = filterTrustControlDomains;
|
|
654
|
+
exports.isDataSyncSource = isDataSyncSource;
|
|
643
655
|
exports.isTrustCenterMonitored = isTrustCenterMonitored;
|
|
644
656
|
exports.normalizeTrustControlQuery = normalizeTrustControlQuery;
|
|
645
657
|
exports.osLabels = osLabels;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAI/B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvF,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAG3B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAE5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAI/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACvF,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,IAAI,gBAAgB,EAClC,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAG3B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAE5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
|
package/dist/types/index.js
CHANGED
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ import { MultiLevelNavigation, MobileNavigationDropdown } from '../navigation/mu
|
|
|
13
13
|
import { StickySectionNav } from '../navigation/sticky-section-nav';
|
|
14
14
|
import { PersistentSidebar, PersistentMobileDropdown } from '../persistent-filter-controls';
|
|
15
15
|
import { DocSearchBar, useDocSearch } from '../shared/doc-search';
|
|
16
|
+
import { DataSyncLine } from '../ui/data-attribution';
|
|
16
17
|
import { useDocNavigation } from './doc-navigation-context';
|
|
17
18
|
import { useDocsResolveLink } from './use-docs-resolve-link';
|
|
18
19
|
import { useDocumentTree } from './use-document-tree';
|
|
@@ -119,6 +120,11 @@ export interface DocViewerProps {
|
|
|
119
120
|
/** Whether to render the doc-search bar (bound to chat). */
|
|
120
121
|
showAIChat?: boolean;
|
|
121
122
|
|
|
123
|
+
/** This source's documents are mirrored from another system and carry a `sync` (the knowledge base, from GitHub):
|
|
124
|
+
* the page then states it in the first row under its title, holding the row with a skeleton while a document
|
|
125
|
+
* loads. Default false: a source nothing syncs (the data room) never draws the row. */
|
|
126
|
+
synced?: boolean;
|
|
127
|
+
|
|
122
128
|
/** Folder-index filename (default `'README.md'`). */
|
|
123
129
|
folderIndexFile?: string;
|
|
124
130
|
|
|
@@ -153,6 +159,7 @@ function DocViewerContent({
|
|
|
153
159
|
baseRoute,
|
|
154
160
|
emptyStateText,
|
|
155
161
|
showAIChat = false,
|
|
162
|
+
synced = false,
|
|
156
163
|
folderIndexFile,
|
|
157
164
|
backButton,
|
|
158
165
|
}: DocViewerProps) {
|
|
@@ -271,6 +278,8 @@ function DocViewerContent({
|
|
|
271
278
|
<div style={{ ...bgStyle, ...containerBgStyle }}>
|
|
272
279
|
<PageLayout title={title} subtitle={subtitle} titleSize="h1" titleWrap backButton={backCfg ?? undefined}>
|
|
273
280
|
<div className="flex w-full flex-col gap-10">
|
|
281
|
+
{/* Where the document is mirrored from: the first row under the title, as on every synced page. */}
|
|
282
|
+
{synced && <DataSyncLine sync={content?.sync} loading={isLoadingContent && !content} />}
|
|
274
283
|
{showAIChat && (
|
|
275
284
|
<DocSearchBar
|
|
276
285
|
placeholder={`Search ${sidebarLabel?.toLowerCase() || 'documents'}...`}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
|
|
4
|
+
import { type DataSync, isDataSyncSource } from '../../types/data-sync';
|
|
4
5
|
import type { DocNode, DocContent, DocumentType } from '../../types/doc-source';
|
|
5
6
|
import { apiErrorMessage } from '../../utils/common';
|
|
6
7
|
import {
|
|
@@ -178,9 +179,18 @@ function toDocContent(value: unknown, requestedPath: string): DocContent | null
|
|
|
178
179
|
fileSize: typeof fileSize === 'number' ? fileSize : undefined,
|
|
179
180
|
publishedAt: readString(value, 'publishedAt'),
|
|
180
181
|
updatedAt: readString(value, 'updatedAt'),
|
|
182
|
+
sync: toDataSync(value.sync),
|
|
181
183
|
};
|
|
182
184
|
}
|
|
183
185
|
|
|
186
|
+
/** The document's `sync` (where it is mirrored from, and when), or undefined when the host states none. */
|
|
187
|
+
function toDataSync(value: unknown): DataSync | undefined {
|
|
188
|
+
if (!isRecord(value)) return undefined;
|
|
189
|
+
const source = readString(value, 'source');
|
|
190
|
+
if (!isDataSyncSource(source)) return undefined;
|
|
191
|
+
return { source, syncedAt: readString(value, 'syncedAt') ?? null };
|
|
192
|
+
}
|
|
193
|
+
|
|
184
194
|
export interface UseDocumentTreeConfig {
|
|
185
195
|
/** API endpoint for fetching the document tree structure */
|
|
186
196
|
structureEndpoint: string;
|
|
@@ -94,6 +94,12 @@ export interface TrustCenterPageProps {
|
|
|
94
94
|
* page's full width, then the FAQ. Absent: the FAQ closes the sections column.
|
|
95
95
|
*/
|
|
96
96
|
beforeFaq?: ReactNode;
|
|
97
|
+
/**
|
|
98
|
+
* The "Data synced from <source>" line and its PDF download in the status row. Default true. Pass false when the
|
|
99
|
+
* host's own header states both (the hub's admin preview draws them in its page header), so the page never says
|
|
100
|
+
* them twice; the monitoring status stays.
|
|
101
|
+
*/
|
|
102
|
+
attribution?: boolean;
|
|
97
103
|
}
|
|
98
104
|
|
|
99
105
|
/** One section's page content. Its `h2` is the `TRUST_CENTER_SECTIONS` label — never a literal here. */
|
|
@@ -145,6 +151,7 @@ export function TrustCenterPage({
|
|
|
145
151
|
subtitle = TRUST_CENTER_TAGLINE,
|
|
146
152
|
ask,
|
|
147
153
|
beforeFaq,
|
|
154
|
+
attribution = true,
|
|
148
155
|
}: TrustCenterPageProps) {
|
|
149
156
|
const { data, isLoading, error, reload } = useSelfFetch<TrustCenterPublic>(endpoint, {
|
|
150
157
|
initialData,
|
|
@@ -254,7 +261,7 @@ export function TrustCenterPage({
|
|
|
254
261
|
<>
|
|
255
262
|
<div className={TRUST_STATUS_ROW_CLASS}>
|
|
256
263
|
<StatusIndicator status={status.status} label={status.label} />
|
|
257
|
-
{data.connected ? (
|
|
264
|
+
{data.connected && attribution ? (
|
|
258
265
|
<DataAttribution
|
|
259
266
|
icon={
|
|
260
267
|
data.dataSource.logoUrl ? (
|
|
@@ -270,9 +277,9 @@ export function TrustCenterPage({
|
|
|
270
277
|
lastUpdated={data.syncedAt}
|
|
271
278
|
action={download}
|
|
272
279
|
/>
|
|
273
|
-
) : (
|
|
280
|
+
) : attribution ? (
|
|
274
281
|
download
|
|
275
|
-
)}
|
|
282
|
+
) : null}
|
|
276
283
|
</div>
|
|
277
284
|
|
|
278
285
|
<div className={TRUST_BODY_GRID_CLASS}>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, type ReactNode, useContext, useEffect, useMemo, useState } from 'react';
|
|
4
|
+
import type { DataSync } from '../../types/data-sync';
|
|
5
|
+
import { DataSyncLine } from '../ui/data-attribution';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* THE place a page states where its records are mirrored from: the first row under the page title, right-aligned,
|
|
9
|
+
* the row the Trust Center's status line takes. A page whose title block and list are separate components (the
|
|
10
|
+
* roadmap, the delivery board) wraps its `PageLayout` children in `PageDataSyncProvider` and renders
|
|
11
|
+
* `PageDataSyncRow` first; the list reports what its endpoint answered with `usePageDataSync`. A page that holds its
|
|
12
|
+
* own data (a legal document, a doc) renders `DataSyncLine` as its first row directly.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
interface PageDataSyncState {
|
|
16
|
+
sync: DataSync | null;
|
|
17
|
+
loading: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface PageDataSyncContextValue {
|
|
21
|
+
state: PageDataSyncState;
|
|
22
|
+
report: (state: PageDataSyncState) => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const PageDataSyncContext = createContext<PageDataSyncContextValue | null>(null);
|
|
26
|
+
|
|
27
|
+
const EMPTY: PageDataSyncState = { sync: null, loading: false };
|
|
28
|
+
|
|
29
|
+
export function PageDataSyncProvider({ children }: { children: ReactNode }) {
|
|
30
|
+
const [state, report] = useState<PageDataSyncState>(EMPTY);
|
|
31
|
+
const value = useMemo(() => ({ state, report }), [state]);
|
|
32
|
+
return <PageDataSyncContext.Provider value={value}>{children}</PageDataSyncContext.Provider>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The page's sync row: what a list below reported, its skeleton while it loads, nothing when it states none. `inline`
|
|
37
|
+
* when it sits in a heading's action slot (`SectionHeading`), which places it itself.
|
|
38
|
+
*/
|
|
39
|
+
export function PageDataSyncRow({ inline = false }: { inline?: boolean }) {
|
|
40
|
+
const context = useContext(PageDataSyncContext);
|
|
41
|
+
if (!context) return null;
|
|
42
|
+
return <DataSyncLine sync={context.state.sync} loading={context.state.loading} inline={inline} />;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Report a list's sync to the page's row. Returns false when the list is rendered outside a page that has one (an
|
|
47
|
+
* embed of the list alone), so the list draws the line itself.
|
|
48
|
+
*/
|
|
49
|
+
export function usePageDataSync(sync: DataSync | null | undefined, loading: boolean): boolean {
|
|
50
|
+
const context = useContext(PageDataSyncContext);
|
|
51
|
+
const report = context?.report;
|
|
52
|
+
const source = sync?.source ?? null;
|
|
53
|
+
const syncedAt = sync?.syncedAt ?? null;
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
if (!report) return;
|
|
56
|
+
report({ sync: source ? { source, syncedAt } : null, loading });
|
|
57
|
+
}, [report, source, syncedAt, loading]);
|
|
58
|
+
useEffect(() => (report ? () => report(EMPTY) : undefined), [report]);
|
|
59
|
+
return Boolean(context);
|
|
60
|
+
}
|