@flamingo-stack/openframe-frontend-core 0.0.428-snapshot.20260715202150 → 0.0.428

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 (112) hide show
  1. package/dist/{chunk-GMR5AA3C.js → chunk-43KGFHI3.js} +2 -2
  2. package/dist/{chunk-CCL6JEMS.cjs → chunk-533XR4JK.cjs} +62 -62
  3. package/dist/{chunk-CCL6JEMS.cjs.map → chunk-533XR4JK.cjs.map} +1 -1
  4. package/dist/{chunk-4VODJPTB.js → chunk-55EIHSOQ.js} +2 -2
  5. package/dist/{chunk-7MJTM6QT.cjs → chunk-7ELFQWYF.cjs} +7 -7
  6. package/dist/{chunk-7MJTM6QT.cjs.map → chunk-7ELFQWYF.cjs.map} +1 -1
  7. package/dist/{chunk-TJ4HJ3KX.js → chunk-7JUUQAAH.js} +2 -2
  8. package/dist/{chunk-Y2TW664W.js → chunk-CVYVCBMM.js} +4 -4
  9. package/dist/{chunk-NYISC4Z3.js → chunk-DA2VSDAX.js} +2 -2
  10. package/dist/{chunk-MAYEJ3NY.js → chunk-DQ5NRLCG.js} +2 -2
  11. package/dist/{chunk-BN3V465H.cjs → chunk-F4WTCWOY.cjs} +15 -15
  12. package/dist/{chunk-BN3V465H.cjs.map → chunk-F4WTCWOY.cjs.map} +1 -1
  13. package/dist/{chunk-WXKFFVGC.cjs → chunk-FFDGTMZX.cjs} +5 -5
  14. package/dist/{chunk-WXKFFVGC.cjs.map → chunk-FFDGTMZX.cjs.map} +1 -1
  15. package/dist/{chunk-B3Y47C2U.cjs → chunk-I7YFFSDS.cjs} +59 -59
  16. package/dist/{chunk-B3Y47C2U.cjs.map → chunk-I7YFFSDS.cjs.map} +1 -1
  17. package/dist/{chunk-B3FBMRHQ.js → chunk-KMXHSL6M.js} +2 -2
  18. package/dist/{chunk-CRGH6TV6.cjs → chunk-LZYKGEN3.cjs} +26 -26
  19. package/dist/{chunk-CRGH6TV6.cjs.map → chunk-LZYKGEN3.cjs.map} +1 -1
  20. package/dist/{chunk-E4PKZNR7.cjs → chunk-MJH4VS4L.cjs} +11 -11
  21. package/dist/{chunk-E4PKZNR7.cjs.map → chunk-MJH4VS4L.cjs.map} +1 -1
  22. package/dist/{chunk-GGJUXN6Z.cjs → chunk-MO4QIPT7.cjs} +9 -9
  23. package/dist/{chunk-GGJUXN6Z.cjs.map → chunk-MO4QIPT7.cjs.map} +1 -1
  24. package/dist/{chunk-2LJA3ABH.cjs → chunk-N2CTZ3Q2.cjs} +37 -37
  25. package/dist/{chunk-2LJA3ABH.cjs.map → chunk-N2CTZ3Q2.cjs.map} +1 -1
  26. package/dist/{chunk-OLGFIDZY.cjs → chunk-NXCFIPEY.cjs} +26 -26
  27. package/dist/{chunk-OLGFIDZY.cjs.map → chunk-NXCFIPEY.cjs.map} +1 -1
  28. package/dist/{chunk-62L7S7HQ.js → chunk-OBDDE4WV.js} +2697 -2769
  29. package/dist/chunk-OBDDE4WV.js.map +1 -0
  30. package/dist/{chunk-YGITDP6O.cjs → chunk-OZTPC6VW.cjs} +31 -31
  31. package/dist/{chunk-YGITDP6O.cjs.map → chunk-OZTPC6VW.cjs.map} +1 -1
  32. package/dist/{chunk-KHKB5RY2.js → chunk-RR77Z27A.js} +2 -2
  33. package/dist/{chunk-XDBD6BJN.cjs → chunk-SJTNVETH.cjs} +20 -92
  34. package/dist/chunk-SJTNVETH.cjs.map +1 -0
  35. package/dist/{chunk-RTOVYU4D.js → chunk-SLCANQN3.js} +4 -4
  36. package/dist/{chunk-2WJ25MTA.js → chunk-UXXCNZXC.js} +4 -4
  37. package/dist/{chunk-7PA4B6SD.js → chunk-YP3DO4BM.js} +4 -4
  38. package/dist/components/case-studies/index.cjs +8 -8
  39. package/dist/components/case-studies/index.js +2 -2
  40. package/dist/components/chat/chat-message-skeleton.d.ts +2 -17
  41. package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
  42. package/dist/components/chat/chat-panel-header.d.ts +1 -6
  43. package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
  44. package/dist/components/chat/chat-quick-action-row.d.ts +2 -12
  45. package/dist/components/chat/chat-quick-action-row.d.ts.map +1 -1
  46. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +2 -22
  47. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  48. package/dist/components/chat/index.cjs +2 -4
  49. package/dist/components/chat/index.cjs.map +1 -1
  50. package/dist/components/chat/index.js +1 -3
  51. package/dist/components/chat/quick-action-chip.d.ts +1 -5
  52. package/dist/components/chat/quick-action-chip.d.ts.map +1 -1
  53. package/dist/components/contact/index.cjs +3 -3
  54. package/dist/components/contact/index.js +2 -2
  55. package/dist/components/docs/index.cjs +5 -5
  56. package/dist/components/docs/index.js +4 -4
  57. package/dist/components/embeds/index.cjs +3 -3
  58. package/dist/components/embeds/index.js +2 -2
  59. package/dist/components/faq/index.cjs +3 -3
  60. package/dist/components/faq/index.js +2 -2
  61. package/dist/components/features/index.cjs +2 -2
  62. package/dist/components/features/index.js +1 -1
  63. package/dist/components/help-center-pages/index.cjs +20 -20
  64. package/dist/components/help-center-pages/index.js +11 -11
  65. package/dist/components/index.cjs +128 -132
  66. package/dist/components/index.cjs.map +1 -1
  67. package/dist/components/index.js +9 -13
  68. package/dist/components/index.js.map +1 -1
  69. package/dist/components/navigation/index.cjs +2 -2
  70. package/dist/components/navigation/index.js +1 -1
  71. package/dist/components/onboarding-guides/index.cjs +5 -5
  72. package/dist/components/onboarding-guides/index.js +4 -4
  73. package/dist/components/related-content/index.cjs +3 -3
  74. package/dist/components/related-content/index.js +2 -2
  75. package/dist/components/tickets/index.cjs +5 -5
  76. package/dist/components/tickets/index.js +4 -4
  77. package/dist/components/ui/index.cjs +2 -6
  78. package/dist/components/ui/index.cjs.map +1 -1
  79. package/dist/components/ui/index.d.ts +0 -1
  80. package/dist/components/ui/index.d.ts.map +1 -1
  81. package/dist/components/ui/index.js +1 -5
  82. package/dist/components/ui/tag.d.ts +1 -1
  83. package/dist/components/ui/tag.d.ts.map +1 -1
  84. package/dist/index.cjs +2 -6
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.js +1 -5
  87. package/package.json +1 -1
  88. package/src/components/chat/chat-message-skeleton.tsx +9 -40
  89. package/src/components/chat/chat-panel-header.tsx +16 -28
  90. package/src/components/chat/chat-quick-action-row.tsx +0 -33
  91. package/src/components/chat/embeddable-chat.tsx +1 -11
  92. package/src/components/chat/hooks/use-nats-chat-adapter.ts +1 -7
  93. package/src/components/chat/quick-action-chip.tsx +1 -6
  94. package/src/components/ui/index.ts +0 -1
  95. package/src/components/ui/tag.tsx +0 -7
  96. package/dist/chunk-62L7S7HQ.js.map +0 -1
  97. package/dist/chunk-XDBD6BJN.cjs.map +0 -1
  98. package/dist/components/ui/info-card-row.d.ts +0 -13
  99. package/dist/components/ui/info-card-row.d.ts.map +0 -1
  100. package/src/components/ui/info-card-row.tsx +0 -70
  101. package/src/stories/InfoCardRow.stories.tsx +0 -68
  102. /package/dist/{chunk-GMR5AA3C.js.map → chunk-43KGFHI3.js.map} +0 -0
  103. /package/dist/{chunk-4VODJPTB.js.map → chunk-55EIHSOQ.js.map} +0 -0
  104. /package/dist/{chunk-TJ4HJ3KX.js.map → chunk-7JUUQAAH.js.map} +0 -0
  105. /package/dist/{chunk-Y2TW664W.js.map → chunk-CVYVCBMM.js.map} +0 -0
  106. /package/dist/{chunk-NYISC4Z3.js.map → chunk-DA2VSDAX.js.map} +0 -0
  107. /package/dist/{chunk-MAYEJ3NY.js.map → chunk-DQ5NRLCG.js.map} +0 -0
  108. /package/dist/{chunk-B3FBMRHQ.js.map → chunk-KMXHSL6M.js.map} +0 -0
  109. /package/dist/{chunk-KHKB5RY2.js.map → chunk-RR77Z27A.js.map} +0 -0
  110. /package/dist/{chunk-RTOVYU4D.js.map → chunk-SLCANQN3.js.map} +0 -0
  111. /package/dist/{chunk-2WJ25MTA.js.map → chunk-UXXCNZXC.js.map} +0 -0
  112. /package/dist/{chunk-7PA4B6SD.js.map → chunk-YP3DO4BM.js.map} +0 -0
@@ -1,7 +1,6 @@
1
1
  'use client'
2
2
 
3
3
  import * as React from 'react'
4
- import { cn } from '../../utils/cn'
5
4
  import { Chevron01LeftIcon } from '../icons-v2-generated/arrows/chevron-01-left-icon'
6
5
  import {
7
6
  Ellipsis01Icon,
@@ -43,11 +42,6 @@ export interface ChatPanelHeaderProps {
43
42
  onArchive?: () => void
44
43
  /** Open the Chat Archive page — renders the clock button (list view only). */
45
44
  onOpenArchive?: () => void
46
- /** Force the COMPACT (`h-14` desktop-style) bar at every width, skipping the
47
- * full-screen mobile header. For EMBEDDED surfaces (e.g. a small preview
48
- * panel) where the phone-sized full-bleed header (large `text-h2` title) is
49
- * wrong regardless of viewport. Default false = viewport-responsive. */
50
- compact?: boolean
51
45
  }
52
46
 
53
47
  /**
@@ -67,7 +61,6 @@ export function ChatPanelHeader({
67
61
  onRename,
68
62
  onArchive,
69
63
  onOpenArchive,
70
- compact = false,
71
64
  }: ChatPanelHeaderProps) {
72
65
  // Desktop ⋯ menu (active, non-archived conversation only) — rename / archive.
73
66
  const menuItems = [
@@ -77,28 +70,23 @@ export function ChatPanelHeader({
77
70
 
78
71
  return (
79
72
  <>
80
- {/* Mobile (<md): a distinct full-screen layout (Figma node 7363:85532).
81
- Skipped in `compact` mode — an embedded preview keeps the small bar
82
- at every width. */}
83
- {!compact && (
84
- <ChatPanelHeaderMobile
85
- className="flex md:hidden"
86
- showBack={showBack}
87
- title={title}
88
- backAriaLabel={backAriaLabel}
89
- isArchivedView={isArchivedView}
90
- onBack={onBack}
91
- onClose={onClose}
92
- onRestore={onRestore}
93
- onRename={onRename}
94
- onArchive={onArchive}
95
- onOpenArchive={onOpenArchive}
96
- />
97
- )}
73
+ {/* Mobile (<md): a distinct layout (Figma node 7363:85532). */}
74
+ <ChatPanelHeaderMobile
75
+ className="flex md:hidden"
76
+ showBack={showBack}
77
+ title={title}
78
+ backAriaLabel={backAriaLabel}
79
+ isArchivedView={isArchivedView}
80
+ onBack={onBack}
81
+ onClose={onClose}
82
+ onRestore={onRestore}
83
+ onRename={onRename}
84
+ onArchive={onArchive}
85
+ onOpenArchive={onOpenArchive}
86
+ />
98
87
 
99
- {/* Compact bar: `md+` normally, or ALL widths when `compact`. Fixed-height
100
- bar with full-height divider action cells. */}
101
- <div className={cn('flex-shrink-0 h-14 w-full overflow-hidden border-b border-ods-border bg-ods-card', compact ? 'flex' : 'hidden md:flex')}>
88
+ {/* Desktop (md+): fixed-height bar with full-height divider action cells. */}
89
+ <div className="hidden md:flex flex-shrink-0 h-14 w-full overflow-hidden border-b border-ods-border bg-ods-card">
102
90
  <div className="flex flex-1 min-w-0 items-center gap-2 px-4 py-3">
103
91
  {showBack ? (
104
92
  <>
@@ -9,10 +9,8 @@ import { Ellipsis01Icon } from '../icons-v2-generated'
9
9
  import { useAutoLimitTags } from '../../hooks/ui/use-auto-limit-tags'
10
10
  import {
11
11
  QuickActionChipButton,
12
- QuickActionChipSkeleton,
13
12
  renderQuickActionIcon,
14
13
  type QuickActionIconSpec,
15
- type QuickActionAccent,
16
14
  } from './quick-action-chip'
17
15
 
18
16
  // =============================================================================
@@ -29,11 +27,6 @@ export interface QuickActionChip {
29
27
  icon?: React.ReactNode | QuickActionIconSpec
30
28
  /** `'primary'` = accent (yellow) chip, `'outline'` = bordered chip (default). */
31
29
  variant?: 'primary' | 'outline'
32
- /** Active single-select state — renders the accented `selected` skin
33
- * (overrides `variant`). */
34
- selected?: boolean
35
- /** Accent for the `selected` skin (`'cyan'` = cyan twin, else pink). */
36
- selectedAccent?: QuickActionAccent
37
30
  onSelect?: () => void
38
31
  /** Pointer/keyboard focus enters the chip — e.g. preview the full prompt in
39
32
  * the composer. */
@@ -54,18 +47,9 @@ export interface ChatQuickActionRowProps {
54
47
  * for roomy contexts (e.g. the Guide empty state) where overflow-hiding chips
55
48
  * would defeat per-chip hover/preview. */
56
49
  wrap?: boolean
57
- /** Render `skeletonCount` loading chips (the real {@link QuickActionChipSkeleton},
58
- * so geometry is 1:1 with the loaded chips) instead of `chips`. Wrap-aware. */
59
- loading?: boolean
60
- /** How many skeleton chips to draw when `loading`. Default 8. */
61
- skeletonCount?: number
62
50
  className?: string
63
51
  }
64
52
 
65
- // Deterministic label widths (in `ch`) so a loading wall reads like a populated
66
- // one — a varied spread, not a uniform block.
67
- const SKELETON_LABEL_CHS = [16, 9, 13, 7, 18, 8, 20, 11, 15, 10, 19, 12, 17, 8, 21, 14]
68
-
69
53
  // =============================================================================
70
54
  // Chip button
71
55
  // =============================================================================
@@ -78,8 +62,6 @@ function ChipButton({ chip }: { chip: QuickActionChip }) {
78
62
  label={chip.label}
79
63
  icon={chip.icon}
80
64
  variant={chip.variant ?? 'outline'}
81
- selected={chip.selected}
82
- selectedAccent={chip.selectedAccent}
83
65
  onSelect={chip.onSelect}
84
66
  onHoverStart={chip.onHoverStart}
85
67
  onHoverEnd={chip.onHoverEnd}
@@ -104,8 +86,6 @@ export function ChatQuickActionRow({
104
86
  leading,
105
87
  chips,
106
88
  wrap = false,
107
- loading = false,
108
- skeletonCount = 8,
109
89
  className,
110
90
  }: ChatQuickActionRowProps) {
111
91
  const auto = useAutoLimitTags({
@@ -116,19 +96,6 @@ export function ChatQuickActionRow({
116
96
  const visibleChips = chips.slice(0, auto.visibleCount)
117
97
  const hiddenChips = chips.slice(auto.visibleCount)
118
98
 
119
- // Loading: draw skeleton chips (real `QuickActionChipSkeleton`, 1:1 geometry)
120
- // in the same wrap/inline layout — one shared skeleton for every consumer, no
121
- // hand-rolled bars.
122
- if (loading) {
123
- return (
124
- <div className={cn('flex shrink-0 items-center gap-1', wrap && 'flex-wrap', className)}>
125
- {Array.from({ length: skeletonCount }, (_, i) => (
126
- <QuickActionChipSkeleton key={i} labelCh={SKELETON_LABEL_CHS[i % SKELETON_LABEL_CHS.length]} />
127
- ))}
128
- </div>
129
- )
130
- }
131
-
132
99
  if (!leading && chips.length === 0) return null
133
100
 
134
101
  // Wrap mode: no width-measurement / "⋯" overflow — every chip renders inline
@@ -1557,13 +1557,7 @@ function EmbeddableChatInner({
1557
1557
  // history has loaded (`hasMessages`). Driving the surface + content branch
1558
1558
  // off this makes the normal-chat open animate identically to the archived
1559
1559
  // one instead of lagging behind the message fetch.
1560
- // In `previewMode`, the host drives the whole state (`mingoStateOverride`) and
1561
- // there is no dialog manager to set `isOpeningDialog`. So an embedded preview
1562
- // that wants a message-list skeleton (real header + composer, skeleton bubbles)
1563
- // signals it via `isMessagesLoading` — treat that as an open conversation so
1564
- // the content branch shows the skeleton instead of the new-user welcome.
1565
- const hasConversation =
1566
- hasMessages || isOpeningDialog || isViewingArchived || (previewMode && isMessagesLoading)
1560
+ const hasConversation = hasMessages || isOpeningDialog || isViewingArchived
1567
1561
  // Opening a dialog whose history hasn't arrived yet — show a message-list
1568
1562
  // skeleton instead of an empty thread so the open reads as "loading" rather
1569
1563
  // than a blank flash before the bubbles stream in.
@@ -1686,10 +1680,6 @@ function EmbeddableChatInner({
1686
1680
  className="flex flex-1 min-h-0 flex-col animate-in fade-in-0 duration-200"
1687
1681
  >
1688
1682
  <ChatPanelHeader
1689
- // Embedded previews (the hero demo tabs) keep the small bar at
1690
- // every width — the phone-sized full-screen header (large title)
1691
- // is wrong in a small embedded panel.
1692
- compact={previewMode}
1693
1683
  // Guide-mode empty state shows a back-chevron + "Mingo Guide"
1694
1684
  // (back returns to the default Mingo welcome); an open
1695
1685
  // conversation shows back + the dialog title; the Mingo list
@@ -374,14 +374,8 @@ function updateTrailingAssistant(
374
374
  * here because the unified contract surfaces errors as banners, not
375
375
  * inline messages. (Hosts that need inline error bubbles can extend
376
376
  * the contract later.)
377
- *
378
- * Exported for host reuse (e.g. scripted marketing demos that rehydrate a
379
- * stored `HistoricalMessage[]` via `processHistoricalMessagesWithErrors` and
380
- * feed a `previewMode` EmbeddableChat). This mapper carries the segment/content
381
- * shape only; author identity (name/avatar/authorType/timestamp) that a host
382
- * needs for the demo is re-attached by the host from the same processed rows.
383
377
  */
384
- export function mapProcessedToUnified(
378
+ function mapProcessedToUnified(
385
379
  processed: Array<{
386
380
  id: string
387
381
  role: 'user' | 'assistant' | 'error'
@@ -145,10 +145,6 @@ export interface QuickActionChipButtonProps {
145
145
  * Tag's `selected` variant (pink border + pink-secondary fill), overriding
146
146
  * `variant`. Used by chip groups acting as tabs (OpenFrame categories). */
147
147
  selected?: boolean
148
- /** Accent for the `selected` skin: `'cyan'` uses the cyan twin, anything else
149
- * (default) uses pink. Lets an agent's chip group match its own theme accent
150
- * (fae pink / mingo cyan) instead of the fixed pink. */
151
- selectedAccent?: QuickActionAccent
152
148
  /** Chip scale, forwarded to `Tag` — `'large'` is the Figma "Feature Item"
153
149
  * 48px chip (h3 bold label, 24px icon box). Default `'default'` (32px). */
154
150
  size?: 'default' | 'large'
@@ -230,7 +226,6 @@ export function QuickActionChipButton({
230
226
  lozenge,
231
227
  variant = 'outline',
232
228
  selected = false,
233
- selectedAccent,
234
229
  size = 'default',
235
230
  onSelect,
236
231
  onHoverStart,
@@ -240,7 +235,7 @@ export function QuickActionChipButton({
240
235
  }: QuickActionChipButtonProps) {
241
236
  const resolvedIcon = renderQuickActionIcon(icon)
242
237
  const resolvedLabel = composeChipLabel(label, lozenge)
243
- const tagVariant = selected ? (selectedAccent === 'cyan' ? 'selectedCyan' : 'selected') : variant
238
+ const tagVariant = selected ? 'selected' : variant
244
239
  if (!interactive) {
245
240
  return <Tag variant={tagVariant} size={size} icon={resolvedIcon} label={resolvedLabel} className={className} />
246
241
  }
@@ -83,7 +83,6 @@ export * from './chevron-button'
83
83
  export * from './circular-progress'
84
84
  export { CheckIcon, CheckCircleIcon as LucideCheckCircleIcon, XIcon as LucideXIcon, MinusIcon, XCircleIcon } from './custom-icons'
85
85
  export * from './dashboard-info-card'
86
- export * from './info-card-row'
87
86
  export * from './device-card'
88
87
  export * from './device-card-compact'
89
88
  export * from './entity-image'
@@ -58,13 +58,6 @@ const tagVariants = cva(
58
58
  "hover:bg-[var(--ods-flamingo-pink-secondary-hover)] hover:border-[var(--ods-flamingo-pink-base)]",
59
59
  "active:bg-[var(--ods-flamingo-pink-secondary-action)]",
60
60
  ],
61
- // Cyan twin of `selected` (Mingo's accent) — same active-chip skin in the
62
- // cyan theme so agent chip groups can match their own accent.
63
- selectedCyan: [
64
- "bg-[var(--ods-flamingo-cyan-secondary)] text-[var(--ods-system-greys-white)] border border-[var(--ods-flamingo-cyan-base)]",
65
- "hover:bg-[var(--ods-flamingo-cyan-secondary-hover)] hover:border-[var(--ods-flamingo-cyan-base)]",
66
- "active:bg-[var(--ods-flamingo-cyan-secondary-action)]",
67
- ],
68
61
  // Matches the EntityTagBadges / StatusBadge tag skin (ods-card + ods-border,
69
62
  // mono uppercase) so the tag-editor chips render identically to the public
70
63
  // tag badges. Used for FilterChipData variant 'tag' (see search-input).