@flamingo-stack/openframe-frontend-core 0.0.416-snapshot.20260712013500 → 0.0.416
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-42KMUJFK.cjs → chunk-234A5WF2.cjs} +26 -26
- package/dist/{chunk-42KMUJFK.cjs.map → chunk-234A5WF2.cjs.map} +1 -1
- package/dist/{chunk-S52UK6KQ.cjs → chunk-3F4LKYIK.cjs} +7 -7
- package/dist/{chunk-S52UK6KQ.cjs.map → chunk-3F4LKYIK.cjs.map} +1 -1
- package/dist/{chunk-T6VFIDS4.cjs → chunk-3OSTXIB6.cjs} +59 -59
- package/dist/{chunk-T6VFIDS4.cjs.map → chunk-3OSTXIB6.cjs.map} +1 -1
- package/dist/{chunk-MHUT2NR4.js → chunk-3RW27WRK.js} +2 -2
- package/dist/{chunk-SIF5WN7S.js → chunk-43AKGHDL.js} +4 -4
- package/dist/{chunk-P7FJIB7V.js → chunk-4AFA5N5Q.js} +2 -2
- package/dist/{chunk-YX2YP4YM.js → chunk-BGSIZWAK.js} +2 -2
- package/dist/{chunk-F3U6OH3K.cjs → chunk-BIFZRCGN.cjs} +31 -31
- package/dist/{chunk-F3U6OH3K.cjs.map → chunk-BIFZRCGN.cjs.map} +1 -1
- package/dist/{chunk-Y37BRIBI.js → chunk-CQ6MF7KT.js} +4 -4
- package/dist/{chunk-2IJX5XDG.cjs → chunk-CQG77HCB.cjs} +11 -11
- package/dist/{chunk-2IJX5XDG.cjs.map → chunk-CQG77HCB.cjs.map} +1 -1
- package/dist/{chunk-MOOMQTZ5.cjs → chunk-CRPIHDEI.cjs} +9 -9
- package/dist/{chunk-MOOMQTZ5.cjs.map → chunk-CRPIHDEI.cjs.map} +1 -1
- package/dist/{chunk-3R7XBEUB.cjs → chunk-D4NSPERU.cjs} +26 -26
- package/dist/{chunk-3R7XBEUB.cjs.map → chunk-D4NSPERU.cjs.map} +1 -1
- package/dist/{chunk-KGYUVJJ5.cjs → chunk-DQMH6NAF.cjs} +15 -15
- package/dist/{chunk-KGYUVJJ5.cjs.map → chunk-DQMH6NAF.cjs.map} +1 -1
- package/dist/{chunk-UL5RGRWZ.js → chunk-FHAMKB5L.js} +2 -2
- package/dist/{chunk-Y4ZQTUBT.js → chunk-GEUZA4VP.js} +2 -2
- package/dist/{chunk-WTJ4AOVR.js → chunk-GIHNDMGI.js} +2 -2
- package/dist/{chunk-GGTNMXGZ.cjs → chunk-IVWQIWZI.cjs} +5 -5
- package/dist/{chunk-GGTNMXGZ.cjs.map → chunk-IVWQIWZI.cjs.map} +1 -1
- package/dist/{chunk-BIRJP6QA.js → chunk-N6T7CDEN.js} +1396 -1470
- package/dist/chunk-N6T7CDEN.js.map +1 -0
- package/dist/{chunk-F4HV6IBG.cjs → chunk-QMGXJEZ3.cjs} +62 -62
- package/dist/{chunk-F4HV6IBG.cjs.map → chunk-QMGXJEZ3.cjs.map} +1 -1
- package/dist/{chunk-IEAQBLZI.js → chunk-QO2JZYIB.js} +4 -4
- package/dist/{chunk-H3HZMHN3.cjs → chunk-RQLQOH46.cjs} +37 -37
- package/dist/{chunk-H3HZMHN3.cjs.map → chunk-RQLQOH46.cjs.map} +1 -1
- package/dist/{chunk-53LGRFM2.cjs → chunk-S3PO5NOK.cjs} +369 -443
- package/dist/chunk-S3PO5NOK.cjs.map +1 -0
- package/dist/{chunk-6OZPER3T.js → chunk-SFZ2BJST.js} +2 -2
- package/dist/{chunk-E3AB36EG.js → chunk-VBJC75FT.js} +4 -4
- package/dist/components/announcement-bar.d.ts.map +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/chat-panel-header-mobile.d.ts +8 -8
- package/dist/components/chat/chat-panel-header-mobile.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +129 -131
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +10 -12
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/header.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +2 -4
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.d.ts +0 -2
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +1 -3
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -3
- package/dist/types/navigation.d.ts +0 -12
- package/dist/types/navigation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/announcement-bar.tsx +1 -5
- package/src/components/chat/chat-panel-header-mobile.tsx +8 -21
- package/src/components/chat/embeddable-chat.tsx +0 -13
- package/src/components/navigation/header.tsx +10 -25
- package/src/components/navigation/index.ts +0 -3
- package/src/stories/Header.stories.tsx +0 -28
- package/src/styles/chat-animations.css +0 -54
- package/src/types/navigation.ts +0 -12
- package/dist/chunk-53LGRFM2.cjs.map +0 -1
- package/dist/chunk-BIRJP6QA.js.map +0 -1
- package/dist/components/navigation/mingo-ai-button.d.ts +0 -16
- package/dist/components/navigation/mingo-ai-button.d.ts.map +0 -1
- package/src/components/navigation/mingo-ai-button.tsx +0 -98
- package/src/stories/MingoAiButton.stories.tsx +0 -46
- /package/dist/{chunk-MHUT2NR4.js.map → chunk-3RW27WRK.js.map} +0 -0
- /package/dist/{chunk-SIF5WN7S.js.map → chunk-43AKGHDL.js.map} +0 -0
- /package/dist/{chunk-P7FJIB7V.js.map → chunk-4AFA5N5Q.js.map} +0 -0
- /package/dist/{chunk-YX2YP4YM.js.map → chunk-BGSIZWAK.js.map} +0 -0
- /package/dist/{chunk-Y37BRIBI.js.map → chunk-CQ6MF7KT.js.map} +0 -0
- /package/dist/{chunk-UL5RGRWZ.js.map → chunk-FHAMKB5L.js.map} +0 -0
- /package/dist/{chunk-Y4ZQTUBT.js.map → chunk-GEUZA4VP.js.map} +0 -0
- /package/dist/{chunk-WTJ4AOVR.js.map → chunk-GIHNDMGI.js.map} +0 -0
- /package/dist/{chunk-IEAQBLZI.js.map → chunk-QO2JZYIB.js.map} +0 -0
- /package/dist/{chunk-6OZPER3T.js.map → chunk-SFZ2BJST.js.map} +0 -0
- /package/dist/{chunk-E3AB36EG.js.map → chunk-VBJC75FT.js.map} +0 -0
|
@@ -7,7 +7,6 @@ import { cn } from '../../utils'
|
|
|
7
7
|
import { Button } from '../ui/button'
|
|
8
8
|
import { Menu01Icon } from '../icons-v2-generated'
|
|
9
9
|
import { MOBILE_NAV_PANEL_ID } from './mobile-nav-panel'
|
|
10
|
-
import { MingoAiButton } from './mingo-ai-button'
|
|
11
10
|
|
|
12
11
|
export interface HeaderProps {
|
|
13
12
|
config: HeaderConfig
|
|
@@ -274,12 +273,9 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
274
273
|
>
|
|
275
274
|
<header
|
|
276
275
|
className={cn(
|
|
277
|
-
|
|
278
|
-
// cluster self-stretches so the Mingo launcher can sit flush.
|
|
279
|
-
"w-full h-[72px] flex items-center justify-between",
|
|
276
|
+
"w-full flex items-center justify-between",
|
|
280
277
|
"border-b border-ods-border backdrop-blur-sm",
|
|
281
|
-
"
|
|
282
|
-
!config.mingo?.enabled && "pr-6",
|
|
278
|
+
"px-6 py-3",
|
|
283
279
|
// Background color (configurable via backgroundColor prop)
|
|
284
280
|
config.backgroundColor || "bg-ods-card",
|
|
285
281
|
config.className
|
|
@@ -301,13 +297,13 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
301
297
|
|
|
302
298
|
{/* Center: Navigation */}
|
|
303
299
|
{config.navigation && config.navigation.items.length > 0 && (
|
|
304
|
-
<nav
|
|
300
|
+
<nav
|
|
305
301
|
className={cn(
|
|
306
|
-
"hidden
|
|
302
|
+
"hidden md:flex items-center gap-2",
|
|
307
303
|
config.navigation.position === 'center' && "absolute left-1/2 transform -translate-x-1/2",
|
|
308
304
|
config.navigation.position === 'right' && "ml-auto mr-4"
|
|
309
305
|
)}
|
|
310
|
-
role="navigation"
|
|
306
|
+
role="navigation"
|
|
311
307
|
aria-label="Main navigation"
|
|
312
308
|
>
|
|
313
309
|
{config.navigation.items.map(renderNavigationItem)}
|
|
@@ -315,27 +311,20 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
315
311
|
)}
|
|
316
312
|
|
|
317
313
|
{/* Right: Actions */}
|
|
318
|
-
<div className="flex items-center justify-end gap-
|
|
319
|
-
{/* Desktop Actions
|
|
320
|
-
desktop right-cluster and the mobile toggle never co-show. */}
|
|
314
|
+
<div className="flex items-center justify-end gap-4 flex-shrink-0">
|
|
315
|
+
{/* Desktop Actions */}
|
|
321
316
|
{config.actions?.right && (
|
|
322
|
-
<div className="hidden
|
|
317
|
+
<div className="hidden md:flex items-center gap-4">
|
|
323
318
|
{config.actions.right}
|
|
324
319
|
</div>
|
|
325
320
|
)}
|
|
326
321
|
|
|
327
|
-
{config.actions?.persistent && config.actions.persistent.length > 0 && (
|
|
328
|
-
<div className="flex items-center">
|
|
329
|
-
{config.actions.persistent}
|
|
330
|
-
</div>
|
|
331
|
-
)}
|
|
332
|
-
|
|
333
322
|
{/* Mobile Menu Toggle */}
|
|
334
323
|
{config.mobile && config.mobile.enabled && (
|
|
335
324
|
<Button
|
|
336
|
-
variant="
|
|
325
|
+
variant="transparent"
|
|
337
326
|
size="icon"
|
|
338
|
-
className="flex
|
|
327
|
+
className="flex md:hidden"
|
|
339
328
|
onClick={() => {
|
|
340
329
|
config.mobile?.onToggle?.()
|
|
341
330
|
}}
|
|
@@ -347,10 +336,6 @@ export function Header({ config, platform }: HeaderProps) {
|
|
|
347
336
|
leftIcon={config.mobile?.menuIcon || <Menu01Icon />}
|
|
348
337
|
/>
|
|
349
338
|
)}
|
|
350
|
-
|
|
351
|
-
{config.mingo?.enabled && (
|
|
352
|
-
<MingoAiButton source={config.mingo.source} icon={config.mingo.icon} label={config.mingo.label} className={config.mingo.className} />
|
|
353
|
-
)}
|
|
354
339
|
</div>
|
|
355
340
|
</header>
|
|
356
341
|
</div>
|
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
export { Header } from './header'
|
|
5
5
|
export type { HeaderConfig, HeaderProps } from './header'
|
|
6
6
|
|
|
7
|
-
export { MingoAiButton } from './mingo-ai-button'
|
|
8
|
-
export type { MingoAiButtonProps } from './mingo-ai-button'
|
|
9
|
-
|
|
10
7
|
export { ClientOnlyHeader } from './client-only-header'
|
|
11
8
|
export type { ClientOnlyHeaderProps } from './client-only-header'
|
|
12
9
|
|
|
@@ -197,31 +197,3 @@ export const FixedHeader: Story = {
|
|
|
197
197
|
} satisfies HeaderConfig,
|
|
198
198
|
},
|
|
199
199
|
};
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Header with the Mingo AI launcher enabled via `config.mingo`. `MingoAiButton`
|
|
203
|
-
* renders after the mobile toggle, so below `lg` the right cluster reads
|
|
204
|
-
* `Try for Free | hamburger | Mingo AI`; at `lg+` the hamburger is hidden and it
|
|
205
|
-
* collapses to `Try for Free | Mingo AI`, with Mingo full-height and flush to the
|
|
206
|
-
* right edge (its left border acts as the divider). Resize under 800px to see the
|
|
207
|
-
* Mingo label collapse to icon-only. Clicking it dispatches an `ask-ai:open` event.
|
|
208
|
-
*/
|
|
209
|
-
export const WithMingoAi: Story = {
|
|
210
|
-
args: {
|
|
211
|
-
config: {
|
|
212
|
-
logo: { element: flamingoLogo, href: '/' },
|
|
213
|
-
navigation: baseNavigation,
|
|
214
|
-
actions: {
|
|
215
|
-
persistent: [
|
|
216
|
-
<Button key="cta" variant="accent" href="/signup">
|
|
217
|
-
Try for Free
|
|
218
|
-
</Button>,
|
|
219
|
-
],
|
|
220
|
-
},
|
|
221
|
-
autoHide: false,
|
|
222
|
-
mobile: { enabled: true, onToggle: fn() },
|
|
223
|
-
mingo: { enabled: true, source: 'flamingo' },
|
|
224
|
-
className: 'px-0',
|
|
225
|
-
} satisfies HeaderConfig,
|
|
226
|
-
},
|
|
227
|
-
};
|
|
@@ -63,57 +63,3 @@
|
|
|
63
63
|
.mingo-chat-content[data-state="open"] { animation-name: mingo-chat-slide-in-right; }
|
|
64
64
|
.mingo-chat-content[data-state="closed"] { animation-name: mingo-chat-slide-out-right; }
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
/* =============================================================================
|
|
68
|
-
* Mingo AI header button — the 2026 AI edge-light pattern (Apple Intelligence
|
|
69
|
-
* glow-edge / Gemini gradient language): a thin accent-gradient arc TRAVELS
|
|
70
|
-
* around the button's border. No blurry blobs. Transform-only rotation on an
|
|
71
|
-
* oversized conic layer (compositor-friendly); an inset cover reveals only
|
|
72
|
-
* the edge. Reduced motion: rotation stops → a static gradient edge (the
|
|
73
|
-
* colorful state survives, only motion is removed). Hover adds a one-shot
|
|
74
|
-
* light-streak shimmer.
|
|
75
|
-
* ---------------------------------------------------------------------------*/
|
|
76
|
-
@keyframes mingo-edge-spin {
|
|
77
|
-
from { transform: translate(-50%, -50%) rotate(0deg); }
|
|
78
|
-
to { transform: translate(-50%, -50%) rotate(360deg); }
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.mingo-edge {
|
|
82
|
-
position: absolute;
|
|
83
|
-
left: 50%;
|
|
84
|
-
top: 50%;
|
|
85
|
-
width: 300%;
|
|
86
|
-
aspect-ratio: 1;
|
|
87
|
-
transform: translate(-50%, -50%);
|
|
88
|
-
/* Single luminous accent arc with a soft tail — platform-tinted via the
|
|
89
|
-
RAW --color-* accent var (the --ods-* alias does not exist in raw CSS). */
|
|
90
|
-
background: conic-gradient(
|
|
91
|
-
from 0deg,
|
|
92
|
-
transparent 0deg,
|
|
93
|
-
color-mix(in srgb, var(--color-accent-primary) 40%, transparent) 50deg,
|
|
94
|
-
var(--color-accent-primary) 90deg,
|
|
95
|
-
color-mix(in srgb, var(--color-accent-primary) 45%, white) 105deg,
|
|
96
|
-
transparent 160deg
|
|
97
|
-
);
|
|
98
|
-
animation: mingo-edge-spin 4s linear infinite;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
@keyframes mingo-shimmer {
|
|
102
|
-
from { transform: translateX(-160%) skewX(-18deg); }
|
|
103
|
-
to { transform: translateX(260%) skewX(-18deg); }
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.mingo-shimmer {
|
|
107
|
-
opacity: 0;
|
|
108
|
-
transform: translateX(-160%) skewX(-18deg);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.group\/mingo:hover .mingo-shimmer {
|
|
112
|
-
opacity: 1;
|
|
113
|
-
animation: mingo-shimmer 0.9s ease-out;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
@media (prefers-reduced-motion: reduce) {
|
|
117
|
-
.mingo-edge { animation: none; }
|
|
118
|
-
.group\/mingo:hover .mingo-shimmer { animation: none; opacity: 0; }
|
|
119
|
-
}
|
package/src/types/navigation.ts
CHANGED
|
@@ -36,7 +36,6 @@ export interface HeaderConfig {
|
|
|
36
36
|
actions?: {
|
|
37
37
|
left?: React.ReactNode[]
|
|
38
38
|
right?: React.ReactNode[]
|
|
39
|
-
persistent?: React.ReactNode[]
|
|
40
39
|
}
|
|
41
40
|
mobile?: {
|
|
42
41
|
enabled: boolean
|
|
@@ -45,17 +44,6 @@ export interface HeaderConfig {
|
|
|
45
44
|
onToggle?: () => void
|
|
46
45
|
isOpen?: boolean
|
|
47
46
|
}
|
|
48
|
-
mingo?: {
|
|
49
|
-
enabled?: boolean
|
|
50
|
-
source?: string
|
|
51
|
-
className?: string
|
|
52
|
-
/** Server-configured Mingo identity glyph (same EntityIcon the chat
|
|
53
|
-
* panel renders); omit to use the packaged fallback mark. */
|
|
54
|
-
icon?: React.ReactNode
|
|
55
|
-
/** Server-configured assistant name for the wordmark/aria-label; omit
|
|
56
|
-
* for the default "Mingo AI". */
|
|
57
|
-
label?: string
|
|
58
|
-
}
|
|
59
47
|
className?: string
|
|
60
48
|
style?: React.CSSProperties
|
|
61
49
|
autoHide?: boolean
|