@flamingo-stack/openframe-frontend-core 0.0.718 → 0.0.719

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 (86) hide show
  1. package/dist/{chunk-N2PF5CFX.js → chunk-2JLP2X2M.js} +1 -1
  2. package/dist/{chunk-YEMCCYIF.js → chunk-4D6NMPOO.js} +1 -1
  3. package/dist/{chunk-MIQLUUVF.cjs → chunk-4JIGEK7C.cjs} +6 -6
  4. package/dist/{chunk-JIWMBIVZ.js → chunk-5U3KWQXP.js} +3 -3
  5. package/dist/{chunk-67QBMN4R.js → chunk-5YAGX5DY.js} +1 -1
  6. package/dist/{chunk-GEDY7HQI.cjs → chunk-6X3O67OL.cjs} +4 -0
  7. package/dist/{chunk-DEZDMTBM.js → chunk-7BCY77W6.js} +5 -5
  8. package/dist/{chunk-BWIN42ZA.cjs → chunk-7BREFV7G.cjs} +19 -19
  9. package/dist/{chunk-45F7PXUI.js → chunk-AJHSQ5XK.js} +2 -2
  10. package/dist/{chunk-TBCZCRQ5.js → chunk-CU6NWO2M.js} +5 -5
  11. package/dist/{chunk-DCD5WZUF.js → chunk-D6PMVWDI.js} +2 -2
  12. package/dist/{chunk-2RKFMUNW.cjs → chunk-DFEPUYTF.cjs} +24 -21
  13. package/dist/{chunk-BOTM373R.cjs → chunk-E2V2EH2G.cjs} +2 -2
  14. package/dist/{chunk-PQ6HBLZ7.js → chunk-EAHOB64X.js} +3 -3
  15. package/dist/{chunk-SGFTTJKO.js → chunk-FVQJBII6.js} +1 -1
  16. package/dist/{chunk-APJZBDQN.js → chunk-H5V7GRN5.js} +24 -21
  17. package/dist/{chunk-6A43ZDWV.cjs → chunk-H5VIMBRN.cjs} +2 -2
  18. package/dist/{chunk-DXCBOZVT.cjs → chunk-HCFNEKO3.cjs} +13 -13
  19. package/dist/{chunk-Z5UWW3Z2.cjs → chunk-LCLDFMDF.cjs} +66 -50
  20. package/dist/{chunk-NDZ5ZXOQ.cjs → chunk-LOZLHG2U.cjs} +6 -6
  21. package/dist/{chunk-Z3CVSPO3.cjs → chunk-NQVS4G7G.cjs} +134 -134
  22. package/dist/{chunk-EZC2F5OT.cjs → chunk-NYWESHOQ.cjs} +15 -15
  23. package/dist/{chunk-YBQQNDC7.js → chunk-RR6PY34K.js} +4 -0
  24. package/dist/{chunk-GN4A7PMB.cjs → chunk-SWAVO7BB.cjs} +23 -23
  25. package/dist/{chunk-S2FUFMLW.cjs → chunk-TDZ76NCB.cjs} +16 -16
  26. package/dist/{chunk-QXZCLQNV.js → chunk-TELAANY6.js} +1 -1
  27. package/dist/{chunk-MM7MCIXL.js → chunk-TTEFN6VO.js} +4 -4
  28. package/dist/{chunk-YC5COB5V.cjs → chunk-WS7WRR5Z.cjs} +32 -32
  29. package/dist/{chunk-LOYPRJWA.js → chunk-Y4MB25KW.js} +66 -50
  30. package/dist/{chunk-WALCXC7J.cjs → chunk-ZKNZ2CXW.cjs} +3 -3
  31. package/dist/{cloud-tenants-TAKOWXLD.js → cloud-tenants-DNBPNQNP.js} +2 -2
  32. package/dist/{cloud-tenants-PFDF7O5U.cjs → cloud-tenants-FBUO66GW.cjs} +3 -3
  33. package/dist/components/case-studies/index.cjs +11 -11
  34. package/dist/components/case-studies/index.js +3 -3
  35. package/dist/components/contact/index.cjs +4 -4
  36. package/dist/components/contact/index.js +3 -3
  37. package/dist/components/docs/index.cjs +6 -6
  38. package/dist/components/docs/index.js +5 -5
  39. package/dist/components/embeds/index.cjs +4 -4
  40. package/dist/components/embeds/index.js +3 -3
  41. package/dist/components/faq/index.cjs +5 -5
  42. package/dist/components/faq/index.js +4 -4
  43. package/dist/components/features/index.cjs +3 -3
  44. package/dist/components/features/index.js +2 -2
  45. package/dist/components/features/remote-session/remote-desktop-view.d.ts +6 -2
  46. package/dist/components/features/remote-session/remote-desktop-view.d.ts.map +1 -1
  47. package/dist/components/help-center-pages/index.cjs +48 -48
  48. package/dist/components/help-center-pages/index.js +13 -13
  49. package/dist/components/index.cjs +23 -23
  50. package/dist/components/index.js +12 -12
  51. package/dist/components/meeting-scheduler/index.cjs +18 -18
  52. package/dist/components/meeting-scheduler/index.js +2 -2
  53. package/dist/components/navigation/index.cjs +4 -4
  54. package/dist/components/navigation/index.js +3 -3
  55. package/dist/components/onboarding-guides/index.cjs +7 -7
  56. package/dist/components/onboarding-guides/index.js +6 -6
  57. package/dist/components/product-demo/index.cjs +7 -7
  58. package/dist/components/product-demo/index.js +7 -7
  59. package/dist/components/related-content/index.cjs +3 -3
  60. package/dist/components/related-content/index.js +2 -2
  61. package/dist/components/related-content/related-content-section.d.ts +6 -6
  62. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  63. package/dist/components/tickets/index.cjs +6 -6
  64. package/dist/components/tickets/index.js +5 -5
  65. package/dist/components/ui/index.cjs +3 -3
  66. package/dist/components/ui/index.js +2 -2
  67. package/dist/{devices-KRCGZMGA.cjs → devices-5A5TY4JD.cjs} +4 -4
  68. package/dist/{devices-LHEX7O5T.js → devices-PLDAEUSL.js} +2 -2
  69. package/dist/hooks/use-self-fetch.d.ts +3 -0
  70. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  71. package/dist/index.cjs +4 -4
  72. package/dist/index.js +3 -3
  73. package/dist/{knowledge-KLVPVEYZ.cjs → knowledge-FKTJ723Z.cjs} +3 -3
  74. package/dist/{knowledge-RZSFNR33.js → knowledge-G6Q5KRWV.js} +2 -2
  75. package/dist/{logs-OX3XTVL2.cjs → logs-CJCXUBU6.cjs} +11 -11
  76. package/dist/{logs-E5DOV5JO.js → logs-QMV6XIC4.js} +2 -2
  77. package/dist/{policies-MC2S4S5G.js → policies-G6D7AX6F.js} +2 -2
  78. package/dist/{policies-FOSCIZGK.cjs → policies-QMRTK3CY.cjs} +7 -7
  79. package/dist/{remote-session-DRFE5XZE.cjs → remote-session-2JVI7RVA.cjs} +3 -3
  80. package/dist/{remote-session-JQ2BPIE3.js → remote-session-DBD6OSTX.js} +1 -1
  81. package/dist/{software-update-D4OEIH65.js → software-update-6BQM6BKH.js} +2 -2
  82. package/dist/{software-update-HOBSTWVO.cjs → software-update-PNZMRDBT.cjs} +7 -7
  83. package/package.json +1 -1
  84. package/src/components/features/remote-session/remote-desktop-view.tsx +86 -63
  85. package/src/components/related-content/related-content-section.tsx +46 -47
  86. package/src/hooks/use-self-fetch.ts +7 -0
@@ -8,11 +8,11 @@ var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
8
8
  var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
9
9
 
10
10
 
11
- var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
11
+ var _chunkNQVS4G7Gcjs = require('./chunk-NQVS4G7G.cjs');
12
12
  require('./chunk-4HJRHEXD.cjs');
13
13
  require('./chunk-HQQE74RO.cjs');
14
14
  require('./chunk-DEY6XXGO.cjs');
15
- require('./chunk-Z5UWW3Z2.cjs');
15
+ require('./chunk-LCLDFMDF.cjs');
16
16
  require('./chunk-ZXCZYMN4.cjs');
17
17
  require('./chunk-B4NCVYEQ.cjs');
18
18
  require('./chunk-MZ4KBSH7.cjs');
@@ -97,7 +97,7 @@ function KnowledgeScreen(_props) {
97
97
  const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
98
98
  const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
99
99
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
100
- _chunkZ3CVSPO3cjs.KnowledgeBaseArticleView,
100
+ _chunkNQVS4G7Gcjs.KnowledgeBaseArticleView,
101
101
  {
102
102
  ...fixture.article,
103
103
  content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUWQWMGJ7cjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
@@ -8,11 +8,11 @@ import {
8
8
  } from "./chunk-CYUUHFXL.js";
9
9
  import {
10
10
  KnowledgeBaseArticleView
11
- } from "./chunk-N2PF5CFX.js";
11
+ } from "./chunk-2JLP2X2M.js";
12
12
  import "./chunk-ILNN6QRW.js";
13
13
  import "./chunk-LQYXMEYF.js";
14
14
  import "./chunk-4JPLYOS6.js";
15
- import "./chunk-LOYPRJWA.js";
15
+ import "./chunk-Y4MB25KW.js";
16
16
  import "./chunk-IWCPXJEE.js";
17
17
  import "./chunk-3K5ZLZE7.js";
18
18
  import "./chunk-HFL2F4RM.js";
@@ -16,11 +16,11 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
19
+ var _chunkNQVS4G7Gcjs = require('./chunk-NQVS4G7G.cjs');
20
20
  require('./chunk-4HJRHEXD.cjs');
21
21
  require('./chunk-HQQE74RO.cjs');
22
22
  require('./chunk-DEY6XXGO.cjs');
23
- require('./chunk-Z5UWW3Z2.cjs');
23
+ require('./chunk-LCLDFMDF.cjs');
24
24
  require('./chunk-ZXCZYMN4.cjs');
25
25
  require('./chunk-B4NCVYEQ.cjs');
26
26
  require('./chunk-MZ4KBSH7.cjs');
@@ -78,7 +78,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
78
78
  id: logId,
79
79
  logId,
80
80
  timestamp: displayTime(_chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, minutesAgo)),
81
- status: { label: severity, variant: _chunkZ3CVSPO3cjs.logSeverityVariant.call(void 0, severity) },
81
+ status: { label: severity, variant: _chunkNQVS4G7Gcjs.logSeverityVariant.call(void 0, severity) },
82
82
  source: { name: toolType, toolType },
83
83
  device: device2,
84
84
  description: { title: summary }
@@ -150,13 +150,13 @@ var NO_FILTERS = {};
150
150
  var ACTION_COLUMNS = ["copy", "quickView", "open"];
151
151
  var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
152
152
  var logHref = () => "#";
153
- var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.LogCopyIconButton, {});
153
+ var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNQVS4G7Gcjs.LogCopyIconButton, {});
154
154
  function LogsScreen({ compact = false }) {
155
155
  const [dock, setDock] = _react.useState.call(void 0, null);
156
156
  const selected = LOGS_FIXTURE_SELECTED;
157
157
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
158
158
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
159
- _chunkZ3CVSPO3cjs.LogsPageView,
159
+ _chunkNQVS4G7Gcjs.LogsPageView,
160
160
  {
161
161
  showHeader: false,
162
162
  className: "p-[var(--spacing-system-l)]",
@@ -164,7 +164,7 @@ function LogsScreen({ compact = false }) {
164
164
  onSearchChange: noop,
165
165
  onOpenFilters: noop,
166
166
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
167
- _chunkZ3CVSPO3cjs.LogsTableView,
167
+ _chunkNQVS4G7Gcjs.LogsTableView,
168
168
  {
169
169
  logs: LOGS_FIXTURE_ENTRIES,
170
170
  facets: LOGS_FIXTURE_FACETS,
@@ -178,8 +178,8 @@ function LogsScreen({ compact = false }) {
178
178
  )
179
179
  }
180
180
  ) }),
181
- !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, _chunkZ3CVSPO3cjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
- _chunkZ3CVSPO3cjs.LogDrawer,
181
+ !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, _chunkNQVS4G7Gcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
+ _chunkNQVS4G7Gcjs.LogDrawer,
183
183
  {
184
184
  docked: true,
185
185
  isOpen: true,
@@ -191,12 +191,12 @@ function LogsScreen({ compact = false }) {
191
191
  { label: "Log ID", value: selected.logId },
192
192
  {
193
193
  label: "Source",
194
- value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.ToolBadge, { toolType: _chunkUWQWMGJ7cjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
194
+ value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNQVS4G7Gcjs.ToolBadge, { toolType: _chunkUWQWMGJ7cjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
195
195
  },
196
- { label: "Device", value: _chunkZ3CVSPO3cjs.logSourceLabels.call(void 0, selected.device).deviceName }
196
+ { label: "Device", value: _chunkNQVS4G7Gcjs.logSourceLabels.call(void 0, selected.device).deviceName }
197
197
  ],
198
198
  deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
199
- _chunkZ3CVSPO3cjs.DeviceCard,
199
+ _chunkNQVS4G7Gcjs.DeviceCard,
200
200
  {
201
201
  ...LOGS_FIXTURE_DEVICE,
202
202
  actions: {
@@ -16,11 +16,11 @@ import {
16
16
  ToolBadge,
17
17
  logSeverityVariant,
18
18
  logSourceLabels
19
- } from "./chunk-N2PF5CFX.js";
19
+ } from "./chunk-2JLP2X2M.js";
20
20
  import "./chunk-ILNN6QRW.js";
21
21
  import "./chunk-LQYXMEYF.js";
22
22
  import "./chunk-4JPLYOS6.js";
23
- import "./chunk-LOYPRJWA.js";
23
+ import "./chunk-Y4MB25KW.js";
24
24
  import "./chunk-IWCPXJEE.js";
25
25
  import "./chunk-3K5ZLZE7.js";
26
26
  import "./chunk-HFL2F4RM.js";
@@ -10,11 +10,11 @@ import {
10
10
  PolicySummaryCards,
11
11
  computePolicySummary,
12
12
  getPolicyTableStatus
13
- } from "./chunk-N2PF5CFX.js";
13
+ } from "./chunk-2JLP2X2M.js";
14
14
  import "./chunk-ILNN6QRW.js";
15
15
  import "./chunk-LQYXMEYF.js";
16
16
  import "./chunk-4JPLYOS6.js";
17
- import "./chunk-LOYPRJWA.js";
17
+ import "./chunk-Y4MB25KW.js";
18
18
  import "./chunk-IWCPXJEE.js";
19
19
  import "./chunk-3K5ZLZE7.js";
20
20
  import "./chunk-HFL2F4RM.js";
@@ -10,11 +10,11 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
13
+ var _chunkNQVS4G7Gcjs = require('./chunk-NQVS4G7G.cjs');
14
14
  require('./chunk-4HJRHEXD.cjs');
15
15
  require('./chunk-HQQE74RO.cjs');
16
16
  require('./chunk-DEY6XXGO.cjs');
17
- require('./chunk-Z5UWW3Z2.cjs');
17
+ require('./chunk-LCLDFMDF.cjs');
18
18
  require('./chunk-ZXCZYMN4.cjs');
19
19
  require('./chunk-B4NCVYEQ.cjs');
20
20
  require('./chunk-MZ4KBSH7.cjs');
@@ -83,14 +83,14 @@ var POLICIES = [
83
83
  policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
84
84
  ];
85
85
  var POLICIES_FIXTURE = {
86
- summary: _chunkZ3CVSPO3cjs.computePolicySummary.call(void 0, POLICIES),
86
+ summary: _chunkNQVS4G7Gcjs.computePolicySummary.call(void 0, POLICIES),
87
87
  rows: POLICIES.map((item) => ({
88
88
  id: item.id,
89
89
  name: item.name,
90
90
  description: item.description,
91
91
  critical: item.critical,
92
92
  severityLabel: item.critical ? "Critical" : "Low",
93
- status: _chunkZ3CVSPO3cjs.getPolicyTableStatus.call(void 0, item),
93
+ status: _chunkNQVS4G7Gcjs.getPolicyTableStatus.call(void 0, item),
94
94
  actions: [
95
95
  { label: "Policy Details", onClick: noop },
96
96
  { label: "Delete Policy", onClick: noop }
@@ -104,16 +104,16 @@ var POLICIES_FIXTURE = {
104
104
  var _jsxruntime = require('react/jsx-runtime');
105
105
  function PoliciesScreen({ compact = false }) {
106
106
  const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
107
- _chunkZ3CVSPO3cjs.PoliciesTable,
107
+ _chunkNQVS4G7Gcjs.PoliciesTable,
108
108
  {
109
109
  rows: POLICIES_FIXTURE.rows,
110
110
  rowAsLink: true,
111
- rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.DataTable.RowCount, {}),
111
+ rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNQVS4G7Gcjs.DataTable.RowCount, {}),
112
112
  emptyMessage: "No policies found."
113
113
  }
114
114
  );
115
115
  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: [
116
- !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
116
+ !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNQVS4G7Gcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
117
117
  table
118
118
  ] });
119
119
  }
@@ -10,7 +10,7 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
13
+ var _chunkLCLDFMDFcjs = require('./chunk-LCLDFMDF.cjs');
14
14
  require('./chunk-A6P6DHEZ.cjs');
15
15
  require('./chunk-DC4RTYWK.cjs');
16
16
  require('./chunk-FFT56TYB.cjs');
@@ -175,7 +175,7 @@ function RemoteSessionScreen({ compact = false }) {
175
175
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col bg-ods-bg", children: [
176
176
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[var(--spacing-system-l)] flex-shrink-0" }),
177
177
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
178
- _chunkZ5UWW3Z2cjs.RemoteDesktopView,
178
+ _chunkLCLDFMDFcjs.RemoteDesktopView,
179
179
  {
180
180
  ...fixture.view,
181
181
  onEnterFullscreen: noop,
@@ -186,7 +186,7 @@ function RemoteSessionScreen({ compact = false }) {
186
186
  screen: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RemoteDesktopPicture, { desktop: fixture.desktop }),
187
187
  chat: compact ? null : (
188
188
  // The side column needs the room of the wide layout; a narrow frame keeps the screen alone.
189
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ5UWW3Z2cjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
189
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLCLDFMDFcjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
190
190
  )
191
191
  }
192
192
  ) })
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  RemoteDesktopChatPanel,
12
12
  RemoteDesktopView
13
- } from "./chunk-LOYPRJWA.js";
13
+ } from "./chunk-Y4MB25KW.js";
14
14
  import "./chunk-YYYVS7CX.js";
15
15
  import "./chunk-KBJJQFYU.js";
16
16
  import "./chunk-P3JMAMHP.js";
@@ -15,13 +15,13 @@ import {
15
15
  PACKAGE_SEARCH_LABEL,
16
16
  PACKAGE_SEARCH_PLACEHOLDER,
17
17
  SoftwareActionForm
18
- } from "./chunk-N2PF5CFX.js";
18
+ } from "./chunk-2JLP2X2M.js";
19
19
  import "./chunk-ILNN6QRW.js";
20
20
  import "./chunk-LQYXMEYF.js";
21
21
  import "./chunk-4JPLYOS6.js";
22
22
  import {
23
23
  Autocomplete
24
- } from "./chunk-LOYPRJWA.js";
24
+ } from "./chunk-Y4MB25KW.js";
25
25
  import "./chunk-IWCPXJEE.js";
26
26
  import "./chunk-3K5ZLZE7.js";
27
27
  import "./chunk-HFL2F4RM.js";
@@ -15,13 +15,13 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
18
+ var _chunkNQVS4G7Gcjs = require('./chunk-NQVS4G7G.cjs');
19
19
  require('./chunk-4HJRHEXD.cjs');
20
20
  require('./chunk-HQQE74RO.cjs');
21
21
  require('./chunk-DEY6XXGO.cjs');
22
22
 
23
23
 
24
- var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
24
+ var _chunkLCLDFMDFcjs = require('./chunk-LCLDFMDF.cjs');
25
25
  require('./chunk-ZXCZYMN4.cjs');
26
26
  require('./chunk-B4NCVYEQ.cjs');
27
27
  require('./chunk-MZ4KBSH7.cjs');
@@ -116,14 +116,14 @@ var noop = () => {
116
116
  var HIDDEN_WHEN_COMPACT = ["organization"];
117
117
  function StaticPackageField({ value }) {
118
118
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
119
- _chunkZ5UWW3Z2cjs.Autocomplete,
119
+ _chunkLCLDFMDFcjs.Autocomplete,
120
120
  {
121
- label: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_LABEL,
121
+ label: _chunkNQVS4G7Gcjs.PACKAGE_SEARCH_LABEL,
122
122
  labelVariant: "large",
123
123
  options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
124
124
  value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
125
125
  onChange: noop,
126
- placeholder: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_PLACEHOLDER
126
+ placeholder: _chunkNQVS4G7Gcjs.PACKAGE_SEARCH_PLACEHOLDER
127
127
  }
128
128
  );
129
129
  }
@@ -137,7 +137,7 @@ function SoftwareUpdateScreen({ compact = false }) {
137
137
  [fixture.devices, fixture.selectedIds]
138
138
  );
139
139
  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,
140
- _chunkZ3CVSPO3cjs.SoftwareActionForm,
140
+ _chunkNQVS4G7Gcjs.SoftwareActionForm,
141
141
  {
142
142
  action: fixture.action,
143
143
  showHeader: false,
@@ -149,7 +149,7 @@ function SoftwareUpdateScreen({ compact = false }) {
149
149
  initialValues: fixture.initialValues,
150
150
  renderPackageSearch,
151
151
  renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
152
- _chunkZ3CVSPO3cjs.DeviceSelector,
152
+ _chunkNQVS4G7Gcjs.DeviceSelector,
153
153
  {
154
154
  devices: selected,
155
155
  loading: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.718",
3
+ "version": "0.0.719",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -4,6 +4,7 @@ import type { ReactNode } from 'react';
4
4
  import {
5
5
  ChatOffIcon,
6
6
  ChatTextIcon,
7
+ Chevron02DownIcon,
7
8
  Collapse02Icon,
8
9
  Expand02Icon,
9
10
  MonitorIcon,
@@ -19,8 +20,12 @@ import { RemoteDesktopFullscreenToolbar } from './remote-desktop-fullscreen-tool
19
20
  /** The page chrome both the view and its skeleton render in. */
20
21
  const PAGE_CLASS = 'h-full overflow-hidden px-[var(--spacing-system-l)] pb-[var(--spacing-system-l)]';
21
22
 
23
+ /** The header card: the device row, and under it the display row when there is one to pick. */
22
24
  const CONTROLS_BAR_CLASS =
23
- 'flex flex-shrink-0 items-center justify-between gap-[var(--spacing-system-mf)] rounded-md border border-ods-border bg-ods-card px-[var(--spacing-system-mf)] py-[var(--spacing-system-xs)]';
25
+ 'flex flex-shrink-0 flex-col overflow-hidden rounded-md border border-ods-border bg-ods-card';
26
+
27
+ const CONTROLS_ROW_CLASS =
28
+ 'flex items-center justify-between gap-[var(--spacing-system-mf)] px-[var(--spacing-system-mf)] py-[var(--spacing-system-xs)]';
24
29
 
25
30
  export interface RemoteDesktopViewProps {
26
31
  /** First line of the device header. */
@@ -36,9 +41,13 @@ export interface RemoteDesktopViewProps {
36
41
  fullscreen?: boolean;
37
42
  onEnterFullscreen: () => void;
38
43
  onExitFullscreen: () => void;
39
- /** The display switcher's menu; the switcher is hidden while this is empty (a single display). */
44
+ /**
45
+ * The display switcher's menu, one entry per separate display. The switcher is
46
+ * the full-width row under the device row (Figma 2155:109503), and it is left
47
+ * out while this is empty: one display, or an agent that reports none.
48
+ */
40
49
  displayMenuGroups?: ActionsMenuGroup[];
41
- /** The switcher's label, e.g. "Display All" or "Display 2". */
50
+ /** The switcher's label, e.g. "Display 2", or "Display" before the agent has named one. */
42
51
  currentDisplayLabel: string;
43
52
  actionsMenuGroups: ActionsMenuGroup[];
44
53
  onOpenSettings: () => void;
@@ -86,61 +95,73 @@ export function RemoteDesktopView({
86
95
  }: RemoteDesktopViewProps) {
87
96
  const controlsBar = (
88
97
  <div className={CONTROLS_BAR_CLASS}>
89
- <div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
90
- <div className="flex-shrink-0 rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-xsf)]">
91
- <MonitorIcon className="h-4 w-4 text-ods-text-primary" />
92
- </div>
93
- <div className="flex min-w-0 flex-col">
94
- <TruncateText>{deviceName}</TruncateText>
95
- <TruncateText
96
- variant="h6"
97
- tone="secondary"
98
- >{`Desktop • ${organizationName || 'Unknown Customer'}`}</TruncateText>
98
+ <div className={CONTROLS_ROW_CLASS}>
99
+ <div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
100
+ <div className="flex-shrink-0 rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-xsf)]">
101
+ <MonitorIcon className="h-4 w-4 text-ods-text-primary" />
102
+ </div>
103
+ <div className="flex min-w-0 flex-col">
104
+ <TruncateText>{deviceName}</TruncateText>
105
+ <TruncateText
106
+ variant="h6"
107
+ tone="secondary"
108
+ >{`Desktop • ${organizationName || 'Unknown Customer'}`}</TruncateText>
109
+ </div>
99
110
  </div>
100
- </div>
101
- <div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
102
- {displayMenuGroups.length > 0 && (
103
- <ActionsMenuDropdown
104
- groups={displayMenuGroups}
105
- customTrigger={
106
- <Button variant="outline" leftIcon={<MonitorIcon className="h-4 w-4 md:h-6 md:w-6" />}>
107
- {/* A narrow page keeps the icon and drops the words: the bar never pushes the device's name out. */}
108
- <span className="sr-only content-md:not-sr-only">{currentDisplayLabel}</span>
109
- </Button>
110
- }
111
+ <div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
112
+ {onToggleChat && (
113
+ <Button
114
+ variant="outline"
115
+ onClick={onToggleChat}
116
+ leftIcon={
117
+ chatOpen ? (
118
+ <ChatOffIcon className="h-4 w-4 md:h-6 md:w-6" />
119
+ ) : (
120
+ <ChatTextIcon className="h-4 w-4 md:h-6 md:w-6" />
121
+ )
122
+ }
123
+ >
124
+ {/* A narrow page keeps the icon and drops the words: the bar never pushes the device's name out. */}
125
+ <span className="sr-only content-md:not-sr-only">{chatOpen ? 'Close Chat' : 'Open Chat'}</span>
126
+ </Button>
127
+ )}
128
+ <ActionsMenuDropdown groups={actionsMenuGroups} triggerAriaLabel="Actions" />
129
+ <Button
130
+ variant="outline"
131
+ size="icon"
132
+ aria-label="Settings"
133
+ onClick={onOpenSettings}
134
+ leftIcon={<Settings01Icon />}
111
135
  />
112
- )}
113
- {onToggleChat && (
114
136
  <Button
115
137
  variant="outline"
116
- onClick={onToggleChat}
117
- leftIcon={
118
- chatOpen ? (
119
- <ChatOffIcon className="h-4 w-4 md:h-6 md:w-6" />
120
- ) : (
121
- <ChatTextIcon className="h-4 w-4 md:h-6 md:w-6" />
122
- )
123
- }
124
- >
125
- <span className="sr-only content-md:not-sr-only">{chatOpen ? 'Close Chat' : 'Open Chat'}</span>
126
- </Button>
127
- )}
128
- <ActionsMenuDropdown groups={actionsMenuGroups} triggerAriaLabel="Actions" />
129
- <Button
130
- variant="outline"
131
- size="icon"
132
- aria-label="Settings"
133
- onClick={onOpenSettings}
134
- leftIcon={<Settings01Icon />}
135
- />
136
- <Button
137
- variant="outline"
138
- size="icon"
139
- aria-label={fullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
140
- onClick={fullscreen ? onExitFullscreen : onEnterFullscreen}
141
- leftIcon={fullscreen ? <Collapse02Icon /> : <Expand02Icon />}
142
- />
138
+ size="icon"
139
+ aria-label={fullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
140
+ onClick={fullscreen ? onExitFullscreen : onEnterFullscreen}
141
+ leftIcon={fullscreen ? <Collapse02Icon /> : <Expand02Icon />}
142
+ />
143
+ </div>
143
144
  </div>
145
+ {/* The monitor selector is a row of its own under the device row, the full
146
+ width of the card (Figma 2155:109503): the label never competes with the
147
+ device's name for the header's width. Hidden with one display or none. */}
148
+ {displayMenuGroups.length > 0 && (
149
+ <ActionsMenuDropdown
150
+ groups={displayMenuGroups}
151
+ align="start"
152
+ customTrigger={
153
+ <button
154
+ type="button"
155
+ aria-label="Switch display"
156
+ className="flex w-full items-center gap-[var(--spacing-system-xs)] border-t border-ods-border p-[var(--spacing-system-sf)] text-left text-ods-text-primary outline-none transition-colors hover:bg-ods-bg-hover focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-focus"
157
+ >
158
+ <MonitorIcon className="h-6 w-6 shrink-0" />
159
+ <span className="min-w-0 flex-1 truncate text-h4">{currentDisplayLabel}</span>
160
+ <Chevron02DownIcon className="h-6 w-6 shrink-0" />
161
+ </button>
162
+ }
163
+ />
164
+ )}
144
165
  </div>
145
166
  );
146
167
 
@@ -189,17 +210,19 @@ export function RemoteDesktopViewSkeleton({ onBack }: Pick<RemoteDesktopViewProp
189
210
  return (
190
211
  <PageLayout className={PAGE_CLASS} backButton={onBack ? { label: 'Back', onClick: onBack } : undefined}>
191
212
  <div className={CONTROLS_BAR_CLASS}>
192
- <div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
193
- <Skeleton className="h-9 w-9 flex-shrink-0 rounded-md" />
194
- <div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
195
- <Skeleton className="h-5 w-48" />
196
- <Skeleton className="h-4 w-36" />
213
+ <div className={CONTROLS_ROW_CLASS}>
214
+ <div className="flex min-w-0 items-center gap-[var(--spacing-system-mf)]">
215
+ <Skeleton className="h-9 w-9 flex-shrink-0 rounded-md" />
216
+ <div className="flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]">
217
+ <Skeleton className="h-5 w-48" />
218
+ <Skeleton className="h-4 w-36" />
219
+ </div>
220
+ </div>
221
+ <div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
222
+ <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
223
+ <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
224
+ <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
197
225
  </div>
198
- </div>
199
- <div className="flex flex-shrink-0 items-center gap-[var(--spacing-system-xs)]">
200
- <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
201
- <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
202
- <Skeleton className="h-11 w-11 rounded-lg md:h-12 md:w-12" />
203
226
  </div>
204
227
  </div>
205
228