@flamingo-stack/openframe-frontend-core 0.0.289 → 0.0.290-snapshot.20260618201839
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-KLXCXNLW.cjs → chunk-2YSC3API.cjs} +233 -208
- package/dist/chunk-2YSC3API.cjs.map +1 -0
- package/dist/{chunk-HIABEYRE.cjs → chunk-6BWZFRUG.cjs} +3 -3
- package/dist/{chunk-HIABEYRE.cjs.map → chunk-6BWZFRUG.cjs.map} +1 -1
- package/dist/{chunk-7YLTJXMQ.js → chunk-AGRSALEN.js} +2 -2
- package/dist/{chunk-6NL7TTDR.cjs → chunk-BVNYQDZE.cjs} +23 -23
- package/dist/{chunk-6NL7TTDR.cjs.map → chunk-BVNYQDZE.cjs.map} +1 -1
- package/dist/{chunk-Q6S6DCVP.js → chunk-CSL3ECOF.js} +2 -2
- package/dist/{chunk-BZR546EB.js → chunk-D4R2MUPA.js} +2 -2
- package/dist/{chunk-UBFYGWFP.js → chunk-EGSAB76W.js} +2 -2
- package/dist/{chunk-PYHCHGM5.js → chunk-RSIFEDZX.js} +2 -2
- package/dist/{chunk-DFAMTCC4.cjs → chunk-VMRPM24G.cjs} +5 -5
- package/dist/{chunk-DFAMTCC4.cjs.map → chunk-VMRPM24G.cjs.map} +1 -1
- package/dist/{chunk-P2SO7ADJ.js → chunk-Z2EOXZBW.js} +39 -14
- package/dist/chunk-Z2EOXZBW.js.map +1 -0
- package/dist/{chunk-OV3ZCU6X.cjs → chunk-Z4GAFSNM.cjs} +4 -4
- package/dist/{chunk-OV3ZCU6X.cjs.map → chunk-Z4GAFSNM.cjs.map} +1 -1
- package/dist/{chunk-LZQ4HSOR.cjs → chunk-ZYBUFVQV.cjs} +25 -25
- package/dist/{chunk-LZQ4HSOR.cjs.map → chunk-ZYBUFVQV.cjs.map} +1 -1
- package/dist/components/chat/entity-cards/dispatch.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/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/features/paths-display.d.ts +1 -1
- package/dist/components/features/paths-display.d.ts.map +1 -1
- package/dist/components/index.cjs +46 -46
- package/dist/components/index.js +5 -5
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +45 -45
- package/dist/components/tickets/index.js +3 -3
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/entity-cards/dispatch.tsx +42 -0
- package/src/components/features/.paths-display.md +1 -1
- package/src/components/features/command-box.tsx +1 -1
- package/src/components/features/paths-display.tsx +13 -14
- package/dist/chunk-KLXCXNLW.cjs.map +0 -1
- package/dist/chunk-P2SO7ADJ.js.map +0 -1
- /package/dist/{chunk-7YLTJXMQ.js.map → chunk-AGRSALEN.js.map} +0 -0
- /package/dist/{chunk-Q6S6DCVP.js.map → chunk-CSL3ECOF.js.map} +0 -0
- /package/dist/{chunk-BZR546EB.js.map → chunk-D4R2MUPA.js.map} +0 -0
- /package/dist/{chunk-UBFYGWFP.js.map → chunk-EGSAB76W.js.map} +0 -0
- /package/dist/{chunk-PYHCHGM5.js.map → chunk-RSIFEDZX.js.map} +0 -0
|
@@ -74,6 +74,7 @@ import { MingoIcon } from '../../icons'
|
|
|
74
74
|
import { EyeIcon } from '../../icons-v2-generated/interface/eye-icon'
|
|
75
75
|
import { ArrowRightUpIcon } from '../../icons-v2-generated/arrows/arrow-right-up-icon'
|
|
76
76
|
import { TagIcon } from '../../icons-v2-generated/shopping/tag-icon'
|
|
77
|
+
import { QuestionCircleIcon } from '../../icons-v2-generated/signs-and-symbols/question-circle-icon'
|
|
77
78
|
import { SlackLogoGreyIcon } from '../../icons-v2-generated/brand-logos/slack-logo-grey-icon'
|
|
78
79
|
import { FileContentIcon } from '../../icons-v2-generated/documents/file-content-icon'
|
|
79
80
|
import { ChartBar01VerIcon } from '../../icons-v2-generated/charts/chart-bar-01-ver-icon'
|
|
@@ -354,6 +355,39 @@ function HubspotTicketChatCard({
|
|
|
354
355
|
)
|
|
355
356
|
}
|
|
356
357
|
|
|
358
|
+
/** FAQ Q&A — title=question, body=answer preview, optional section pill.
|
|
359
|
+
* No-fetch card: every field the renderer needs already lives on the
|
|
360
|
+
* ChatRef (hub's `FAQ_MAPPER.toRetrievedDoc` populates `title` /
|
|
361
|
+
* `preview` / `url` / `targetPlatform`, and the section name is threaded
|
|
362
|
+
* through `metadata.section` for the badge). The card itself stays pure
|
|
363
|
+
* presentation — same shape as `SlackChatCard` / `HubspotTicketChatCard`. */
|
|
364
|
+
function FaqChatCard({
|
|
365
|
+
chatRef,
|
|
366
|
+
isNewTab,
|
|
367
|
+
discuss,
|
|
368
|
+
}: {
|
|
369
|
+
chatRef: ChatRef
|
|
370
|
+
isNewTab: boolean
|
|
371
|
+
discuss?: CardDiscussAction
|
|
372
|
+
}) {
|
|
373
|
+
const section =
|
|
374
|
+
typeof chatRef.metadata?.section === 'string'
|
|
375
|
+
? (chatRef.metadata.section as string).trim()
|
|
376
|
+
: undefined
|
|
377
|
+
const statusLabel = section && section.length > 0 ? section : 'FAQ'
|
|
378
|
+
return (
|
|
379
|
+
<MingoInfoCard
|
|
380
|
+
title={chatRef.title}
|
|
381
|
+
description={chatRef.preview ?? undefined}
|
|
382
|
+
icon={<QuestionCircleIcon size={24} />}
|
|
383
|
+
status={{ label: statusLabel, variant: 'grey' }}
|
|
384
|
+
anchorProps={buildAnchorProps(chatRef.url, isNewTab)}
|
|
385
|
+
menuGroups={cardMenuGroups(chatRef.url, discuss)}
|
|
386
|
+
menuAriaLabel="FAQ actions"
|
|
387
|
+
/>
|
|
388
|
+
)
|
|
389
|
+
}
|
|
390
|
+
|
|
357
391
|
function SlackChatCard({
|
|
358
392
|
chatRef,
|
|
359
393
|
isNewTab,
|
|
@@ -1121,6 +1155,14 @@ const CHAT_CARD_REGISTRY: Record<string, ChatCardRegistryEntry> = {
|
|
|
1121
1155
|
discuss={opts.discuss} />
|
|
1122
1156
|
),
|
|
1123
1157
|
},
|
|
1158
|
+
faq: {
|
|
1159
|
+
mode: 'no-fetch',
|
|
1160
|
+
label: 'FAQ',
|
|
1161
|
+
bareInline: true,
|
|
1162
|
+
render: (chatRef, opts) => (
|
|
1163
|
+
<FaqChatCard chatRef={chatRef} isNewTab={opts.isNewTab} discuss={opts.discuss} />
|
|
1164
|
+
),
|
|
1165
|
+
},
|
|
1124
1166
|
hubspot_ticket: {
|
|
1125
1167
|
mode: 'no-fetch',
|
|
1126
1168
|
label: 'HubSpot ticket',
|
|
@@ -44,7 +44,7 @@ import { PathsDisplay, getOpenFramePaths } from '@flamingo/ui-kit/components/fea
|
|
|
44
44
|
| `title` | `string` | — | Optional heading above the list |
|
|
45
45
|
| `description` | `string` | — | Optional subtext below the title |
|
|
46
46
|
| `showCopyButtons` | `boolean` | `true` | Toggle copy button visibility |
|
|
47
|
-
| `copyIconSize` | `string` | `'w-
|
|
47
|
+
| `copyIconSize` | `string` | `'w-6 h-6'` | Tailwind size classes for the copy icon |
|
|
48
48
|
| `className` | `string` | — | Additional CSS classes for the container |
|
|
49
49
|
|
|
50
50
|
> **Note:** The component renders `null` when `paths` is empty or undefined. Copy buttons only render when both `showCopyButtons` is `true` **and** `onCopyPath` is provided.
|
|
@@ -98,7 +98,7 @@ export function CommandBox({
|
|
|
98
98
|
{title}
|
|
99
99
|
</div>
|
|
100
100
|
)}
|
|
101
|
-
<div className="bg-ods-
|
|
101
|
+
<div className="bg-ods-bg border border-ods-border rounded-[6px] p-4">
|
|
102
102
|
<div
|
|
103
103
|
className={cn(
|
|
104
104
|
'text-ods-text-primary font-mono text-[14px] md:text-[16px] leading-relaxed break-all',
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
3
|
import React from 'react'
|
|
4
|
-
import {
|
|
5
|
-
import { Button } from '../ui/button'
|
|
4
|
+
import { Copy02Icon } from '../icons-v2-generated/documents/copy-02-icon'
|
|
6
5
|
import { cn } from '../../utils/cn'
|
|
7
6
|
|
|
8
7
|
export interface PathsDisplayProps {
|
|
@@ -37,7 +36,7 @@ export interface PathsDisplayProps {
|
|
|
37
36
|
showCopyButtons?: boolean
|
|
38
37
|
|
|
39
38
|
/**
|
|
40
|
-
* Size of the copy icon (default: 'w-
|
|
39
|
+
* Size of the copy icon (default: 'w-6 h-6')
|
|
41
40
|
*/
|
|
42
41
|
copyIconSize?: string
|
|
43
42
|
}
|
|
@@ -78,7 +77,7 @@ export function PathsDisplay({
|
|
|
78
77
|
description,
|
|
79
78
|
className,
|
|
80
79
|
showCopyButtons = true,
|
|
81
|
-
copyIconSize = 'w-
|
|
80
|
+
copyIconSize = 'w-6 h-6'
|
|
82
81
|
}: PathsDisplayProps) {
|
|
83
82
|
if (!paths || paths.length === 0) {
|
|
84
83
|
return null
|
|
@@ -87,12 +86,12 @@ export function PathsDisplay({
|
|
|
87
86
|
return (
|
|
88
87
|
<div className={cn('flex flex-col gap-3', className)}>
|
|
89
88
|
{title && (
|
|
90
|
-
<div className="text-ods-text-primary
|
|
89
|
+
<div className="text-h4 text-ods-text-primary">
|
|
91
90
|
{title}
|
|
92
91
|
</div>
|
|
93
92
|
)}
|
|
94
93
|
{description && (
|
|
95
|
-
<div className="text-ods-text-secondary
|
|
94
|
+
<div className="text-h6 text-ods-text-secondary">
|
|
96
95
|
{description}
|
|
97
96
|
</div>
|
|
98
97
|
)}
|
|
@@ -100,20 +99,20 @@ export function PathsDisplay({
|
|
|
100
99
|
{paths.map((path) => (
|
|
101
100
|
<div
|
|
102
101
|
key={path}
|
|
103
|
-
className="flex items-center
|
|
102
|
+
className="flex items-center gap-4 p-4 border-b border-ods-border last:border-b-0"
|
|
104
103
|
>
|
|
105
|
-
<span className="
|
|
104
|
+
<span className="flex-1 min-w-0 text-h4 text-ods-text-primary truncate">
|
|
106
105
|
{path}
|
|
107
106
|
</span>
|
|
108
107
|
{showCopyButtons && onCopyPath && (
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
size="small-legacy"
|
|
108
|
+
<button
|
|
109
|
+
type="button"
|
|
112
110
|
onClick={() => onCopyPath(path)}
|
|
113
|
-
|
|
111
|
+
aria-label={`Copy ${path}`}
|
|
112
|
+
className="shrink-0 rounded-md text-ods-text-secondary transition-colors hover:text-ods-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus"
|
|
114
113
|
>
|
|
115
|
-
<
|
|
116
|
-
</
|
|
114
|
+
<Copy02Icon className={copyIconSize} />
|
|
115
|
+
</button>
|
|
117
116
|
)}
|
|
118
117
|
</div>
|
|
119
118
|
))}
|