@flamingo-stack/openframe-frontend-core 0.0.222 → 0.0.223

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 (183) hide show
  1. package/dist/{chunk-AIKPR6BE.js → chunk-4VHWSAQR.js} +6069 -5235
  2. package/dist/chunk-4VHWSAQR.js.map +1 -0
  3. package/dist/{chunk-GMNE7P7V.cjs → chunk-4WBVMIKQ.cjs} +26 -26
  4. package/dist/{chunk-GMNE7P7V.cjs.map → chunk-4WBVMIKQ.cjs.map} +1 -1
  5. package/dist/{chunk-QYRV6MKX.js → chunk-53EA4QPZ.js} +13 -7
  6. package/dist/chunk-53EA4QPZ.js.map +1 -0
  7. package/dist/{chunk-4JOWZLEL.cjs → chunk-7TKYFZ3L.cjs} +7 -7
  8. package/dist/{chunk-4JOWZLEL.cjs.map → chunk-7TKYFZ3L.cjs.map} +1 -1
  9. package/dist/{chunk-IZA5WF44.cjs → chunk-ABBU7QOM.cjs} +12 -12
  10. package/dist/{chunk-IZA5WF44.cjs.map → chunk-ABBU7QOM.cjs.map} +1 -1
  11. package/dist/{chunk-KM4KK2A6.cjs → chunk-ENDUMC7Z.cjs} +2558 -1724
  12. package/dist/chunk-ENDUMC7Z.cjs.map +1 -0
  13. package/dist/{chunk-CCSEXVI4.js → chunk-GYYGA24C.js} +2 -2
  14. package/dist/{chunk-RMOHKAHA.js → chunk-ISWWP2BH.js} +3 -3
  15. package/dist/{chunk-QNYH3WUU.cjs → chunk-JUWPBMQM.cjs} +13 -7
  16. package/dist/chunk-JUWPBMQM.cjs.map +1 -0
  17. package/dist/{chunk-A2SFHYVF.cjs → chunk-KXLTWANQ.cjs} +10 -10
  18. package/dist/{chunk-A2SFHYVF.cjs.map → chunk-KXLTWANQ.cjs.map} +1 -1
  19. package/dist/{chunk-ND24XSVT.js → chunk-TA6Z2AKD.js} +3 -3
  20. package/dist/chunk-TA6Z2AKD.js.map +1 -0
  21. package/dist/{chunk-HRIAZQ5D.js → chunk-WOKB6RJ7.js} +3 -3
  22. package/dist/components/chat/chat-archive-page.d.ts.map +1 -1
  23. package/dist/components/chat/chat-composer.d.ts.map +1 -1
  24. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  25. package/dist/components/chat/chat-message-skeleton.d.ts +19 -4
  26. package/dist/components/chat/chat-message-skeleton.d.ts.map +1 -1
  27. package/dist/components/chat/chat-panel-header-mobile.d.ts +24 -0
  28. package/dist/components/chat/chat-panel-header-mobile.d.ts.map +1 -0
  29. package/dist/components/chat/chat-panel-header.d.ts +6 -0
  30. package/dist/components/chat/chat-panel-header.d.ts.map +1 -1
  31. package/dist/components/chat/chat-quick-action-row.d.ts +31 -0
  32. package/dist/components/chat/chat-quick-action-row.d.ts.map +1 -0
  33. package/dist/components/chat/embeddable-chat.d.ts +27 -0
  34. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  35. package/dist/components/chat/entity-cards/dispatch.d.ts +14 -0
  36. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  37. package/dist/components/chat/entity-cards/github-activity-card.d.ts +10 -1
  38. package/dist/components/chat/entity-cards/github-activity-card.d.ts.map +1 -1
  39. package/dist/components/chat/guide-welcome.d.ts.map +1 -1
  40. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts +9 -0
  41. package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
  42. package/dist/components/chat/hooks/use-slash-commands.d.ts +26 -0
  43. package/dist/components/chat/hooks/use-slash-commands.d.ts.map +1 -1
  44. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts +12 -1
  45. package/dist/components/chat/hooks/use-sse-chat-adapter.d.ts.map +1 -1
  46. package/dist/components/chat/hooks/use-unified-chat.d.ts +12 -0
  47. package/dist/components/chat/hooks/use-unified-chat.d.ts.map +1 -1
  48. package/dist/components/chat/index.cjs +9 -3
  49. package/dist/components/chat/index.cjs.map +1 -1
  50. package/dist/components/chat/index.js +8 -2
  51. package/dist/components/chat/mingo-chat-history.d.ts +10 -0
  52. package/dist/components/chat/mingo-chat-history.d.ts.map +1 -1
  53. package/dist/components/chat/mingo-info-card.d.ts +63 -0
  54. package/dist/components/chat/mingo-info-card.d.ts.map +1 -0
  55. package/dist/components/chat/mingo-welcome.d.ts +14 -1
  56. package/dist/components/chat/mingo-welcome.d.ts.map +1 -1
  57. package/dist/components/chat/types/chat.types.d.ts +6 -0
  58. package/dist/components/chat/types/chat.types.d.ts.map +1 -1
  59. package/dist/components/chat/types/unified-chat-state.types.d.ts +30 -0
  60. package/dist/components/chat/types/unified-chat-state.types.d.ts.map +1 -1
  61. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  62. package/dist/components/contact/index.cjs +4 -4
  63. package/dist/components/contact/index.js +3 -3
  64. package/dist/components/features/index.cjs +3 -3
  65. package/dist/components/features/index.js +2 -2
  66. package/dist/components/index.cjs +110 -104
  67. package/dist/components/index.cjs.map +1 -1
  68. package/dist/components/index.js +36 -30
  69. package/dist/components/index.js.map +1 -1
  70. package/dist/components/navigation/app-layout-drawer.d.ts +7 -0
  71. package/dist/components/navigation/app-layout-drawer.d.ts.map +1 -1
  72. package/dist/components/navigation/index.cjs +3 -3
  73. package/dist/components/navigation/index.js +2 -2
  74. package/dist/components/onboarding-guides/index.cjs +26 -26
  75. package/dist/components/onboarding-guides/index.js +4 -4
  76. package/dist/components/tickets/index.cjs +67 -67
  77. package/dist/components/tickets/index.js +5 -5
  78. package/dist/components/ui/actions-menu.d.ts +9 -0
  79. package/dist/components/ui/actions-menu.d.ts.map +1 -1
  80. package/dist/components/ui/dropdown-button.d.ts +2 -2
  81. package/dist/components/ui/dropdown-button.d.ts.map +1 -1
  82. package/dist/components/ui/index.cjs +9 -3
  83. package/dist/components/ui/index.cjs.map +1 -1
  84. package/dist/components/ui/index.js +8 -2
  85. package/dist/components/ui/modal-v2.d.ts.map +1 -1
  86. package/dist/components/ui/more-actions-menu.d.ts +13 -0
  87. package/dist/components/ui/more-actions-menu.d.ts.map +1 -1
  88. package/dist/components/ui/square-avatar.d.ts +4 -0
  89. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  90. package/dist/components/ui/textarea.d.ts.map +1 -1
  91. package/dist/hooks/index.cjs +2 -2
  92. package/dist/hooks/index.js +1 -1
  93. package/dist/hooks/ui/use-auto-limit-tags.d.ts +7 -1
  94. package/dist/hooks/ui/use-auto-limit-tags.d.ts.map +1 -1
  95. package/dist/index.cjs +9 -3
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.js +8 -2
  98. package/package.json +1 -1
  99. package/src/components/chat/chat-archive-page.tsx +32 -7
  100. package/src/components/chat/chat-composer.tsx +6 -2
  101. package/src/components/chat/chat-message-enhanced.tsx +24 -7
  102. package/src/components/chat/chat-message-list.tsx +1 -1
  103. package/src/components/chat/chat-message-skeleton.tsx +60 -60
  104. package/src/components/chat/chat-panel-header-mobile.tsx +94 -0
  105. package/src/components/chat/chat-panel-header.tsx +78 -50
  106. package/src/components/chat/chat-quick-action-row.tsx +146 -0
  107. package/src/components/chat/embeddable-chat.tsx +140 -45
  108. package/src/components/chat/entity-cards/dispatch.tsx +770 -232
  109. package/src/components/chat/entity-cards/github-activity-card.tsx +9 -3
  110. package/src/components/chat/guide-welcome.tsx +11 -8
  111. package/src/components/chat/hooks/use-nats-chat-adapter.ts +80 -7
  112. package/src/components/chat/hooks/use-slash-commands.ts +39 -0
  113. package/src/components/chat/hooks/use-sse-chat-adapter.ts +49 -45
  114. package/src/components/chat/hooks/use-unified-chat.ts +31 -8
  115. package/src/components/chat/mingo-chat-history.tsx +118 -36
  116. package/src/components/chat/mingo-info-card.tsx +214 -0
  117. package/src/components/chat/mingo-welcome.tsx +89 -36
  118. package/src/components/chat/types/chat.types.ts +4 -0
  119. package/src/components/chat/types/unified-chat-state.types.ts +35 -0
  120. package/src/components/chat/utils/process-historical-messages.ts +8 -0
  121. package/src/components/content-loading-container.tsx +1 -1
  122. package/src/components/empty-state.tsx +3 -3
  123. package/src/components/faq-accordion.tsx +2 -2
  124. package/src/components/features/changelog-manager.tsx +2 -2
  125. package/src/components/features/highlight-config-section.tsx +2 -2
  126. package/src/components/features/og-editor-preview.tsx +3 -3
  127. package/src/components/features/release-media-manager.tsx +2 -2
  128. package/src/components/loading/card-skeleton.tsx +3 -3
  129. package/src/components/loading/device-card-skeleton.tsx +1 -1
  130. package/src/components/loading/margin-report-skeleton.tsx +2 -2
  131. package/src/components/loading/organization-card-skeleton.tsx +1 -1
  132. package/src/components/loading/organization-icon-skeleton.tsx +1 -1
  133. package/src/components/loading/page-layout-skeleton.tsx +9 -9
  134. package/src/components/loading/users-grid-skeleton.tsx +2 -2
  135. package/src/components/logs-list.tsx +1 -1
  136. package/src/components/media-carousel.tsx +1 -1
  137. package/src/components/navigation/app-layout-drawer.tsx +70 -6
  138. package/src/components/open-source-features.tsx +2 -2
  139. package/src/components/ui/actions-menu.tsx +36 -13
  140. package/src/components/ui/allowed-domains-input.tsx +3 -3
  141. package/src/components/ui/cursor-pagination.tsx +1 -1
  142. package/src/components/ui/dropdown-button.tsx +6 -6
  143. package/src/components/ui/info-row.tsx +2 -2
  144. package/src/components/ui/modal-v2.tsx +8 -1
  145. package/src/components/ui/more-actions-menu.tsx +13 -0
  146. package/src/components/ui/square-avatar.tsx +6 -1
  147. package/src/components/ui/tags-input.tsx +1 -1
  148. package/src/components/ui/textarea.tsx +18 -4
  149. package/src/components/vendor-icon.tsx +1 -1
  150. package/src/components/vendor-tag.tsx +1 -1
  151. package/src/components/why-it-matters.tsx +1 -1
  152. package/src/hooks/ui/use-auto-limit-tags.ts +22 -8
  153. package/src/stories/ActionsMenu.stories.tsx +256 -0
  154. package/src/stories/AppLayoutSidebar.stories.tsx +6 -0
  155. package/src/stories/Board.stories.tsx +1 -1
  156. package/src/stories/ChatMingoInfoCards.stories.tsx +748 -0
  157. package/src/stories/ChatTicketList.stories.tsx +1 -1
  158. package/src/stories/DataTable.stories.tsx +17 -13
  159. package/src/stories/EmbeddableChat.stories.tsx +233 -1
  160. package/src/stories/MingoInfoCard.stories.tsx +193 -0
  161. package/src/stories/MingoOnboardingCard.stories.tsx +1 -1
  162. package/src/stories/Modal.stories.tsx +1 -0
  163. package/src/stories/NotificationDrawer.stories.tsx +14 -3
  164. package/src/stories/PageActions.stories.tsx +4 -4
  165. package/src/stories/PageContainer.stories.tsx +5 -5
  166. package/src/stories/PageLayout.stories.tsx +1 -1
  167. package/src/stories/TabSelector.stories.tsx +2 -2
  168. package/src/stories/Tag.stories.tsx +10 -5
  169. package/src/stories/TicketInfoSection.stories.tsx +23 -11
  170. package/src/stories/Toaster.stories.tsx +5 -5
  171. package/src/stories/__fixtures__/chat-card-decorator.tsx +44 -0
  172. package/dist/chunk-AIKPR6BE.js.map +0 -1
  173. package/dist/chunk-KM4KK2A6.cjs.map +0 -1
  174. package/dist/chunk-ND24XSVT.js.map +0 -1
  175. package/dist/chunk-QNYH3WUU.cjs.map +0 -1
  176. package/dist/chunk-QYRV6MKX.js.map +0 -1
  177. package/src/stories/.TicketDescriptionViewer.stories.md +0 -39
  178. package/src/stories/.TicketKnowledgeBaseList.stories.md +0 -36
  179. package/src/stories/TicketDescriptionViewer.stories.tsx +0 -70
  180. package/src/stories/TicketKnowledgeBaseList.stories.tsx +0 -51
  181. /package/dist/{chunk-CCSEXVI4.js.map → chunk-GYYGA24C.js.map} +0 -0
  182. /package/dist/{chunk-RMOHKAHA.js.map → chunk-ISWWP2BH.js.map} +0 -0
  183. /package/dist/{chunk-HRIAZQ5D.js.map → chunk-WOKB6RJ7.js.map} +0 -0
@@ -0,0 +1,256 @@
1
+ import type { Meta, StoryObj } from '@storybook/nextjs-vite';
2
+ import { fn } from 'storybook/test';
3
+ import {
4
+ ArrowRightUpIcon,
5
+ Copy01Icon,
6
+ Download01Icon,
7
+ EyeIcon,
8
+ Link01Icon,
9
+ PencilIcon,
10
+ Settings01Icon,
11
+ ShareIcon,
12
+ StarIcon,
13
+ TrashBlankIcon,
14
+ } from '../components/icons-v2-generated';
15
+ import {
16
+ ActionsMenu,
17
+ ActionsMenuDropdown,
18
+ type ActionsMenuGroup,
19
+ } from '../components/ui/actions-menu';
20
+
21
+ const meta = {
22
+ title: 'UI/ActionsMenu',
23
+ component: ActionsMenu,
24
+ parameters: {
25
+ layout: 'centered',
26
+ docs: {
27
+ description: {
28
+ component:
29
+ 'Grouped action menu rendered as a flat panel. Supports plain items, icons, checkboxes, submenus, separators, destructive (danger) rows, navigation links, and an optional secondary icon action on the right of a row. Use `ActionsMenu` to render the panel inline, or `ActionsMenuDropdown` to attach it to a trigger button (built on Radix DropdownMenu).',
30
+ },
31
+ },
32
+ },
33
+ tags: ['autodocs'],
34
+ argTypes: {
35
+ groups: {
36
+ description: 'Array of groups, each holding an array of menu items',
37
+ },
38
+ className: {
39
+ control: 'text',
40
+ description: 'Additional CSS classes for the menu panel',
41
+ },
42
+ onItemClick: {
43
+ description: 'Fires when any item is activated',
44
+ },
45
+ },
46
+ decorators: [
47
+ (Story) => (
48
+ <div
49
+ style={{
50
+ padding: '4rem',
51
+ display: 'flex',
52
+ justifyContent: 'center',
53
+ alignItems: 'center',
54
+ minHeight: '400px',
55
+ }}
56
+ >
57
+ <Story />
58
+ </div>
59
+ ),
60
+ ],
61
+ } satisfies Meta<typeof ActionsMenu>;
62
+
63
+ export default meta;
64
+ type Story = StoryObj<typeof meta>;
65
+
66
+ /**
67
+ * A simple single-group menu with icons.
68
+ */
69
+ export const Default: Story = {
70
+ args: {
71
+ groups: [
72
+ {
73
+ items: [
74
+ { id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: fn() },
75
+ { id: 'duplicate', label: 'Duplicate', icon: <Copy01Icon />, onClick: fn() },
76
+ { id: 'share', label: 'Share', icon: <ShareIcon />, onClick: fn() },
77
+ ],
78
+ },
79
+ ],
80
+ },
81
+ };
82
+
83
+ /**
84
+ * Multiple groups separated by a divider, with a destructive row in the last group.
85
+ */
86
+ export const GroupedWithDanger: Story = {
87
+ args: {
88
+ groups: [
89
+ {
90
+ id: 'primary',
91
+ separator: true,
92
+ items: [
93
+ { id: 'view', label: 'View details', icon: <EyeIcon />, onClick: fn() },
94
+ { id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: fn() },
95
+ { id: 'download', label: 'Download', icon: <Download01Icon />, onClick: fn() },
96
+ ],
97
+ },
98
+ {
99
+ id: 'destructive',
100
+ items: [
101
+ {
102
+ id: 'delete',
103
+ label: 'Delete',
104
+ icon: <TrashBlankIcon />,
105
+ danger: true,
106
+ onClick: fn(),
107
+ },
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ };
113
+
114
+ /**
115
+ * Checkbox items keep the menu open on click and reflect a `checked` state.
116
+ */
117
+ export const WithCheckboxes: Story = {
118
+ args: {
119
+ groups: [
120
+ {
121
+ items: [
122
+ {
123
+ id: 'starred',
124
+ label: 'Starred',
125
+ type: 'checkbox',
126
+ checked: true,
127
+ icon: <StarIcon />,
128
+ onClick: fn(),
129
+ },
130
+ {
131
+ id: 'archived',
132
+ label: 'Archived',
133
+ type: 'checkbox',
134
+ checked: false,
135
+ onClick: fn(),
136
+ },
137
+ ],
138
+ },
139
+ ],
140
+ },
141
+ };
142
+
143
+ /**
144
+ * A submenu expands a nested set of items on hover/focus. Submenus rely on the
145
+ * Radix DropdownMenu root, so they must be rendered through `ActionsMenuDropdown`
146
+ * (the inline `ActionsMenu` panel has no menu context).
147
+ */
148
+ export const WithSubmenu: StoryObj<typeof ActionsMenuDropdown> = {
149
+ render: (args) => <ActionsMenuDropdown {...args} />,
150
+ args: {
151
+ groups: [
152
+ {
153
+ items: [
154
+ { id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: fn() },
155
+ {
156
+ id: 'share',
157
+ label: 'Share',
158
+ type: 'submenu',
159
+ icon: <ShareIcon />,
160
+ submenu: [
161
+ { id: 'copy-link', label: 'Copy link', icon: <Link01Icon />, onClick: fn() },
162
+ { id: 'share-via', label: 'Share via…', icon: <ShareIcon />, onClick: fn() },
163
+ ],
164
+ },
165
+ { id: 'settings', label: 'Settings', icon: <Settings01Icon />, onClick: fn() },
166
+ ],
167
+ },
168
+ ],
169
+ onItemClick: fn(),
170
+ },
171
+ };
172
+
173
+ /**
174
+ * Disabled rows are non-interactive and dimmed.
175
+ */
176
+ export const WithDisabledItem: Story = {
177
+ args: {
178
+ groups: [
179
+ {
180
+ items: [
181
+ { id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: fn() },
182
+ {
183
+ id: 'duplicate',
184
+ label: 'Duplicate (unavailable)',
185
+ icon: <Copy01Icon />,
186
+ disabled: true,
187
+ onClick: fn(),
188
+ },
189
+ { id: 'share', label: 'Share', icon: <ShareIcon />, onClick: fn() },
190
+ ],
191
+ },
192
+ ],
193
+ },
194
+ };
195
+
196
+ /**
197
+ * A row can carry a secondary icon action — a 40px button on the right with a
198
+ * divider that is independently clickable (e.g. "open in new tab").
199
+ */
200
+ export const WithSecondaryAction: Story = {
201
+ args: {
202
+ groups: [
203
+ {
204
+ items: [
205
+ {
206
+ id: 'doc',
207
+ label: 'Open document',
208
+ icon: <EyeIcon />,
209
+ onClick: fn(),
210
+ iconAction: {
211
+ icon: <ArrowRightUpIcon className="w-5 h-5 text-ods-text-secondary" />,
212
+ 'aria-label': 'Open in new tab',
213
+ href: 'https://example.com',
214
+ openInNewTab: true,
215
+ },
216
+ },
217
+ ],
218
+ },
219
+ ],
220
+ },
221
+ };
222
+
223
+ const dropdownGroups: ActionsMenuGroup[] = [
224
+ {
225
+ id: 'primary',
226
+ separator: true,
227
+ items: [
228
+ { id: 'view', label: 'View details', icon: <EyeIcon />, onClick: fn() },
229
+ { id: 'edit', label: 'Edit', icon: <PencilIcon />, onClick: fn() },
230
+ { id: 'duplicate', label: 'Duplicate', icon: <Copy01Icon />, onClick: fn() },
231
+ ],
232
+ },
233
+ {
234
+ id: 'destructive',
235
+ items: [
236
+ {
237
+ id: 'delete',
238
+ label: 'Delete',
239
+ icon: <TrashBlankIcon />,
240
+ danger: true,
241
+ onClick: fn(),
242
+ },
243
+ ],
244
+ },
245
+ ];
246
+
247
+ /**
248
+ * `ActionsMenuDropdown` attaches the menu to a default ellipsis trigger button.
249
+ */
250
+ export const Dropdown: StoryObj<typeof ActionsMenuDropdown> = {
251
+ render: (args) => <ActionsMenuDropdown {...args} />,
252
+ args: {
253
+ groups: dropdownGroups,
254
+ onItemClick: fn(),
255
+ },
256
+ };
@@ -49,6 +49,12 @@ sidebar is persistent: clicks on the header/sidebar/overlay do not close it
49
49
  },
50
50
  },
51
51
  tags: ['autodocs'],
52
+ args: {
53
+ children: null,
54
+ sidebarConfig: { items: navigationItems, onNavigate: fn(), onToggleMinimized: fn() },
55
+ headerProps: {},
56
+ mobileBurgerMenuProps: {},
57
+ },
52
58
  } satisfies Meta<typeof AppLayout>
53
59
 
54
60
  export default meta
@@ -102,7 +102,7 @@ export const Default: Story = {
102
102
  <Board
103
103
  columns={columns}
104
104
  onChange={c => setColumns(prev => applyChange(prev, c))}
105
- onTicketClick={id => console.log('click', id)}
105
+ getTicketHref={id => `#${id}`}
106
106
  onAddTicket={id => console.log('add to', id)}
107
107
  />
108
108
  </div>