@flamingo-stack/openframe-frontend-core 0.0.219 → 0.0.220-snapshot.20260602172647

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 (146) hide show
  1. package/dist/{chunk-F3FO2ZZZ.cjs → chunk-4PBV66HQ.cjs} +7 -7
  2. package/dist/{chunk-F3FO2ZZZ.cjs.map → chunk-4PBV66HQ.cjs.map} +1 -1
  3. package/dist/{chunk-EDW2NVRV.js → chunk-4WZOFD46.js} +37 -37
  4. package/dist/{chunk-EDW2NVRV.js.map → chunk-4WZOFD46.js.map} +1 -1
  5. package/dist/{chunk-YX3YQNC4.cjs → chunk-73YDB6AT.cjs} +13 -13
  6. package/dist/{chunk-YX3YQNC4.cjs.map → chunk-73YDB6AT.cjs.map} +1 -1
  7. package/dist/{chunk-MPHDM2VZ.cjs → chunk-7TQNW2AM.cjs} +30 -30
  8. package/dist/{chunk-MPHDM2VZ.cjs.map → chunk-7TQNW2AM.cjs.map} +1 -1
  9. package/dist/{chunk-65CPJ4SX.cjs → chunk-C6ASEPZL.cjs} +30 -30
  10. package/dist/{chunk-65CPJ4SX.cjs.map → chunk-C6ASEPZL.cjs.map} +1 -1
  11. package/dist/{chunk-DRPECAXO.js → chunk-CPIX5AAR.js} +2 -2
  12. package/dist/{chunk-SRA2QYK6.js → chunk-E2AWBQEU.js} +4 -4
  13. package/dist/{chunk-SZXKKEUH.cjs → chunk-E6B4B7GM.cjs} +46 -30
  14. package/dist/chunk-E6B4B7GM.cjs.map +1 -0
  15. package/dist/{chunk-XG7DFRJL.js → chunk-FOOQFRJR.js} +3 -3
  16. package/dist/{chunk-A3PL6ZCF.js → chunk-IS4IZC7N.js} +6388 -5128
  17. package/dist/chunk-IS4IZC7N.js.map +1 -0
  18. package/dist/{chunk-ZGBXHK26.cjs → chunk-JMGSJHFP.cjs} +12 -12
  19. package/dist/{chunk-ZGBXHK26.cjs.map → chunk-JMGSJHFP.cjs.map} +1 -1
  20. package/dist/{chunk-SL3RGBPX.cjs → chunk-QNYH3WUU.cjs} +9 -9
  21. package/dist/{chunk-SL3RGBPX.cjs.map → chunk-QNYH3WUU.cjs.map} +1 -1
  22. package/dist/{chunk-24Q2WLIU.js → chunk-QYRV6MKX.js} +2 -2
  23. package/dist/{chunk-ZII7TNVA.js → chunk-SRCEVQYA.js} +3 -3
  24. package/dist/{chunk-Y3MXGCOW.js → chunk-YZDUOUMB.js} +46 -30
  25. package/dist/chunk-YZDUOUMB.js.map +1 -0
  26. package/dist/{chunk-7UZLRI7W.cjs → chunk-ZAGQXSAP.cjs} +3292 -2032
  27. package/dist/chunk-ZAGQXSAP.cjs.map +1 -0
  28. package/dist/components/chat/chat-archive-page.d.ts +25 -0
  29. package/dist/components/chat/chat-archive-page.d.ts.map +1 -0
  30. package/dist/components/chat/chat-composer.d.ts +29 -0
  31. package/dist/components/chat/chat-composer.d.ts.map +1 -0
  32. package/dist/components/chat/chat-header-icon-button.d.ts +14 -0
  33. package/dist/components/chat/chat-header-icon-button.d.ts.map +1 -0
  34. package/dist/components/chat/chat-panel-header.d.ts +32 -0
  35. package/dist/components/chat/chat-panel-header.d.ts.map +1 -0
  36. package/dist/components/chat/embeddable-chat.d.ts +18 -0
  37. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  38. package/dist/components/chat/guide-mode-banner.d.ts +16 -0
  39. package/dist/components/chat/guide-mode-banner.d.ts.map +1 -0
  40. package/dist/components/chat/guide-welcome.d.ts +42 -0
  41. package/dist/components/chat/guide-welcome.d.ts.map +1 -0
  42. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts +58 -0
  43. package/dist/components/chat/hooks/use-chat-dialog-manager.d.ts.map +1 -0
  44. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +26 -1
  45. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  46. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  47. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
  48. package/dist/components/chat/index.cjs +29 -5
  49. package/dist/components/chat/index.cjs.map +1 -1
  50. package/dist/components/chat/index.d.ts +9 -0
  51. package/dist/components/chat/index.d.ts.map +1 -1
  52. package/dist/components/chat/index.js +28 -4
  53. package/dist/components/chat/mingo-chat-history.d.ts +37 -0
  54. package/dist/components/chat/mingo-chat-history.d.ts.map +1 -0
  55. package/dist/components/chat/mingo-chat-modals.d.ts +50 -0
  56. package/dist/components/chat/mingo-chat-modals.d.ts.map +1 -0
  57. package/dist/components/chat/mingo-onboarding-card.d.ts.map +1 -1
  58. package/dist/components/chat/mingo-welcome.d.ts +78 -0
  59. package/dist/components/chat/mingo-welcome.d.ts.map +1 -0
  60. package/dist/components/chat/types/unified-chat-state.types.d.ts +6 -0
  61. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  62. package/dist/components/contact/index.cjs +6 -6
  63. package/dist/components/contact/index.js +5 -5
  64. package/dist/components/features/index.cjs +5 -5
  65. package/dist/components/features/index.js +4 -4
  66. package/dist/components/icons-v2-generated/brand-logos/fleet-mdm-logo-grey-icon.d.ts.map +1 -1
  67. package/dist/components/icons-v2-generated/brand-logos/fleet-mdm-logo-icon.d.ts.map +1 -1
  68. package/dist/components/icons-v2-generated/index.cjs +2 -2
  69. package/dist/components/icons-v2-generated/index.js +1 -1
  70. package/dist/components/index.cjs +128 -104
  71. package/dist/components/index.cjs.map +1 -1
  72. package/dist/components/index.js +31 -7
  73. package/dist/components/index.js.map +1 -1
  74. package/dist/components/layout/page-heading.d.ts +7 -6
  75. package/dist/components/layout/page-heading.d.ts.map +1 -1
  76. package/dist/components/navigation/app-layout-drawer.d.ts.map +1 -1
  77. package/dist/components/navigation/header-mingo-button.d.ts +4 -2
  78. package/dist/components/navigation/header-mingo-button.d.ts.map +1 -1
  79. package/dist/components/navigation/index.cjs +5 -5
  80. package/dist/components/navigation/index.js +4 -4
  81. package/dist/components/onboarding-guides/index.cjs +28 -28
  82. package/dist/components/onboarding-guides/index.js +6 -6
  83. package/dist/components/tickets/index.cjs +88 -88
  84. package/dist/components/tickets/index.js +7 -7
  85. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  86. package/dist/components/ui/file-manager/index.cjs +50 -50
  87. package/dist/components/ui/file-manager/index.js +1 -1
  88. package/dist/components/ui/index.cjs +29 -5
  89. package/dist/components/ui/index.cjs.map +1 -1
  90. package/dist/components/ui/index.js +28 -4
  91. package/dist/components/ui/modal-v2.d.ts.map +1 -1
  92. package/dist/components/ui/more-actions-menu.d.ts +8 -1
  93. package/dist/components/ui/more-actions-menu.d.ts.map +1 -1
  94. package/dist/components/ui/portal-container.d.ts +21 -0
  95. package/dist/components/ui/portal-container.d.ts.map +1 -0
  96. package/dist/components/ui/tooltip.d.ts.map +1 -1
  97. package/dist/hooks/index.cjs +3 -3
  98. package/dist/hooks/index.js +2 -2
  99. package/dist/index.cjs +29 -5
  100. package/dist/index.cjs.map +1 -1
  101. package/dist/index.js +28 -4
  102. package/package.json +1 -1
  103. package/src/components/chat/chat-archive-page.tsx +93 -0
  104. package/src/components/chat/chat-composer.tsx +99 -0
  105. package/src/components/chat/chat-header-icon-button.tsx +36 -0
  106. package/src/components/chat/chat-panel-header.tsx +114 -0
  107. package/src/components/chat/embeddable-chat.tsx +388 -311
  108. package/src/components/chat/guide-mode-banner.tsx +75 -0
  109. package/src/components/chat/guide-welcome.tsx +199 -0
  110. package/src/components/chat/hooks/use-chat-dialog-manager.ts +227 -0
  111. package/src/components/chat/hooks/use-nats-chat-adapter.ts +85 -0
  112. package/src/components/chat/hooks/use-sse-chat-adapter.ts +8 -0
  113. package/src/components/chat/hooks/use-unified-chat.ts +12 -0
  114. package/src/components/chat/index.ts +9 -0
  115. package/src/components/chat/mingo-chat-history.tsx +308 -0
  116. package/src/components/chat/mingo-chat-modals.tsx +223 -0
  117. package/src/components/chat/mingo-onboarding-card.tsx +5 -8
  118. package/src/components/chat/mingo-welcome.tsx +396 -0
  119. package/src/components/chat/types/unified-chat-state.types.ts +8 -0
  120. package/src/components/icons-v2/brand-logos/fleet-mdm-logo-grey.svg +6 -6
  121. package/src/components/icons-v2/brand-logos/fleet-mdm-logo.svg +6 -6
  122. package/src/components/icons-v2-generated/brand-logos/fleet-mdm-logo-grey-icon.tsx +2 -22
  123. package/src/components/icons-v2-generated/brand-logos/fleet-mdm-logo-icon.tsx +22 -2
  124. package/src/components/layout/page-heading.tsx +13 -7
  125. package/src/components/navigation/app-header.tsx +12 -12
  126. package/src/components/navigation/app-layout-drawer.tsx +25 -15
  127. package/src/components/navigation/header-mingo-button.tsx +22 -7
  128. package/src/components/ui/dropdown-menu.tsx +9 -3
  129. package/src/components/ui/modal-v2.tsx +33 -3
  130. package/src/components/ui/more-actions-menu.tsx +15 -2
  131. package/src/components/ui/portal-container.tsx +28 -0
  132. package/src/components/ui/tooltip.tsx +9 -3
  133. package/src/stories/AppLayoutSidebar.stories.tsx +184 -0
  134. package/src/stories/EmbeddableChat.stories.tsx +114 -0
  135. package/src/stories/GuideWelcome.stories.tsx +124 -0
  136. package/src/stories/MingoChatModals.stories.tsx +82 -0
  137. package/src/stories/MingoWelcome.stories.tsx +119 -0
  138. package/dist/chunk-7UZLRI7W.cjs.map +0 -1
  139. package/dist/chunk-A3PL6ZCF.js.map +0 -1
  140. package/dist/chunk-SZXKKEUH.cjs.map +0 -1
  141. package/dist/chunk-Y3MXGCOW.js.map +0 -1
  142. /package/dist/{chunk-DRPECAXO.js.map → chunk-CPIX5AAR.js.map} +0 -0
  143. /package/dist/{chunk-SRA2QYK6.js.map → chunk-E2AWBQEU.js.map} +0 -0
  144. /package/dist/{chunk-XG7DFRJL.js.map → chunk-FOOQFRJR.js.map} +0 -0
  145. /package/dist/{chunk-24Q2WLIU.js.map → chunk-QYRV6MKX.js.map} +0 -0
  146. /package/dist/{chunk-ZII7TNVA.js.map → chunk-SRCEVQYA.js.map} +0 -0
@@ -0,0 +1,124 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite'
2
+ import { GuideWelcome } from '../components/chat/guide-welcome'
3
+ import { GuideModeBanner } from '../components/chat/guide-mode-banner'
4
+ import { MingoOnboardingCard } from '../components/chat/mingo-onboarding-card'
5
+ import {
6
+ Rocket01Icon,
7
+ CompassIcon,
8
+ NewspaperIcon,
9
+ } from '../components/icons-v2-generated'
10
+
11
+ const ACTIONS = [
12
+ { id: 'recent', label: 'Recent', onClick: () => console.log('recent') },
13
+ { id: 'search', label: 'Search', onClick: () => console.log('search') },
14
+ { id: 'find', label: 'Find', onClick: () => console.log('find') },
15
+ ]
16
+
17
+ // Quick actions are caller-provided (GuideWelcome ships no defaults); these
18
+ // demonstrate the inline chips + the "⋯" overflow menu.
19
+ const SAMPLE_QUICK_ACTIONS = [
20
+ { id: 'how-to-start', label: 'How to start' },
21
+ { id: 'connect-device', label: 'Connect device' },
22
+ { id: 'find-device', label: 'Find device' },
23
+ { id: 'remote-connection', label: 'Remote connection' },
24
+ { id: 'run-scripts', label: 'Run scripts' },
25
+ { id: 'device-software', label: 'Device software' },
26
+ { id: 'bulk-update', label: 'Bulk update' },
27
+ ]
28
+
29
+ const SAMPLE_LIST = (
30
+ <div className="shrink-0 overflow-hidden rounded-md border border-ods-border">
31
+ <MingoOnboardingCard
32
+ icon={<Rocket01Icon size={16} />}
33
+ title="Product Releases"
34
+ slashCommand="/release-notes"
35
+ description="OpenFrame version releases, changelogs, and update notes"
36
+ actions={ACTIONS}
37
+ />
38
+ <MingoOnboardingCard
39
+ icon={<NewspaperIcon size={16} />}
40
+ title="Blog Posts"
41
+ slashCommand="/blogs"
42
+ description="Latest articles, guides, and announcements from the blog"
43
+ actions={ACTIONS}
44
+ />
45
+ <MingoOnboardingCard
46
+ icon={<CompassIcon size={16} />}
47
+ title="Onboarding Guides"
48
+ slashCommand="/getting-started"
49
+ description="Step-by-step guides to get started with OpenFrame"
50
+ actions={ACTIONS}
51
+ />
52
+ </div>
53
+ )
54
+
55
+ const meta: Meta<typeof GuideWelcome> = {
56
+ title: 'Chat/GuideWelcome',
57
+ component: GuideWelcome,
58
+ parameters: {
59
+ layout: 'centered',
60
+ docs: {
61
+ description: {
62
+ component:
63
+ 'Figma node `7532:328214`. Guide-mode chat empty state — a guide-mode banner, a centred greeting sharing one scroll region with the slash-command onboarding list, and a pinned quick-action chip row (overflowing to a "⋯" menu). Content is configurable with OpenFrame defaults.',
64
+ },
65
+ },
66
+ },
67
+ argTypes: {
68
+ title: { control: 'text' },
69
+ subtitle: { control: 'text' },
70
+ quickActions: { control: false },
71
+ onQuickAction: { control: false },
72
+ children: { control: false },
73
+ },
74
+ decorators: [
75
+ (Story) => (
76
+ // Mimic the narrow drawer panel: dark `ods-bg` surface (the guide content
77
+ // background), banner pinned at the top.
78
+ <div className="flex h-[760px] w-[440px] flex-col overflow-hidden rounded-md border border-ods-border bg-ods-bg">
79
+ <GuideModeBanner />
80
+ <div className="flex flex-1 min-h-0 flex-col p-4">
81
+ <Story />
82
+ </div>
83
+ </div>
84
+ ),
85
+ ],
86
+ }
87
+
88
+ export default meta
89
+ type Story = StoryObj<typeof GuideWelcome>
90
+
91
+ /** Full guide-mode empty state with the slash-command list and quick actions. */
92
+ export const Default: Story = {
93
+ args: {
94
+ quickActions: SAMPLE_QUICK_ACTIONS,
95
+ onQuickAction: (a) => console.log('quick action', a.id),
96
+ children: SAMPLE_LIST,
97
+ },
98
+ }
99
+
100
+ /** No slash commands available yet — greeting + quick actions only. */
101
+ export const NoCommands: Story = {
102
+ args: {
103
+ quickActions: SAMPLE_QUICK_ACTIONS,
104
+ onQuickAction: (a) => console.log('quick action', a.id),
105
+ },
106
+ }
107
+
108
+ /** No quick actions supplied (the default) — the chip row is omitted entirely. */
109
+ export const NoQuickActions: Story = {
110
+ args: {
111
+ children: SAMPLE_LIST,
112
+ },
113
+ }
114
+
115
+ /** Custom greeting copy. */
116
+ export const CustomCopy: Story = {
117
+ args: {
118
+ title: 'Ask the Guide',
119
+ subtitle: 'A temporary session for exploring docs and tickets.',
120
+ quickActions: SAMPLE_QUICK_ACTIONS,
121
+ onQuickAction: (a) => console.log('quick action', a.id),
122
+ children: SAMPLE_LIST,
123
+ },
124
+ }
@@ -0,0 +1,82 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite'
2
+ import * as React from 'react'
3
+ import {
4
+ RenameChatModal,
5
+ ArchiveChatModal,
6
+ } from '../components/chat/mingo-chat-modals'
7
+
8
+ const meta: Meta = {
9
+ title: 'Chat/MingoChatModals',
10
+ parameters: {
11
+ layout: 'fullscreen',
12
+ docs: {
13
+ description: {
14
+ component:
15
+ 'Rename Chat (Figma `7592:225962`) and Archive Chat (Figma `7592:226181`) modals, triggered from the chat header `⋯` and the dialog-history row menus. Built on `ModalV2` (Azeret Mono title, p-40 / gap-24, in-house overlay).',
16
+ },
17
+ },
18
+ },
19
+ decorators: [
20
+ (Story) => (
21
+ <div className="min-h-[100dvh] bg-ods-bg">
22
+ <Story />
23
+ </div>
24
+ ),
25
+ ],
26
+ }
27
+
28
+ export default meta
29
+ type Story = StoryObj
30
+
31
+ /** Rename Chat — input seeded with the current name, Cancel + Save. */
32
+ export const Rename: Story = {
33
+ render: () => {
34
+ const [open, setOpen] = React.useState(true)
35
+ return (
36
+ <>
37
+ <button
38
+ type="button"
39
+ className="m-8 rounded-md bg-ods-accent px-4 py-2 text-h3 text-ods-text-on-accent"
40
+ onClick={() => setOpen(true)}
41
+ >
42
+ Open Rename modal
43
+ </button>
44
+ <RenameChatModal
45
+ isOpen={open}
46
+ initialName="Troubleshooting Exchange Online connection issues"
47
+ onClose={() => setOpen(false)}
48
+ onSave={(name) => {
49
+ console.log('save', name)
50
+ setOpen(false)
51
+ }}
52
+ />
53
+ </>
54
+ )
55
+ },
56
+ }
57
+
58
+ /** Archive Chat — confirmation with a destructive red action. */
59
+ export const Archive: Story = {
60
+ render: () => {
61
+ const [open, setOpen] = React.useState(true)
62
+ return (
63
+ <>
64
+ <button
65
+ type="button"
66
+ className="m-8 rounded-md bg-ods-accent px-4 py-2 text-h3 text-ods-text-on-accent"
67
+ onClick={() => setOpen(true)}
68
+ >
69
+ Open Archive modal
70
+ </button>
71
+ <ArchiveChatModal
72
+ isOpen={open}
73
+ onClose={() => setOpen(false)}
74
+ onConfirm={() => {
75
+ console.log('archive confirmed')
76
+ setOpen(false)
77
+ }}
78
+ />
79
+ </>
80
+ )
81
+ },
82
+ }
@@ -0,0 +1,119 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite'
2
+ import { MingoWelcome } from '../components/chat/mingo-welcome'
3
+ import { MingoChatHistory } from '../components/chat/mingo-chat-history'
4
+
5
+ const SAMPLE_HISTORY = (
6
+ <MingoChatHistory
7
+ dialogs={[
8
+ { id: 'd1', title: 'PowerShell script for bulk user creation', unreadMessagesCount: 1 },
9
+ { id: 'd2', title: 'Setting up automated backup verification', unreadMessagesCount: 1 },
10
+ { id: 'd3', title: 'Network segmentation best practices for client' },
11
+ { id: 'd4', title: 'Creating GPO for software deployment' },
12
+ { id: 'd5', title: 'WSUS patching strategy optimization' },
13
+ { id: 'd6', title: 'Analyzing unusual network traffic patterns' },
14
+ ]}
15
+ onSelectDialog={(id) => console.log('select', id)}
16
+ onRequestRename={(d) => console.log('request rename', d.id)}
17
+ onRequestArchive={(d) => console.log('request archive', d.id)}
18
+ />
19
+ )
20
+
21
+ const meta: Meta<typeof MingoWelcome> = {
22
+ title: 'Chat/MingoWelcome',
23
+ component: MingoWelcome,
24
+ parameters: {
25
+ layout: 'centered',
26
+ docs: {
27
+ description: {
28
+ component:
29
+ 'Figma node `7532:222444`. Default (Mingo-mode) chat empty state — a vertically-centred greeting, a 2-up capability grid, an optional "New to OpenFrame?" Guide-chat promo, and a quick-action chip row. Content is configurable with OpenFrame defaults; the only wired action is "Start Guide Chat" (`onStartGuideChat`).',
30
+ },
31
+ },
32
+ },
33
+ argTypes: {
34
+ title: { control: false },
35
+ subtitle: { control: false },
36
+ featureCards: { control: false },
37
+ promo: { control: false },
38
+ quickActions: { control: false },
39
+ onStartGuideChat: { control: false },
40
+ hasExistingChats: { control: 'boolean' },
41
+ },
42
+ decorators: [
43
+ (Story) => (
44
+ // Mimic the narrow drawer panel the empty state lives in: fixed height so
45
+ // the greeting's `flex-1` centring and the pinned grid/chips read
46
+ // correctly.
47
+ <div className="flex h-[760px] w-[440px] flex-col overflow-hidden rounded-md border border-ods-border bg-ods-bg px-5 py-4">
48
+ <Story />
49
+ </div>
50
+ ),
51
+ ],
52
+ }
53
+
54
+ export default meta
55
+ type Story = StoryObj<typeof MingoWelcome>
56
+
57
+ /** Full default state with the Guide CTA wired (promo card + yellow chip). */
58
+ export const Default: Story = {
59
+ args: {
60
+ onStartGuideChat: () => console.log('switch to guide mode'),
61
+ },
62
+ }
63
+
64
+ /** Greeting personalised with a first name. */
65
+ export const WithUserName: Story = {
66
+ args: {
67
+ userName: 'Grace',
68
+ onStartGuideChat: () => console.log('switch to guide mode'),
69
+ },
70
+ }
71
+
72
+ /** Guide mode not configured → the promo card and "Start Guide Chat" chip are
73
+ * suppressed (no dead-end CTA). */
74
+ export const WithoutGuide: Story = {
75
+ args: {},
76
+ }
77
+
78
+ /** Extra quick-action chips appended after the built-in Guide chip. */
79
+ export const WithQuickActions: Story = {
80
+ args: {
81
+ onStartGuideChat: () => console.log('switch to guide mode'),
82
+ quickActions: [
83
+ { id: 'weekly', label: 'Weekly Log Summary' },
84
+ { id: 'more', label: '…' },
85
+ ],
86
+ },
87
+ }
88
+
89
+ /** Returning user (`hasExistingChats`) — the "New to OpenFrame?" notification
90
+ * is hidden and the "Start Guide Chat" chip drops to the muted outline style. */
91
+ export const ReturningUser: Story = {
92
+ args: {
93
+ onStartGuideChat: () => console.log('switch to guide mode'),
94
+ hasExistingChats: true,
95
+ dialogHistory: SAMPLE_HISTORY,
96
+ quickActions: [
97
+ { id: 'weekly', label: 'Weekly Log Summary' },
98
+ { id: 'more', label: '…' },
99
+ ],
100
+ },
101
+ }
102
+
103
+ /** Wide panel (e.g. in-layout / desktop) — the grid columns read roomy. */
104
+ export const Wide: Story = {
105
+ args: {
106
+ onStartGuideChat: () => console.log('switch to guide mode'),
107
+ quickActions: [
108
+ { id: 'weekly', label: 'Weekly Log Summary' },
109
+ { id: 'more', label: '…' },
110
+ ],
111
+ },
112
+ decorators: [
113
+ (Story) => (
114
+ <div className="flex h-[760px] w-[960px] flex-col overflow-hidden rounded-md border border-ods-border bg-ods-bg px-5 py-4">
115
+ <Story />
116
+ </div>
117
+ ),
118
+ ],
119
+ }