@flamingo-stack/openframe-frontend-core 0.0.782 → 0.0.784

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 (65) hide show
  1. package/dist/{chunk-TS6TISIF.cjs → chunk-4LQKUZQL.cjs} +15 -15
  2. package/dist/{chunk-C5UUWXHE.cjs → chunk-4T2ZBCVJ.cjs} +55 -55
  3. package/dist/{chunk-7DKDVJMR.cjs → chunk-6F3IS3RD.cjs} +3 -3
  4. package/dist/{chunk-ISB7LW3D.cjs → chunk-CBDSML44.cjs} +32 -32
  5. package/dist/{chunk-QV4GHAWN.cjs → chunk-CZPUVFON.cjs} +51 -51
  6. package/dist/{chunk-C42BXIY7.cjs → chunk-FQE5MGRD.cjs} +11 -11
  7. package/dist/{chunk-LTF6UDGO.cjs → chunk-GI5QCHOV.cjs} +6 -6
  8. package/dist/{chunk-E2ZZOYSM.cjs → chunk-GMIXTXAO.cjs} +15 -3
  9. package/dist/{chunk-2EXD2RSC.cjs → chunk-GTYVI4QR.cjs} +4 -4
  10. package/dist/{chunk-JGKPEGZN.cjs → chunk-JYLECAIR.cjs} +41 -41
  11. package/dist/{chunk-YX7X5QQN.cjs → chunk-KVPHCBQV.cjs} +12 -12
  12. package/dist/{chunk-MDGDL3C7.cjs → chunk-L33AEGH4.cjs} +22 -22
  13. package/dist/{chunk-A4YUTS6Q.cjs → chunk-MYXC6PEG.cjs} +329 -329
  14. package/dist/{chunk-VH3KQSI2.cjs → chunk-MZQGHDTE.cjs} +3 -3
  15. package/dist/{chunk-GFRKNUJZ.cjs → chunk-NZJ5WW2D.cjs} +21 -21
  16. package/dist/{chunk-N7QNWHJA.cjs → chunk-STYH4ISW.cjs} +23 -23
  17. package/dist/{chunk-IZKEWQJN.cjs → chunk-U5R4MY4F.cjs} +4 -4
  18. package/dist/{chunk-VZUV2FCP.cjs → chunk-V5PJQ4C2.cjs} +6 -6
  19. package/dist/{chunk-7OJMOG34.cjs → chunk-WMXNSSJZ.cjs} +48 -48
  20. package/dist/{chunk-I7LRZR4Q.cjs → chunk-XVFESSEB.cjs} +7 -7
  21. package/dist/{cloud-tenants-LXKEG5N4.cjs → cloud-tenants-HUFCDOSC.cjs} +6 -6
  22. package/dist/components/case-studies/index.cjs +18 -18
  23. package/dist/components/chat/embeddable-chat.js +120 -98
  24. package/dist/components/chat/index.cjs +4 -4
  25. package/dist/components/contact/index.cjs +7 -7
  26. package/dist/components/docs/index.cjs +10 -10
  27. package/dist/components/embeds/index.cjs +7 -7
  28. package/dist/components/faq/index.cjs +8 -8
  29. package/dist/components/features/board/board-column.d.ts +1 -1
  30. package/dist/components/features/board/board-column.d.ts.map +1 -1
  31. package/dist/components/features/board/ticket-card.d.ts +1 -1
  32. package/dist/components/features/board/ticket-card.d.ts.map +1 -1
  33. package/dist/components/features/index.cjs +6 -6
  34. package/dist/components/help-center-pages/index.cjs +72 -72
  35. package/dist/components/index.cjs +40 -40
  36. package/dist/components/media-carousel.d.ts +1 -1
  37. package/dist/components/media-carousel.d.ts.map +1 -1
  38. package/dist/components/meeting-scheduler/index.cjs +38 -38
  39. package/dist/components/navigation/app-header.d.ts +1 -1
  40. package/dist/components/navigation/app-header.d.ts.map +1 -1
  41. package/dist/components/navigation/index.cjs +9 -9
  42. package/dist/components/navigation/mobile-burger-menu.d.ts +1 -1
  43. package/dist/components/navigation/mobile-burger-menu.d.ts.map +1 -1
  44. package/dist/components/navigation/navigation-sidebar-item.d.ts +1 -1
  45. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  46. package/dist/components/onboarding-guides/index.cjs +8 -8
  47. package/dist/components/product-demo/index.cjs +16 -16
  48. package/dist/components/tickets/index.cjs +11 -11
  49. package/dist/components/ui/index.cjs +6 -6
  50. package/dist/components/ui/markdown/engine.d.ts +1 -1
  51. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  52. package/dist/components/ui/modal-v2.d.ts.map +1 -1
  53. package/dist/components/ui/modal-v2.js +16 -4
  54. package/dist/{devices-PYJRYIQN.cjs → devices-KRWVEY76.cjs} +7 -7
  55. package/dist/{embeddable-chat-7MSM62UC.cjs → embeddable-chat-AZEPJAPN.cjs} +178 -156
  56. package/dist/index.cjs +10 -10
  57. package/dist/{knowledge-R4H2ZDX2.cjs → knowledge-Z3FM7U3W.cjs} +7 -7
  58. package/dist/{logs-YWL6NK24.cjs → logs-CNJYF5CO.cjs} +14 -14
  59. package/dist/{policies-3COFYSKB.cjs → policies-U32LUDZ4.cjs} +10 -10
  60. package/dist/{remote-session-IEOWFBF7.cjs → remote-session-ST6JEZML.cjs} +5 -5
  61. package/dist/{scripts-72EJDICT.cjs → scripts-2Y6ISOOK.cjs} +13 -13
  62. package/dist/{software-update-PPUVCLPO.cjs → software-update-EEN7PQR3.cjs} +10 -10
  63. package/package.json +3 -3
  64. package/src/components/chat/embeddable-chat.tsx +21 -4
  65. package/src/components/ui/modal-v2.tsx +22 -4
@@ -8,10 +8,10 @@ var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
8
8
  var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
9
9
 
10
10
 
11
- var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
11
+ var _chunkMYXC6PEGcjs = require('./chunk-MYXC6PEG.cjs');
12
12
  require('./chunk-MKF6XX5A.cjs');
13
13
  require('./chunk-ZFOMRALU.cjs');
14
- require('./chunk-TS6TISIF.cjs');
14
+ require('./chunk-4LQKUZQL.cjs');
15
15
  require('./chunk-HQQE74RO.cjs');
16
16
  require('./chunk-DEY6XXGO.cjs');
17
17
  require('./chunk-CBKXU77H.cjs');
@@ -20,13 +20,13 @@ require('./chunk-24I6RFVU.cjs');
20
20
  require('./chunk-A6P6DHEZ.cjs');
21
21
  require('./chunk-MZ4KBSH7.cjs');
22
22
  require('./chunk-UPQMFK5B.cjs');
23
- require('./chunk-N7QNWHJA.cjs');
23
+ require('./chunk-STYH4ISW.cjs');
24
24
 
25
25
 
26
- var _chunk7OJMOG34cjs = require('./chunk-7OJMOG34.cjs');
26
+ var _chunkWMXNSSJZcjs = require('./chunk-WMXNSSJZ.cjs');
27
27
  require('./chunk-BE4OUWTA.cjs');
28
28
  require('./chunk-WSBWP7IW.cjs');
29
- require('./chunk-E2ZZOYSM.cjs');
29
+ require('./chunk-GMIXTXAO.cjs');
30
30
  require('./chunk-FS7CBRF4.cjs');
31
31
  require('./chunk-ZOZR3QI2.cjs');
32
32
  require('./chunk-OMV5S5PI.cjs');
@@ -1905,10 +1905,10 @@ function KnowledgeScreen(_props) {
1905
1905
  const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
1906
1906
  const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
1907
1907
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1908
- _chunkA4YUTS6Qcjs.KnowledgeBaseArticleView,
1908
+ _chunkMYXC6PEGcjs.KnowledgeBaseArticleView,
1909
1909
  {
1910
1910
  ...fixture.article,
1911
- content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7OJMOG34cjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
1911
+ content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWMXNSSJZcjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
1912
1912
  }
1913
1913
  ) });
1914
1914
  }
@@ -16,10 +16,10 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
19
+ var _chunkMYXC6PEGcjs = require('./chunk-MYXC6PEG.cjs');
20
20
  require('./chunk-MKF6XX5A.cjs');
21
21
  require('./chunk-ZFOMRALU.cjs');
22
- require('./chunk-TS6TISIF.cjs');
22
+ require('./chunk-4LQKUZQL.cjs');
23
23
  require('./chunk-HQQE74RO.cjs');
24
24
  require('./chunk-DEY6XXGO.cjs');
25
25
  require('./chunk-CBKXU77H.cjs');
@@ -30,11 +30,11 @@ require('./chunk-MZ4KBSH7.cjs');
30
30
  require('./chunk-UPQMFK5B.cjs');
31
31
 
32
32
 
33
- var _chunkN7QNWHJAcjs = require('./chunk-N7QNWHJA.cjs');
34
- require('./chunk-7OJMOG34.cjs');
33
+ var _chunkSTYH4ISWcjs = require('./chunk-STYH4ISW.cjs');
34
+ require('./chunk-WMXNSSJZ.cjs');
35
35
  require('./chunk-BE4OUWTA.cjs');
36
36
  require('./chunk-WSBWP7IW.cjs');
37
- require('./chunk-E2ZZOYSM.cjs');
37
+ require('./chunk-GMIXTXAO.cjs');
38
38
  require('./chunk-FS7CBRF4.cjs');
39
39
  require('./chunk-ZOZR3QI2.cjs');
40
40
  require('./chunk-OMV5S5PI.cjs');
@@ -1886,7 +1886,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
1886
1886
  id: logId,
1887
1887
  logId,
1888
1888
  timestamp: displayTime(_chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, minutesAgo)),
1889
- status: { label: severity, variant: _chunkA4YUTS6Qcjs.logSeverityVariant.call(void 0, severity) },
1889
+ status: { label: severity, variant: _chunkMYXC6PEGcjs.logSeverityVariant.call(void 0, severity) },
1890
1890
  source: { name: toolType, toolType },
1891
1891
  device: device2,
1892
1892
  description: { title: summary }
@@ -1958,13 +1958,13 @@ var NO_FILTERS = {};
1958
1958
  var ACTION_COLUMNS = ["copy", "quickView", "open"];
1959
1959
  var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
1960
1960
  var logHref = () => "#";
1961
- var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.LogCopyIconButton, {});
1961
+ var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMYXC6PEGcjs.LogCopyIconButton, {});
1962
1962
  function LogsScreen({ compact = false }) {
1963
1963
  const [dock, setDock] = _react.useState.call(void 0, null);
1964
1964
  const selected = LOGS_FIXTURE_SELECTED;
1965
1965
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
1966
1966
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1967
- _chunkA4YUTS6Qcjs.LogsPageView,
1967
+ _chunkMYXC6PEGcjs.LogsPageView,
1968
1968
  {
1969
1969
  showHeader: false,
1970
1970
  className: "p-[var(--spacing-system-l)]",
@@ -1972,7 +1972,7 @@ function LogsScreen({ compact = false }) {
1972
1972
  onSearchChange: noop,
1973
1973
  onOpenFilters: noop,
1974
1974
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1975
- _chunkA4YUTS6Qcjs.LogsTableView,
1975
+ _chunkMYXC6PEGcjs.LogsTableView,
1976
1976
  {
1977
1977
  logs: LOGS_FIXTURE_ENTRIES,
1978
1978
  facets: LOGS_FIXTURE_FACETS,
@@ -1986,8 +1986,8 @@ function LogsScreen({ compact = false }) {
1986
1986
  )
1987
1987
  }
1988
1988
  ) }),
1989
- !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, _chunkA4YUTS6Qcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1990
- _chunkA4YUTS6Qcjs.LogDrawer,
1989
+ !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, _chunkMYXC6PEGcjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1990
+ _chunkMYXC6PEGcjs.LogDrawer,
1991
1991
  {
1992
1992
  docked: true,
1993
1993
  isOpen: true,
@@ -1999,12 +1999,12 @@ function LogsScreen({ compact = false }) {
1999
1999
  { label: "Log ID", value: selected.logId },
2000
2000
  {
2001
2001
  label: "Source",
2002
- value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.ToolBadge, { toolType: _chunkN7QNWHJAcjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
2002
+ value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMYXC6PEGcjs.ToolBadge, { toolType: _chunkSTYH4ISWcjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
2003
2003
  },
2004
- { label: "Device", value: _chunkA4YUTS6Qcjs.logSourceLabels.call(void 0, selected.device).deviceName }
2004
+ { label: "Device", value: _chunkMYXC6PEGcjs.logSourceLabels.call(void 0, selected.device).deviceName }
2005
2005
  ],
2006
2006
  deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2007
- _chunkA4YUTS6Qcjs.DeviceCard,
2007
+ _chunkMYXC6PEGcjs.DeviceCard,
2008
2008
  {
2009
2009
  ...LOGS_FIXTURE_DEVICE,
2010
2010
  actions: {
@@ -10,10 +10,10 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
13
+ var _chunkMYXC6PEGcjs = require('./chunk-MYXC6PEG.cjs');
14
14
  require('./chunk-MKF6XX5A.cjs');
15
15
  require('./chunk-ZFOMRALU.cjs');
16
- require('./chunk-TS6TISIF.cjs');
16
+ require('./chunk-4LQKUZQL.cjs');
17
17
  require('./chunk-HQQE74RO.cjs');
18
18
  require('./chunk-DEY6XXGO.cjs');
19
19
  require('./chunk-CBKXU77H.cjs');
@@ -22,11 +22,11 @@ require('./chunk-24I6RFVU.cjs');
22
22
  require('./chunk-A6P6DHEZ.cjs');
23
23
  require('./chunk-MZ4KBSH7.cjs');
24
24
  require('./chunk-UPQMFK5B.cjs');
25
- require('./chunk-N7QNWHJA.cjs');
26
- require('./chunk-7OJMOG34.cjs');
25
+ require('./chunk-STYH4ISW.cjs');
26
+ require('./chunk-WMXNSSJZ.cjs');
27
27
  require('./chunk-BE4OUWTA.cjs');
28
28
  require('./chunk-WSBWP7IW.cjs');
29
- require('./chunk-E2ZZOYSM.cjs');
29
+ require('./chunk-GMIXTXAO.cjs');
30
30
  require('./chunk-FS7CBRF4.cjs');
31
31
  require('./chunk-ZOZR3QI2.cjs');
32
32
  require('./chunk-OMV5S5PI.cjs');
@@ -1891,14 +1891,14 @@ var POLICIES = [
1891
1891
  policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
1892
1892
  ];
1893
1893
  var POLICIES_FIXTURE = {
1894
- summary: _chunkA4YUTS6Qcjs.computePolicySummary.call(void 0, POLICIES),
1894
+ summary: _chunkMYXC6PEGcjs.computePolicySummary.call(void 0, POLICIES),
1895
1895
  rows: POLICIES.map((item) => ({
1896
1896
  id: item.id,
1897
1897
  name: item.name,
1898
1898
  description: item.description,
1899
1899
  critical: item.critical,
1900
1900
  severityLabel: item.critical ? "Critical" : "Low",
1901
- status: _chunkA4YUTS6Qcjs.getPolicyTableStatus.call(void 0, item),
1901
+ status: _chunkMYXC6PEGcjs.getPolicyTableStatus.call(void 0, item),
1902
1902
  actions: [
1903
1903
  { label: "Policy Details", onClick: noop },
1904
1904
  { label: "Delete Policy", onClick: noop }
@@ -1912,16 +1912,16 @@ var POLICIES_FIXTURE = {
1912
1912
  var _jsxruntime = require('react/jsx-runtime');
1913
1913
  function PoliciesScreen({ compact = false }) {
1914
1914
  const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1915
- _chunkA4YUTS6Qcjs.PoliciesTable,
1915
+ _chunkMYXC6PEGcjs.PoliciesTable,
1916
1916
  {
1917
1917
  rows: POLICIES_FIXTURE.rows,
1918
1918
  rowAsLink: true,
1919
- rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.DataTable.RowCount, {}),
1919
+ rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMYXC6PEGcjs.DataTable.RowCount, {}),
1920
1920
  emptyMessage: "No policies found."
1921
1921
  }
1922
1922
  );
1923
1923
  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: [
1924
- !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
1924
+ !compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMYXC6PEGcjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
1925
1925
  table
1926
1926
  ] });
1927
1927
  }
@@ -11,9 +11,9 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunkTS6TISIFcjs = require('./chunk-TS6TISIF.cjs');
14
+ var _chunk4LQKUZQLcjs = require('./chunk-4LQKUZQL.cjs');
15
15
  require('./chunk-A6P6DHEZ.cjs');
16
- require('./chunk-E2ZZOYSM.cjs');
16
+ require('./chunk-GMIXTXAO.cjs');
17
17
  require('./chunk-FS7CBRF4.cjs');
18
18
  require('./chunk-ZOZR3QI2.cjs');
19
19
  require('./chunk-OMV5S5PI.cjs');
@@ -1920,7 +1920,7 @@ function TaskbarApp({ icon, active = false }) {
1920
1920
  );
1921
1921
  }
1922
1922
  function RemoteDesktopPicture({ desktop }) {
1923
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `absolute inset-0 flex flex-col overflow-hidden ${_chunkTS6TISIFcjs.DEVICE_WALLPAPER_CLASS}`, children: [
1923
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `absolute inset-0 flex flex-col overflow-hidden ${_chunk4LQKUZQLcjs.DEVICE_WALLPAPER_CLASS}`, children: [
1924
1924
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative min-h-0 flex-1", children: [
1925
1925
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute left-[var(--spacing-system-sf)] top-[var(--spacing-system-sf)] hidden flex-col gap-[var(--spacing-system-sf)] content-md:flex", children: [
1926
1926
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DesktopShortcut, { icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIYHH5EIOcjs.TrashIcon, { className: "h-5 w-5" }), label: "Recycle Bin" }),
@@ -1984,7 +1984,7 @@ function RemoteSessionScreen({ compact = false }) {
1984
1984
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col bg-ods-bg", children: [
1985
1985
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[var(--spacing-system-l)] flex-shrink-0" }),
1986
1986
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1987
- _chunkTS6TISIFcjs.RemoteDesktopView,
1987
+ _chunk4LQKUZQLcjs.RemoteDesktopView,
1988
1988
  {
1989
1989
  ...fixture.view,
1990
1990
  onEnterFullscreen: noop,
@@ -1995,7 +1995,7 @@ function RemoteSessionScreen({ compact = false }) {
1995
1995
  screen: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RemoteDesktopPicture, { desktop: fixture.desktop }),
1996
1996
  chat: compact ? null : (
1997
1997
  // The side column needs the room of the wide layout; a narrow frame keeps the screen alone.
1998
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
1998
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4LQKUZQLcjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
1999
1999
  )
2000
2000
  }
2001
2001
  ) })
@@ -13,12 +13,12 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
13
13
 
14
14
 
15
15
 
16
- var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
16
+ var _chunkMYXC6PEGcjs = require('./chunk-MYXC6PEG.cjs');
17
17
  require('./chunk-MKF6XX5A.cjs');
18
18
  require('./chunk-ZFOMRALU.cjs');
19
19
 
20
20
 
21
- var _chunkTS6TISIFcjs = require('./chunk-TS6TISIF.cjs');
21
+ var _chunk4LQKUZQLcjs = require('./chunk-4LQKUZQL.cjs');
22
22
  require('./chunk-HQQE74RO.cjs');
23
23
  require('./chunk-DEY6XXGO.cjs');
24
24
  require('./chunk-CBKXU77H.cjs');
@@ -27,11 +27,11 @@ require('./chunk-24I6RFVU.cjs');
27
27
  require('./chunk-A6P6DHEZ.cjs');
28
28
  require('./chunk-MZ4KBSH7.cjs');
29
29
  require('./chunk-UPQMFK5B.cjs');
30
- require('./chunk-N7QNWHJA.cjs');
31
- require('./chunk-7OJMOG34.cjs');
30
+ require('./chunk-STYH4ISW.cjs');
31
+ require('./chunk-WMXNSSJZ.cjs');
32
32
  require('./chunk-BE4OUWTA.cjs');
33
33
  require('./chunk-WSBWP7IW.cjs');
34
- require('./chunk-E2ZZOYSM.cjs');
34
+ require('./chunk-GMIXTXAO.cjs');
35
35
  require('./chunk-FS7CBRF4.cjs');
36
36
  require('./chunk-ZOZR3QI2.cjs');
37
37
  require('./chunk-OMV5S5PI.cjs');
@@ -1995,8 +1995,8 @@ function buildScriptsFixture(cast) {
1995
1995
  var _jsxruntime = require('react/jsx-runtime');
1996
1996
  var WIDE_HIDDEN_COLUMNS = ["result", "open"];
1997
1997
  var COMPACT_COLUMNS = [
1998
- { ..._chunkA4YUTS6Qcjs.EXECUTION_COLUMNS.machineId, width: "flex-1 min-w-0", hideAt: void 0 },
1999
- _chunkA4YUTS6Qcjs.EXECUTION_COLUMNS.status
1998
+ { ..._chunkMYXC6PEGcjs.EXECUTION_COLUMNS.machineId, width: "flex-1 min-w-0", hideAt: void 0 },
1999
+ _chunkMYXC6PEGcjs.EXECUTION_COLUMNS.status
2000
2000
  ];
2001
2001
  var COMPACT_ROWS = 4;
2002
2002
  var TOKEN_CLASS = {
@@ -2046,16 +2046,16 @@ function ScriptCodePicture({ script }) {
2046
2046
  children: [
2047
2047
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)] border-b border-ods-border p-[var(--spacing-system-m)]", children: [
2048
2048
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center justify-between gap-[var(--spacing-system-m)]", children: [
2049
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.TruncateText, { variant: "h4", children: script.name }),
2049
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4LQKUZQLcjs.TruncateText, { variant: "h4", children: script.name }),
2050
2050
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex shrink-0 items-center gap-[var(--spacing-system-xxs)] text-ods-text-primary text-h6", children: [
2051
2051
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTPKKRHUMcjs.TimerIcon, { className: "size-4 text-ods-text-secondary" }),
2052
2052
  `${schedule.repeat} ${schedule.time} \xB7 ${schedule.deviceCount} devices`
2053
2053
  ] })
2054
2054
  ] }),
2055
2055
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center justify-between gap-[var(--spacing-system-m)]", children: [
2056
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTS6TISIFcjs.TruncateText, { variant: "h6", tone: "secondary", children: `Written by ${provenance.author} \xB7 approved by ${provenance.approver}` }),
2056
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4LQKUZQLcjs.TruncateText, { variant: "h6", tone: "secondary", children: `Written by ${provenance.author} \xB7 approved by ${provenance.approver}` }),
2057
2057
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2058
- _chunkA4YUTS6Qcjs.ScriptShellBadge,
2058
+ _chunkMYXC6PEGcjs.ScriptShellBadge,
2059
2059
  {
2060
2060
  value: script.shellType,
2061
2061
  className: "shrink-0 text-ods-text-secondary text-h6",
@@ -2079,7 +2079,7 @@ function ScriptsScreen({ compact = false }) {
2079
2079
  return (
2080
2080
  // Four runs of the card's row height fill the frame; the padding is what is left round them.
2081
2081
  /* @__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,
2082
- _chunkA4YUTS6Qcjs.ScriptExecutionsTable,
2082
+ _chunkMYXC6PEGcjs.ScriptExecutionsTable,
2083
2083
  {
2084
2084
  rows: fixture.executions.slice(0, COMPACT_ROWS),
2085
2085
  columns: COMPACT_COLUMNS,
@@ -2089,13 +2089,13 @@ function ScriptsScreen({ compact = false }) {
2089
2089
  ) })
2090
2090
  );
2091
2091
  }
2092
- const renderOutput = (row) => row.id === fixture.openExecutionId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA4YUTS6Qcjs.ScriptExecutionResult, { result: row.result, empty: "\u2014" }) : null;
2092
+ const renderOutput = (row) => row.id === fixture.openExecutionId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMYXC6PEGcjs.ScriptExecutionResult, { result: row.result, empty: "\u2014" }) : null;
2093
2093
  return (
2094
2094
  // The frame's tighter padding and no header row: the output opened under a run needs the height.
2095
2095
  /* @__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: [
2096
2096
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[39%] shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptCodePicture, { script: fixture.script }) }),
2097
2097
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2098
- _chunkA4YUTS6Qcjs.ScriptExecutionsTable,
2098
+ _chunkMYXC6PEGcjs.ScriptExecutionsTable,
2099
2099
  {
2100
2100
  rows: fixture.executions,
2101
2101
  hideColumns: WIDE_HIDDEN_COLUMNS,
@@ -15,12 +15,12 @@ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkA4YUTS6Qcjs = require('./chunk-A4YUTS6Q.cjs');
18
+ var _chunkMYXC6PEGcjs = require('./chunk-MYXC6PEG.cjs');
19
19
  require('./chunk-MKF6XX5A.cjs');
20
20
  require('./chunk-ZFOMRALU.cjs');
21
21
 
22
22
 
23
- var _chunkTS6TISIFcjs = require('./chunk-TS6TISIF.cjs');
23
+ var _chunk4LQKUZQLcjs = require('./chunk-4LQKUZQL.cjs');
24
24
  require('./chunk-HQQE74RO.cjs');
25
25
  require('./chunk-DEY6XXGO.cjs');
26
26
  require('./chunk-CBKXU77H.cjs');
@@ -29,11 +29,11 @@ require('./chunk-24I6RFVU.cjs');
29
29
  require('./chunk-A6P6DHEZ.cjs');
30
30
  require('./chunk-MZ4KBSH7.cjs');
31
31
  require('./chunk-UPQMFK5B.cjs');
32
- require('./chunk-N7QNWHJA.cjs');
33
- require('./chunk-7OJMOG34.cjs');
32
+ require('./chunk-STYH4ISW.cjs');
33
+ require('./chunk-WMXNSSJZ.cjs');
34
34
  require('./chunk-BE4OUWTA.cjs');
35
35
  require('./chunk-WSBWP7IW.cjs');
36
- require('./chunk-E2ZZOYSM.cjs');
36
+ require('./chunk-GMIXTXAO.cjs');
37
37
  require('./chunk-FS7CBRF4.cjs');
38
38
  require('./chunk-ZOZR3QI2.cjs');
39
39
  require('./chunk-OMV5S5PI.cjs');
@@ -1920,14 +1920,14 @@ var noop = () => {
1920
1920
  var HIDDEN_WHEN_COMPACT = ["organization"];
1921
1921
  function StaticPackageField({ value }) {
1922
1922
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1923
- _chunkTS6TISIFcjs.Autocomplete,
1923
+ _chunk4LQKUZQLcjs.Autocomplete,
1924
1924
  {
1925
- label: _chunkA4YUTS6Qcjs.PACKAGE_SEARCH_LABEL,
1925
+ label: _chunkMYXC6PEGcjs.PACKAGE_SEARCH_LABEL,
1926
1926
  labelVariant: "large",
1927
1927
  options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
1928
1928
  value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
1929
1929
  onChange: noop,
1930
- placeholder: _chunkA4YUTS6Qcjs.PACKAGE_SEARCH_PLACEHOLDER
1930
+ placeholder: _chunkMYXC6PEGcjs.PACKAGE_SEARCH_PLACEHOLDER
1931
1931
  }
1932
1932
  );
1933
1933
  }
@@ -1941,7 +1941,7 @@ function SoftwareUpdateScreen({ compact = false }) {
1941
1941
  [fixture.devices, fixture.selectedIds]
1942
1942
  );
1943
1943
  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,
1944
- _chunkA4YUTS6Qcjs.SoftwareActionForm,
1944
+ _chunkMYXC6PEGcjs.SoftwareActionForm,
1945
1945
  {
1946
1946
  action: fixture.action,
1947
1947
  showHeader: false,
@@ -1953,7 +1953,7 @@ function SoftwareUpdateScreen({ compact = false }) {
1953
1953
  initialValues: fixture.initialValues,
1954
1954
  renderPackageSearch,
1955
1955
  renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1956
- _chunkA4YUTS6Qcjs.DeviceSelector,
1956
+ _chunkMYXC6PEGcjs.DeviceSelector,
1957
1957
  {
1958
1958
  devices: selected,
1959
1959
  loading: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.782",
3
+ "version": "0.0.784",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -461,7 +461,7 @@
461
461
  "@types/react-datepicker": "^6.2.0",
462
462
  "@types/react-dom": "19.3.0",
463
463
  "@uiw/react-md-editor": "^4.1.0",
464
- "@vitest/eslint-plugin": "^1.6.27",
464
+ "@vitest/eslint-plugin": "^1.6.28",
465
465
  "class-variance-authority": "^0.7.0",
466
466
  "clsx": "^2.1.1",
467
467
  "cmdk": "^1.0.4",
@@ -544,7 +544,7 @@
544
544
  "storybook": "^10.1.11",
545
545
  "tailwindcss": "^3.4.19",
546
546
  "tsup": "^8.5.1",
547
- "typescript": "^5.8.3",
547
+ "typescript": "^6.0.3",
548
548
  "unified": "^11.0.5",
549
549
  "vite": "^7.3.1",
550
550
  "vitest": "^4.0.16",
@@ -1983,6 +1983,8 @@ function EmbeddableChatInner({
1983
1983
  // `isOpeningDialog` is false. Keyed on the dialog id being set rather than on
1984
1984
  // any transport: `isMessagesLoading` is only ever about the ACTIVE dialog.
1985
1985
  const isLoadingActiveDialogMessages = activeDialogId != null && isMessagesLoading;
1986
+ // A host block pinned above the composer (`aboveComposer`).
1987
+ const hasAboveComposer = aboveComposer != null && aboveComposer !== false;
1986
1988
  const hasConversation =
1987
1989
  hasMessages ||
1988
1990
  isOpeningDialog ||
@@ -2923,7 +2925,17 @@ function EmbeddableChatInner({
2923
2925
  />
2924
2926
  ) : (
2925
2927
  <>
2926
- <div ref={galleryPanelRef} className="flex min-h-0 flex-1 flex-col p-[var(--spacing-system-m)]">
2928
+ <div
2929
+ ref={galleryPanelRef}
2930
+ data-testid="chat-content-panel"
2931
+ className={cn(
2932
+ 'flex min-h-0 flex-1 flex-col p-[var(--spacing-system-m)]',
2933
+ // With a host block above the composer the thread keeps room
2934
+ // for a line and the working status: the block gives way
2935
+ // instead (below), so the status never lands on it.
2936
+ hasAboveComposer && 'min-h-32',
2937
+ )}
2938
+ >
2927
2939
  <div
2928
2940
  key={contentViewKey}
2929
2941
  className="flex min-h-0 flex-1 flex-col duration-200 animate-in fade-in-0"
@@ -3123,9 +3135,14 @@ function EmbeddableChatInner({
3123
3135
 
3124
3136
  {/* Host block pinned above the composer (`aboveComposer`):
3125
3137
  the thread's own bottom padding separates them, the
3126
- composer's horizontal inset is repeated so the two line up. */}
3127
- {aboveComposer != null && aboveComposer !== false && (
3128
- <div className="shrink-0 px-[var(--spacing-system-m)] pb-[var(--spacing-system-m)]">
3138
+ composer's horizontal inset is repeated so the two line up.
3139
+ It may shrink: in a short panel the block (which scrolls
3140
+ its own content, `min-h-0`) yields height to the thread. */}
3141
+ {hasAboveComposer && (
3142
+ <div
3143
+ data-testid="chat-above-composer"
3144
+ className="flex min-h-0 shrink flex-col px-[var(--spacing-system-m)] pb-[var(--spacing-system-m)]"
3145
+ >
3129
3146
  {aboveComposer}
3130
3147
  </div>
3131
3148
  )}
@@ -1,6 +1,16 @@
1
1
  'use client';
2
2
 
3
- import { type ReactNode, createContext, forwardRef, useContext, useRef, useEffect, useState } from 'react';
3
+ import {
4
+ type ReactNode,
5
+ createContext,
6
+ forwardRef,
7
+ useContext,
8
+ useRef,
9
+ useEffect,
10
+ useLayoutEffect,
11
+ useState,
12
+ } from 'react';
13
+ import { createPortal } from 'react-dom';
4
14
  import { RemoveScroll } from 'react-remove-scroll';
5
15
  import { ViewportBreakpoints } from '../../hooks/ui/use-content-breakpoint';
6
16
  import { cn } from '../../utils/cn';
@@ -86,6 +96,13 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
86
96
  // Keep the modal mounted while the exit animation plays.
87
97
  const [isMounted, setIsMounted] = useState(isOpen);
88
98
  const [portalHost, setPortalHost] = useState<HTMLDivElement | null>(null);
99
+ // The modal's layer lives on <body>, like Drawer's and Dialog's: rendered in
100
+ // place, an ancestor with a transform, a filter or a backdrop filter (a sticky
101
+ // header, a bottom action bar, an animated card) becomes the containing block
102
+ // of its `position: fixed` layer, and the modal is clipped to that box. Set
103
+ // after mount, so the server renders nothing and hydration matches.
104
+ const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);
105
+ useLayoutEffect(() => setPortalTarget(document.body), []);
89
106
  const panelRef = useRef<HTMLDivElement | null>(null);
90
107
  const restoreFocusRef = useRef<HTMLElement | null>(null);
91
108
  const stackIdRef = useRef<symbol>(Symbol('modal'));
@@ -214,11 +231,11 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
214
231
  return () => document.removeEventListener('keydown', handleKeyDown);
215
232
  }, [isOpen, onClose]);
216
233
 
217
- if (!isMounted) return null;
234
+ if (!isMounted || !portalTarget) return null;
218
235
 
219
236
  const state = isOpen ? 'open' : 'closed';
220
237
 
221
- return (
238
+ return createPortal(
222
239
  // `forwardProps` — RemoveScroll's default is to WRAP its children in a
223
240
  // plain <div>. That wrapper is in normal flow, so a modal rendered inside
224
241
  // a `flex`/`grid` container with a `gap` became an extra (zero-height)
@@ -326,7 +343,8 @@ const Modal = forwardRef<HTMLDivElement, ModalProps>(
326
343
  anchor the menus' `position: fixed` to the panel. */}
327
344
  <div ref={setPortalHost} className="contents" />
328
345
  </div>
329
- </RemoveScroll>
346
+ </RemoveScroll>,
347
+ portalTarget,
330
348
  );
331
349
  },
332
350
  );