@flamingo-stack/openframe-frontend-core 0.0.355 → 0.0.356

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 (100) hide show
  1. package/dist/{chunk-GO2AEBG7.js → chunk-2YYYGBLE.js} +3 -3
  2. package/dist/{chunk-KAWIGFO2.cjs → chunk-3PUFWBRR.cjs} +29 -29
  3. package/dist/{chunk-KAWIGFO2.cjs.map → chunk-3PUFWBRR.cjs.map} +1 -1
  4. package/dist/{chunk-2IJSLRZZ.cjs → chunk-44F5VCCJ.cjs} +7 -7
  5. package/dist/{chunk-2IJSLRZZ.cjs.map → chunk-44F5VCCJ.cjs.map} +1 -1
  6. package/dist/{chunk-266IXS6E.js → chunk-5NV6U7SX.js} +2 -2
  7. package/dist/{chunk-GSW23VUI.js → chunk-64EZVZZQ.js} +4 -4
  8. package/dist/{chunk-U5MQW3PH.js → chunk-7RQM23VH.js} +2 -2
  9. package/dist/{chunk-GPX5I7FT.cjs → chunk-B7NOIJR3.cjs} +2 -2
  10. package/dist/chunk-B7NOIJR3.cjs.map +1 -0
  11. package/dist/{chunk-PLSEMEEM.cjs → chunk-CR6ZUBNF.cjs} +40 -40
  12. package/dist/{chunk-PLSEMEEM.cjs.map → chunk-CR6ZUBNF.cjs.map} +1 -1
  13. package/dist/{chunk-SFETWAWG.cjs → chunk-CVDJ6S4Y.cjs} +5 -5
  14. package/dist/{chunk-SFETWAWG.cjs.map → chunk-CVDJ6S4Y.cjs.map} +1 -1
  15. package/dist/{chunk-426BLQES.cjs → chunk-EBQNKU66.cjs} +19 -19
  16. package/dist/{chunk-426BLQES.cjs.map → chunk-EBQNKU66.cjs.map} +1 -1
  17. package/dist/{chunk-QD6ANQN5.cjs → chunk-F3GFL65H.cjs} +31 -31
  18. package/dist/{chunk-QD6ANQN5.cjs.map → chunk-F3GFL65H.cjs.map} +1 -1
  19. package/dist/{chunk-P4YC4V7T.js → chunk-FFFOXYA7.js} +6 -6
  20. package/dist/{chunk-GMMVBLAD.js → chunk-H6ZKXS32.js} +3 -3
  21. package/dist/{chunk-KTTCJ7NX.js → chunk-HTR5P2PT.js} +2 -2
  22. package/dist/{chunk-7CEEJGCF.cjs → chunk-IEXRQXJM.cjs} +15 -15
  23. package/dist/{chunk-7CEEJGCF.cjs.map → chunk-IEXRQXJM.cjs.map} +1 -1
  24. package/dist/{chunk-MYLWEYWT.cjs → chunk-IYO2PQRQ.cjs} +53 -53
  25. package/dist/{chunk-MYLWEYWT.cjs.map → chunk-IYO2PQRQ.cjs.map} +1 -1
  26. package/dist/{chunk-XIZR45OD.js → chunk-KV7UDCIW.js} +5 -5
  27. package/dist/{chunk-URBSUHOU.js → chunk-MSMWCG6V.js} +3 -3
  28. package/dist/{chunk-KNIXUH6G.cjs → chunk-PDZOVPTI.cjs} +12 -12
  29. package/dist/{chunk-KNIXUH6G.cjs.map → chunk-PDZOVPTI.cjs.map} +1 -1
  30. package/dist/{chunk-5FYSQ3GW.cjs → chunk-PGDL4GI7.cjs} +73 -73
  31. package/dist/{chunk-5FYSQ3GW.cjs.map → chunk-PGDL4GI7.cjs.map} +1 -1
  32. package/dist/{chunk-RYROZ7HM.cjs → chunk-QCG3MBP6.cjs} +3 -3
  33. package/dist/{chunk-RYROZ7HM.cjs.map → chunk-QCG3MBP6.cjs.map} +1 -1
  34. package/dist/{chunk-RE3KBUNB.js → chunk-QSVG54VM.js} +2 -2
  35. package/dist/{chunk-SGZM3LF6.js → chunk-SBMDCLK4.js} +6 -6
  36. package/dist/{chunk-JGAAUUD7.js → chunk-UJ4ENR2O.js} +2 -2
  37. package/dist/chunk-UJ4ENR2O.js.map +1 -0
  38. package/dist/{chunk-IDQJJEYE.js → chunk-VTFPRVGI.js} +5 -5
  39. package/dist/{chunk-V5QI32ZA.cjs → chunk-VXZWKYM4.cjs} +70 -70
  40. package/dist/{chunk-V5QI32ZA.cjs.map → chunk-VXZWKYM4.cjs.map} +1 -1
  41. package/dist/{chunk-O7T2VECL.cjs → chunk-YUSVGYRV.cjs} +39 -39
  42. package/dist/{chunk-O7T2VECL.cjs.map → chunk-YUSVGYRV.cjs.map} +1 -1
  43. package/dist/{chunk-RYJTVPOQ.js → chunk-ZDTARDIT.js} +2 -2
  44. package/dist/components/case-studies/index.cjs +9 -9
  45. package/dist/components/case-studies/index.js +3 -3
  46. package/dist/components/chat/index.cjs +3 -3
  47. package/dist/components/chat/index.js +2 -2
  48. package/dist/components/contact/index.cjs +4 -4
  49. package/dist/components/contact/index.js +3 -3
  50. package/dist/components/docs/index.cjs +6 -6
  51. package/dist/components/docs/index.js +5 -5
  52. package/dist/components/embeds/index.cjs +4 -4
  53. package/dist/components/embeds/index.js +3 -3
  54. package/dist/components/faq/index.cjs +5 -5
  55. package/dist/components/faq/index.js +4 -4
  56. package/dist/components/features/index.cjs +3 -3
  57. package/dist/components/features/index.js +2 -2
  58. package/dist/components/help-center-pages/index.cjs +22 -22
  59. package/dist/components/help-center-pages/index.js +13 -13
  60. package/dist/components/index.cjs +124 -124
  61. package/dist/components/index.js +11 -11
  62. package/dist/components/navigation/index.cjs +3 -3
  63. package/dist/components/navigation/index.js +2 -2
  64. package/dist/components/onboarding-guides/index.cjs +7 -7
  65. package/dist/components/onboarding-guides/index.js +6 -6
  66. package/dist/components/related-content/index.cjs +5 -5
  67. package/dist/components/related-content/index.js +4 -4
  68. package/dist/components/tickets/index.cjs +6 -6
  69. package/dist/components/tickets/index.js +5 -5
  70. package/dist/components/ui/index.cjs +3 -3
  71. package/dist/components/ui/index.js +2 -2
  72. package/dist/hooks/index.cjs +2 -2
  73. package/dist/hooks/index.js +1 -1
  74. package/dist/index.cjs +3 -3
  75. package/dist/index.js +2 -2
  76. package/dist/types/index.cjs +1 -1
  77. package/dist/types/index.cjs.map +1 -1
  78. package/dist/types/index.js +1 -1
  79. package/dist/types/index.js.map +1 -1
  80. package/dist/utils/index.cjs +1 -1
  81. package/dist/utils/index.cjs.map +1 -1
  82. package/dist/utils/index.js +1 -1
  83. package/dist/utils/index.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/types/tool.types.ts +1 -1
  86. package/dist/chunk-GPX5I7FT.cjs.map +0 -1
  87. package/dist/chunk-JGAAUUD7.js.map +0 -1
  88. /package/dist/{chunk-GO2AEBG7.js.map → chunk-2YYYGBLE.js.map} +0 -0
  89. /package/dist/{chunk-266IXS6E.js.map → chunk-5NV6U7SX.js.map} +0 -0
  90. /package/dist/{chunk-GSW23VUI.js.map → chunk-64EZVZZQ.js.map} +0 -0
  91. /package/dist/{chunk-U5MQW3PH.js.map → chunk-7RQM23VH.js.map} +0 -0
  92. /package/dist/{chunk-P4YC4V7T.js.map → chunk-FFFOXYA7.js.map} +0 -0
  93. /package/dist/{chunk-GMMVBLAD.js.map → chunk-H6ZKXS32.js.map} +0 -0
  94. /package/dist/{chunk-KTTCJ7NX.js.map → chunk-HTR5P2PT.js.map} +0 -0
  95. /package/dist/{chunk-XIZR45OD.js.map → chunk-KV7UDCIW.js.map} +0 -0
  96. /package/dist/{chunk-URBSUHOU.js.map → chunk-MSMWCG6V.js.map} +0 -0
  97. /package/dist/{chunk-RE3KBUNB.js.map → chunk-QSVG54VM.js.map} +0 -0
  98. /package/dist/{chunk-SGZM3LF6.js.map → chunk-SBMDCLK4.js.map} +0 -0
  99. /package/dist/{chunk-IDQJJEYE.js.map → chunk-VTFPRVGI.js.map} +0 -0
  100. /package/dist/{chunk-RYJTVPOQ.js.map → chunk-ZDTARDIT.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkGPX5I7FTcjs = require('./chunk-GPX5I7FT.cjs');
4
+ var _chunkB7NOIJR3cjs = require('./chunk-B7NOIJR3.cjs');
5
5
 
6
6
  // src/hooks/use-self-fetch.ts
7
7
  var _react = require('react');
@@ -27,7 +27,7 @@ function useSelfFetch(url, options) {
27
27
  try {
28
28
  setIsLoading(true);
29
29
  setError(false);
30
- const res = await _chunkGPX5I7FTcjs.contentFetch.call(void 0, url, { signal: ctrl.signal });
30
+ const res = await _chunkB7NOIJR3cjs.contentFetch.call(void 0, url, { signal: ctrl.signal });
31
31
  if (!res.ok) throw new Error(`Request failed (${res.status})`);
32
32
  const json = await res.json();
33
33
  if (!cancelled) {
@@ -65,4 +65,4 @@ function useSelfFetch(url, options) {
65
65
 
66
66
 
67
67
  exports.useSelfFetch = useSelfFetch;
68
- //# sourceMappingURL=chunk-RYROZ7HM.cjs.map
68
+ //# sourceMappingURL=chunk-QCG3MBP6.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RYROZ7HM.cjs","../src/hooks/use-self-fetch.ts"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-RYROZ7HM.cjs","sourcesContent":[null,"'use client'\n\nimport { useEffect, useRef, useState, type Dispatch, type SetStateAction } from 'react'\nimport { contentFetch } from '../utils/embed-content-fetch'\n\nexport interface UseSelfFetchResult<T> {\n data: T | null\n /** Imperatively patch the fetched data (e.g. optimistic vote updates). */\n setData: Dispatch<SetStateAction<T | null>>\n isLoading: boolean\n error: boolean\n /** Re-run the fetch (error-retry affordance). */\n reload: () => void\n}\n\n/**\n * The single source for the 4 self-fetching content views\n * (`ProductReleasesView`, `RoadmapView`, the onboarding catalog/detail). GETs a\n * configured `url` into component state with **plain `fetch` + `useEffect`** —\n * deliberately NO react-query, so embedders don't need a QueryClient. This is\n * the same technology choice the shipped `DeliveryLists` makes; that component\n * predates this hook and still hand-rolls the loop (a future pass can migrate\n * it onto a two-url variant of this hook).\n *\n * Behaviour:\n * - `url = null` → fetching is DISABLED (controlled / SSR mode, or missing\n * config); returns `initialData ?? null` and never fetches.\n * - `initialData` provided → hydrates immediately and SKIPS the first fetch\n * (so the hub's server-rendered data isn't re-fetched on mount); later\n * `url` changes still re-fetch.\n * - a `cancelled` guard ensures an in-flight response from a STALE `url`\n * (e.g. a fast pagination / section toggle) can't overwrite a newer one.\n * - `reload()` bumps an internal key to retry after an error.\n *\n * Re-fetches whenever `url` changes, so callers fold all query params INTO the\n * url string (the url IS the cache key).\n */\nexport function useSelfFetch<T>(\n url: string | null,\n options?: { initialData?: T },\n): UseSelfFetchResult<T> {\n const initialData = options?.initialData\n const [data, setData] = useState<T | null>(initialData ?? null)\n const [isLoading, setIsLoading] = useState(initialData === undefined && url !== null)\n const [error, setError] = useState(false)\n const [reloadKey, setReloadKey] = useState(0)\n // The url whose data we currently hold — seeded from SSR `initialData`, then set after\n // each completed fetch. The effect skips the fetch when this equals `url` (so server-\n // rendered data isn't re-fetched on mount). A VALUE compare (not a one-shot flag) so the\n // SSR-hydration skip survives React 18 StrictMode's mount→unmount→remount in dev;\n // `reload()` nulls it to force a re-fetch of the same url.\n const dataUrlRef = useRef<string | null>(initialData !== undefined ? url : null)\n\n // Re-sync when a CONTROLLED `initialData` changes (e.g. the host navigates\n // between detail slugs without remounting). No-op in self-fetch mode, where\n // `initialData` is `undefined`.\n useEffect(() => {\n if (initialData !== undefined) setData(initialData)\n }, [initialData])\n\n useEffect(() => {\n if (url === null) {\n setIsLoading(false)\n return\n }\n // Already hold data for this exact url (SSR-hydrated, or a prior completed fetch) →\n // skip. `reload()` clears `dataUrlRef` so a retry of the same url still fetches.\n if (dataUrlRef.current === url) return\n const ctrl = new AbortController()\n let cancelled = false\n async function load() {\n try {\n setIsLoading(true)\n setError(false)\n const res = await contentFetch(url as string, { signal: ctrl.signal })\n if (!res.ok) throw new Error(`Request failed (${res.status})`)\n const json = (await res.json()) as T\n if (!cancelled) {\n setData(json)\n dataUrlRef.current = url // remember the url we now hold data for\n }\n } catch (err) {\n // AbortError on cleanup (unmount / stale-url change / React StrictMode's dev\n // double-invoke) is EXPECTED — the request was intentionally aborted. Aborting\n // also means the orphaned StrictMode fetch shows as \"cancelled\" instead of\n // completing as a wasted duplicate (parity with useChatIdentity). Only real\n // failures fall through to the error state + console.\n if (cancelled || (err as Error)?.name === 'AbortError') return\n setError(true)\n console.error('useSelfFetch:', url, err)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n }\n load()\n return () => {\n cancelled = true\n ctrl.abort()\n }\n // `url` folds in every query param; `reloadKey` drives retry.\n }, [url, reloadKey])\n\n return {\n data,\n setData,\n isLoading,\n error,\n // Force a re-fetch of the current url: clear the held-url ref so the skip above\n // doesn't short-circuit, then bump the effect key.\n reload: () => {\n dataUrlRef.current = null\n setReloadKey((k) => k + 1)\n },\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-QCG3MBP6.cjs","../src/hooks/use-self-fetch.ts"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-QCG3MBP6.cjs","sourcesContent":[null,"'use client'\n\nimport { useEffect, useRef, useState, type Dispatch, type SetStateAction } from 'react'\nimport { contentFetch } from '../utils/embed-content-fetch'\n\nexport interface UseSelfFetchResult<T> {\n data: T | null\n /** Imperatively patch the fetched data (e.g. optimistic vote updates). */\n setData: Dispatch<SetStateAction<T | null>>\n isLoading: boolean\n error: boolean\n /** Re-run the fetch (error-retry affordance). */\n reload: () => void\n}\n\n/**\n * The single source for the 4 self-fetching content views\n * (`ProductReleasesView`, `RoadmapView`, the onboarding catalog/detail). GETs a\n * configured `url` into component state with **plain `fetch` + `useEffect`** —\n * deliberately NO react-query, so embedders don't need a QueryClient. This is\n * the same technology choice the shipped `DeliveryLists` makes; that component\n * predates this hook and still hand-rolls the loop (a future pass can migrate\n * it onto a two-url variant of this hook).\n *\n * Behaviour:\n * - `url = null` → fetching is DISABLED (controlled / SSR mode, or missing\n * config); returns `initialData ?? null` and never fetches.\n * - `initialData` provided → hydrates immediately and SKIPS the first fetch\n * (so the hub's server-rendered data isn't re-fetched on mount); later\n * `url` changes still re-fetch.\n * - a `cancelled` guard ensures an in-flight response from a STALE `url`\n * (e.g. a fast pagination / section toggle) can't overwrite a newer one.\n * - `reload()` bumps an internal key to retry after an error.\n *\n * Re-fetches whenever `url` changes, so callers fold all query params INTO the\n * url string (the url IS the cache key).\n */\nexport function useSelfFetch<T>(\n url: string | null,\n options?: { initialData?: T },\n): UseSelfFetchResult<T> {\n const initialData = options?.initialData\n const [data, setData] = useState<T | null>(initialData ?? null)\n const [isLoading, setIsLoading] = useState(initialData === undefined && url !== null)\n const [error, setError] = useState(false)\n const [reloadKey, setReloadKey] = useState(0)\n // The url whose data we currently hold — seeded from SSR `initialData`, then set after\n // each completed fetch. The effect skips the fetch when this equals `url` (so server-\n // rendered data isn't re-fetched on mount). A VALUE compare (not a one-shot flag) so the\n // SSR-hydration skip survives React 18 StrictMode's mount→unmount→remount in dev;\n // `reload()` nulls it to force a re-fetch of the same url.\n const dataUrlRef = useRef<string | null>(initialData !== undefined ? url : null)\n\n // Re-sync when a CONTROLLED `initialData` changes (e.g. the host navigates\n // between detail slugs without remounting). No-op in self-fetch mode, where\n // `initialData` is `undefined`.\n useEffect(() => {\n if (initialData !== undefined) setData(initialData)\n }, [initialData])\n\n useEffect(() => {\n if (url === null) {\n setIsLoading(false)\n return\n }\n // Already hold data for this exact url (SSR-hydrated, or a prior completed fetch) →\n // skip. `reload()` clears `dataUrlRef` so a retry of the same url still fetches.\n if (dataUrlRef.current === url) return\n const ctrl = new AbortController()\n let cancelled = false\n async function load() {\n try {\n setIsLoading(true)\n setError(false)\n const res = await contentFetch(url as string, { signal: ctrl.signal })\n if (!res.ok) throw new Error(`Request failed (${res.status})`)\n const json = (await res.json()) as T\n if (!cancelled) {\n setData(json)\n dataUrlRef.current = url // remember the url we now hold data for\n }\n } catch (err) {\n // AbortError on cleanup (unmount / stale-url change / React StrictMode's dev\n // double-invoke) is EXPECTED — the request was intentionally aborted. Aborting\n // also means the orphaned StrictMode fetch shows as \"cancelled\" instead of\n // completing as a wasted duplicate (parity with useChatIdentity). Only real\n // failures fall through to the error state + console.\n if (cancelled || (err as Error)?.name === 'AbortError') return\n setError(true)\n console.error('useSelfFetch:', url, err)\n } finally {\n if (!cancelled) setIsLoading(false)\n }\n }\n load()\n return () => {\n cancelled = true\n ctrl.abort()\n }\n // `url` folds in every query param; `reloadKey` drives retry.\n }, [url, reloadKey])\n\n return {\n data,\n setData,\n isLoading,\n error,\n // Force a re-fetch of the current url: clear the held-url ref so the skip above\n // doesn't short-circuit, then bump the effect key.\n reload: () => {\n dataUrlRef.current = null\n setReloadKey((k) => k + 1)\n },\n }\n}\n"]}
@@ -25,7 +25,7 @@ import {
25
25
  useOgPlaceholderUrl,
26
26
  useOnboardingState,
27
27
  useToast
28
- } from "./chunk-JGAAUUD7.js";
28
+ } from "./chunk-UJ4ENR2O.js";
29
29
  import {
30
30
  AlertCircleIcon,
31
31
  AnthropicLogoGreyIcon,
@@ -50525,4 +50525,4 @@ export {
50525
50525
  LogsList,
50526
50526
  assets
50527
50527
  };
50528
- //# sourceMappingURL=chunk-RE3KBUNB.js.map
50528
+ //# sourceMappingURL=chunk-QSVG54VM.js.map
@@ -4,13 +4,13 @@ import {
4
4
  EmptyState,
5
5
  init_unified_pagination,
6
6
  unified_pagination_exports
7
- } from "./chunk-RYJTVPOQ.js";
7
+ } from "./chunk-ZDTARDIT.js";
8
8
  import {
9
9
  DetailPageSkeleton
10
- } from "./chunk-266IXS6E.js";
10
+ } from "./chunk-5NV6U7SX.js";
11
11
  import {
12
12
  useSelfFetch
13
- } from "./chunk-U5MQW3PH.js";
13
+ } from "./chunk-7RQM23VH.js";
14
14
  import {
15
15
  Accordion,
16
16
  AccordionContent,
@@ -39,12 +39,12 @@ import {
39
39
  isModifierClick,
40
40
  resolveContentHref,
41
41
  useEntityCardLink
42
- } from "./chunk-RE3KBUNB.js";
42
+ } from "./chunk-QSVG54VM.js";
43
43
  import {
44
44
  STICKY_HEADER_OFFSET_PX,
45
45
  contentFetch,
46
46
  useScrollToHash
47
- } from "./chunk-JGAAUUD7.js";
47
+ } from "./chunk-UJ4ENR2O.js";
48
48
  import {
49
49
  useChatRuntime
50
50
  } from "./chunk-NA7XJRWB.js";
@@ -1461,4 +1461,4 @@ export {
1461
1461
  useLegalDocs,
1462
1462
  LegalDocumentPage
1463
1463
  };
1464
- //# sourceMappingURL=chunk-SGZM3LF6.js.map
1464
+ //# sourceMappingURL=chunk-SBMDCLK4.js.map
@@ -1157,7 +1157,7 @@ var toolLabels = {
1157
1157
  OPENFRAME: "OpenFrame",
1158
1158
  OPENFRAME_CHAT: "OpenFrame Chat",
1159
1159
  OPENFRAME_CLIENT: "OpenFrame Client",
1160
- OPENFRAME_RMM: "OpenFrame RMM",
1160
+ OPENFRAME_RMM: "RMM",
1161
1161
  OSQUERY: "Osquery",
1162
1162
  SYSTEM: "System"
1163
1163
  };
@@ -3685,4 +3685,4 @@ export {
3685
3685
  splitCsvEnv,
3686
3686
  useHumanitySignals
3687
3687
  };
3688
- //# sourceMappingURL=chunk-JGAAUUD7.js.map
3688
+ //# sourceMappingURL=chunk-UJ4ENR2O.js.map