@flamingo-stack/openframe-frontend-core 0.0.355 → 0.0.357-snapshot.20260702003231
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/{chunk-PLSEMEEM.cjs → chunk-2J56P3HL.cjs} +40 -40
- package/dist/{chunk-PLSEMEEM.cjs.map → chunk-2J56P3HL.cjs.map} +1 -1
- package/dist/{chunk-426BLQES.cjs → chunk-2LLPPZB2.cjs} +19 -19
- package/dist/{chunk-426BLQES.cjs.map → chunk-2LLPPZB2.cjs.map} +1 -1
- package/dist/{chunk-RYJTVPOQ.js → chunk-2NV6UIY3.js} +2 -2
- package/dist/{chunk-U5MQW3PH.js → chunk-7RQM23VH.js} +2 -2
- package/dist/{chunk-SFETWAWG.cjs → chunk-AVCR5TCA.cjs} +5 -5
- package/dist/{chunk-SFETWAWG.cjs.map → chunk-AVCR5TCA.cjs.map} +1 -1
- package/dist/{chunk-GPX5I7FT.cjs → chunk-B7NOIJR3.cjs} +2 -2
- package/dist/chunk-B7NOIJR3.cjs.map +1 -0
- package/dist/{chunk-XIZR45OD.js → chunk-BJ6J6WLA.js} +5 -5
- package/dist/{chunk-MYLWEYWT.cjs → chunk-C6XEJALZ.cjs} +252 -214
- package/dist/chunk-C6XEJALZ.cjs.map +1 -0
- package/dist/{chunk-URBSUHOU.js → chunk-CX4NZ56E.js} +3 -3
- package/dist/{chunk-KTTCJ7NX.js → chunk-DDCTJIWD.js} +2 -2
- package/dist/{chunk-P4YC4V7T.js → chunk-DZHIM646.js} +6 -6
- package/dist/{chunk-KAWIGFO2.cjs → chunk-EASJYKEA.cjs} +29 -29
- package/dist/{chunk-KAWIGFO2.cjs.map → chunk-EASJYKEA.cjs.map} +1 -1
- package/dist/{chunk-7CEEJGCF.cjs → chunk-EOXJ73JE.cjs} +15 -15
- package/dist/{chunk-7CEEJGCF.cjs.map → chunk-EOXJ73JE.cjs.map} +1 -1
- package/dist/{chunk-2IJSLRZZ.cjs → chunk-F5NAL32B.cjs} +7 -7
- package/dist/{chunk-2IJSLRZZ.cjs.map → chunk-F5NAL32B.cjs.map} +1 -1
- package/dist/{chunk-SGZM3LF6.js → chunk-FPWI7T6Z.js} +6 -6
- package/dist/{chunk-GO2AEBG7.js → chunk-IBYCZG6S.js} +3 -3
- package/dist/{chunk-IDQJJEYE.js → chunk-IFL7IRAW.js} +5 -5
- package/dist/{chunk-266IXS6E.js → chunk-IL33PEQB.js} +2 -2
- package/dist/{chunk-V5QI32ZA.cjs → chunk-LQONASYT.cjs} +70 -70
- package/dist/{chunk-V5QI32ZA.cjs.map → chunk-LQONASYT.cjs.map} +1 -1
- package/dist/{chunk-GSW23VUI.js → chunk-O6ZTFST3.js} +4 -4
- package/dist/{chunk-RYROZ7HM.cjs → chunk-QCG3MBP6.cjs} +3 -3
- package/dist/{chunk-RYROZ7HM.cjs.map → chunk-QCG3MBP6.cjs.map} +1 -1
- package/dist/{chunk-O7T2VECL.cjs → chunk-SAIKHQTP.cjs} +39 -39
- package/dist/{chunk-O7T2VECL.cjs.map → chunk-SAIKHQTP.cjs.map} +1 -1
- package/dist/{chunk-RE3KBUNB.js → chunk-TRAJG5JZ.js} +201 -163
- package/dist/chunk-TRAJG5JZ.js.map +1 -0
- package/dist/{chunk-5FYSQ3GW.cjs → chunk-TRON4VRV.cjs} +73 -73
- package/dist/{chunk-5FYSQ3GW.cjs.map → chunk-TRON4VRV.cjs.map} +1 -1
- package/dist/{chunk-JGAAUUD7.js → chunk-UJ4ENR2O.js} +2 -2
- package/dist/chunk-UJ4ENR2O.js.map +1 -0
- package/dist/{chunk-QD6ANQN5.cjs → chunk-WLU4IOM6.cjs} +31 -31
- package/dist/{chunk-QD6ANQN5.cjs.map → chunk-WLU4IOM6.cjs.map} +1 -1
- package/dist/{chunk-KNIXUH6G.cjs → chunk-XX42KS3W.cjs} +12 -12
- package/dist/{chunk-KNIXUH6G.cjs.map → chunk-XX42KS3W.cjs.map} +1 -1
- package/dist/{chunk-GMMVBLAD.js → chunk-XZGZH5GG.js} +3 -3
- package/dist/components/case-studies/index.cjs +9 -9
- package/dist/components/case-studies/index.js +3 -3
- package/dist/components/chat/index.cjs +3 -3
- package/dist/components/chat/index.js +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/contact/index.js +3 -3
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/embeds/index.js +3 -3
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/faq/index.js +4 -4
- package/dist/components/features/index.cjs +3 -3
- package/dist/components/features/index.js +2 -2
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +124 -124
- package/dist/components/index.js +11 -11
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/onboarding-guides/index.cjs +7 -7
- package/dist/components/onboarding-guides/index.js +6 -6
- package/dist/components/related-content/index.cjs +5 -5
- package/dist/components/related-content/index.js +4 -4
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/floating-tooltip.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.js +2 -2
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ui/floating-tooltip.tsx +19 -5
- package/src/components/ui/tab-navigation.tsx +45 -2
- package/src/components/ui/tooltip.tsx +3 -1
- package/src/types/tool.types.ts +1 -1
- package/dist/chunk-GPX5I7FT.cjs.map +0 -1
- package/dist/chunk-JGAAUUD7.js.map +0 -1
- package/dist/chunk-MYLWEYWT.cjs.map +0 -1
- package/dist/chunk-RE3KBUNB.js.map +0 -1
- /package/dist/{chunk-RYJTVPOQ.js.map → chunk-2NV6UIY3.js.map} +0 -0
- /package/dist/{chunk-U5MQW3PH.js.map → chunk-7RQM23VH.js.map} +0 -0
- /package/dist/{chunk-XIZR45OD.js.map → chunk-BJ6J6WLA.js.map} +0 -0
- /package/dist/{chunk-URBSUHOU.js.map → chunk-CX4NZ56E.js.map} +0 -0
- /package/dist/{chunk-KTTCJ7NX.js.map → chunk-DDCTJIWD.js.map} +0 -0
- /package/dist/{chunk-P4YC4V7T.js.map → chunk-DZHIM646.js.map} +0 -0
- /package/dist/{chunk-SGZM3LF6.js.map → chunk-FPWI7T6Z.js.map} +0 -0
- /package/dist/{chunk-GO2AEBG7.js.map → chunk-IBYCZG6S.js.map} +0 -0
- /package/dist/{chunk-IDQJJEYE.js.map → chunk-IFL7IRAW.js.map} +0 -0
- /package/dist/{chunk-266IXS6E.js.map → chunk-IL33PEQB.js.map} +0 -0
- /package/dist/{chunk-GSW23VUI.js.map → chunk-O6ZTFST3.js.map} +0 -0
- /package/dist/{chunk-GMMVBLAD.js.map → chunk-XZGZH5GG.js.map} +0 -0
package/package.json
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
offset,
|
|
8
8
|
flip,
|
|
9
9
|
shift,
|
|
10
|
+
size,
|
|
10
11
|
useDismiss,
|
|
11
12
|
useRole,
|
|
12
13
|
useInteractions,
|
|
@@ -100,6 +101,16 @@ export function FloatingTooltip({
|
|
|
100
101
|
padding: 8,
|
|
101
102
|
}),
|
|
102
103
|
shift({ padding: 8 }),
|
|
104
|
+
// Cap the tooltip to the space left in the viewport so tall content
|
|
105
|
+
// scrolls inside it instead of overflowing off-screen. Applied straight to
|
|
106
|
+
// the floating node's style (no React state → no autoUpdate re-render loop);
|
|
107
|
+
// the inner scroll wrapper below turns the cap into an actual scroll area.
|
|
108
|
+
size({
|
|
109
|
+
padding: 8,
|
|
110
|
+
apply({ availableHeight, elements }) {
|
|
111
|
+
elements.floating.style.maxHeight = `${Math.max(64, availableHeight)}px`
|
|
112
|
+
},
|
|
113
|
+
}),
|
|
103
114
|
arrow({ element: arrowRef }),
|
|
104
115
|
],
|
|
105
116
|
whileElementsMounted: autoUpdate,
|
|
@@ -153,17 +164,20 @@ export function FloatingTooltip({
|
|
|
153
164
|
}}
|
|
154
165
|
{...getFloatingProps()}
|
|
155
166
|
className={cn(
|
|
156
|
-
// ODS Design System tooltip styling
|
|
157
|
-
|
|
167
|
+
// ODS Design System tooltip styling. `flex flex-col` + `overflow-hidden`
|
|
168
|
+
// let the inner wrapper own the scroll while the rounded corners clip it.
|
|
169
|
+
"max-w-xs flex flex-col overflow-hidden rounded-md",
|
|
158
170
|
"bg-ods-card border border-ods-border",
|
|
159
|
-
"px-3 py-2.5 text-sm leading-relaxed text-ods-text-primary",
|
|
160
|
-
"whitespace-pre-line",
|
|
161
171
|
// ODS shadows for proper elevation
|
|
162
172
|
"shadow-[var(--shadow-md)]",
|
|
163
173
|
className
|
|
164
174
|
)}
|
|
165
175
|
>
|
|
166
|
-
{
|
|
176
|
+
{/* Scroll wrapper — `min-h-0` lets it shrink below content height inside
|
|
177
|
+
the max-height cap set by the `size` middleware, so tall content scrolls. */}
|
|
178
|
+
<div className="min-h-0 overflow-y-auto px-3 py-2.5 text-sm leading-relaxed text-ods-text-primary whitespace-pre-line">
|
|
179
|
+
{parsedContent}
|
|
180
|
+
</div>
|
|
167
181
|
{/* Arrow element */}
|
|
168
182
|
<div
|
|
169
183
|
ref={arrowRef}
|
|
@@ -115,6 +115,7 @@ export function TabNavigation({
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
const scrollRef = useRef<HTMLDivElement>(null)
|
|
118
|
+
const activeTabRef = useRef<HTMLButtonElement>(null)
|
|
118
119
|
const [canScrollLeft, setCanScrollLeft] = useState(false)
|
|
119
120
|
const [canScrollRight, setCanScrollRight] = useState(false)
|
|
120
121
|
|
|
@@ -131,16 +132,57 @@ export function TabNavigation({
|
|
|
131
132
|
|
|
132
133
|
updateScrollShadows()
|
|
133
134
|
|
|
135
|
+
// Translate a vertical mouse wheel into horizontal scroll. macOS mice emit
|
|
136
|
+
// only deltaY, which the browser won't apply to a horizontal-only overflow
|
|
137
|
+
// container, so the strip is otherwise un-scrollable with a plain mouse.
|
|
138
|
+
// Non-passive so preventDefault() can suppress the page from scrolling.
|
|
139
|
+
const onWheel = (e: WheelEvent) => {
|
|
140
|
+
// A trackpad's horizontal gesture (deltaX) already scrolls natively; a
|
|
141
|
+
// pinch-zoom arrives as wheel+ctrlKey — leave both untouched.
|
|
142
|
+
if (e.deltaX !== 0 || e.ctrlKey) return
|
|
143
|
+
if (el.scrollWidth <= el.clientWidth) return
|
|
144
|
+
// deltaY isn't always pixels: Firefox mice report lines (deltaMode 1),
|
|
145
|
+
// some devices pages (mode 2). Normalize so the scroll isn't a no-op.
|
|
146
|
+
const delta = e.deltaMode === 1 ? e.deltaY * 40 : e.deltaMode === 2 ? e.deltaY * el.clientWidth : e.deltaY
|
|
147
|
+
// Only consume the event while there's room to scroll in that direction;
|
|
148
|
+
// at either edge, let it bubble so the page scrolls (native chaining).
|
|
149
|
+
const canGoRight = el.scrollLeft + el.clientWidth < el.scrollWidth - 1
|
|
150
|
+
const canGoLeft = el.scrollLeft > 0
|
|
151
|
+
if ((delta > 0 && !canGoRight) || (delta < 0 && !canGoLeft)) return
|
|
152
|
+
el.scrollLeft += delta
|
|
153
|
+
e.preventDefault()
|
|
154
|
+
}
|
|
155
|
+
|
|
134
156
|
el.addEventListener('scroll', updateScrollShadows, { passive: true })
|
|
157
|
+
el.addEventListener('wheel', onWheel, { passive: false })
|
|
135
158
|
const ro = new ResizeObserver(updateScrollShadows)
|
|
136
159
|
ro.observe(el)
|
|
137
160
|
|
|
138
161
|
return () => {
|
|
139
162
|
el.removeEventListener('scroll', updateScrollShadows)
|
|
163
|
+
el.removeEventListener('wheel', onWheel)
|
|
140
164
|
ro.disconnect()
|
|
141
165
|
}
|
|
142
166
|
}, [updateScrollShadows])
|
|
143
167
|
|
|
168
|
+
// Bring the active tab into view when it changes (e.g. clicking a partly
|
|
169
|
+
// off-screen tab, or a URL-driven change). Uses the browser's own smooth
|
|
170
|
+
// scroll and moves ONLY the strip — never the page — by nudging just enough
|
|
171
|
+
// to reveal the tab on whichever edge it's clipped. Complements the native
|
|
172
|
+
// trackpad / Shift+wheel / mouse-wheel scrolling rather than fighting it.
|
|
173
|
+
useEffect(() => {
|
|
174
|
+
const el = scrollRef.current
|
|
175
|
+
const active = activeTabRef.current
|
|
176
|
+
if (!el || !active) return
|
|
177
|
+
const elRect = el.getBoundingClientRect()
|
|
178
|
+
const aRect = active.getBoundingClientRect()
|
|
179
|
+
if (aRect.left < elRect.left) {
|
|
180
|
+
el.scrollBy({ left: aRect.left - elRect.left, behavior: 'smooth' })
|
|
181
|
+
} else if (aRect.right > elRect.right) {
|
|
182
|
+
el.scrollBy({ left: aRect.right - elRect.right, behavior: 'smooth' })
|
|
183
|
+
}
|
|
184
|
+
}, [activeTab])
|
|
185
|
+
|
|
144
186
|
const leftFade = canScrollLeft || showLeftGradient
|
|
145
187
|
const rightFade = canScrollRight || showRightGradient
|
|
146
188
|
|
|
@@ -168,6 +210,7 @@ export function TabNavigation({
|
|
|
168
210
|
return (
|
|
169
211
|
<button
|
|
170
212
|
key={tab.id}
|
|
213
|
+
ref={isActive ? activeTabRef : undefined}
|
|
171
214
|
type="button"
|
|
172
215
|
onClick={() => handleTabChange(tab.id)}
|
|
173
216
|
className={cn(
|
|
@@ -210,10 +253,10 @@ export function TabNavigation({
|
|
|
210
253
|
|
|
211
254
|
{/* Fade shadows — visible when content overflows or when forced via props */}
|
|
212
255
|
{leftFade && (
|
|
213
|
-
<div className={cn("absolute left-0 top-0 w-10
|
|
256
|
+
<div className={cn("absolute left-0 top-0 bottom-0 w-10 pointer-events-none bg-gradient-to-r to-transparent", shadowClassName || "from-ods-bg")} />
|
|
214
257
|
)}
|
|
215
258
|
{rightFade && (
|
|
216
|
-
<div className={cn("absolute right-0 top-0 w-10
|
|
259
|
+
<div className={cn("absolute right-0 top-0 bottom-0 w-10 pointer-events-none bg-gradient-to-l to-transparent", shadowClassName || "from-ods-bg")} />
|
|
217
260
|
)}
|
|
218
261
|
|
|
219
262
|
{/* Bottom border — a gradient-capable 1px line that fades to transparent on any edge that has an active fade shadow. */}
|
|
@@ -24,7 +24,9 @@ const TooltipContent = React.forwardRef<
|
|
|
24
24
|
ref={ref}
|
|
25
25
|
sideOffset={sideOffset}
|
|
26
26
|
className={cn(
|
|
27
|
-
|
|
27
|
+
// `max-h` uses Radix's available-height var so tall content scrolls inside
|
|
28
|
+
// the tooltip instead of overflowing off-screen (only engages on overflow).
|
|
29
|
+
"z-[1400] max-h-[var(--radix-popper-available-height)] overflow-y-auto rounded-md bg-ods-card border border-ods-border px-3 py-2 text-sm text-ods-text-primary shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
28
30
|
className
|
|
29
31
|
)}
|
|
30
32
|
{...props}
|
package/src/types/tool.types.ts
CHANGED
|
@@ -31,7 +31,7 @@ export const toolLabels: Record<ToolType, string> = {
|
|
|
31
31
|
OPENFRAME: 'OpenFrame',
|
|
32
32
|
OPENFRAME_CHAT: 'OpenFrame Chat',
|
|
33
33
|
OPENFRAME_CLIENT: 'OpenFrame Client',
|
|
34
|
-
OPENFRAME_RMM: '
|
|
34
|
+
OPENFRAME_RMM: 'RMM',
|
|
35
35
|
OSQUERY: 'Osquery',
|
|
36
36
|
SYSTEM: 'System'
|
|
37
37
|
}
|