@agentiffai/design 0.1.0
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/CHANGELOG.md +35 -0
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/assets/layout/main-pane-section.png +0 -0
- package/assets/layout/nav-complete.png +0 -0
- package/assets/layout/nav-horizontal-section.png +0 -0
- package/assets/layout/nav-vertical-section.png +0 -0
- package/assets/layout/pane-section-dropdowns.png +0 -0
- package/assets/layout/pane-section-header.png +0 -0
- package/dist/Window-B6e_UfLV.d.ts +429 -0
- package/dist/Window-CgGFIYHS.d.cts +429 -0
- package/dist/chunk-CNVJ5UF2.js +2069 -0
- package/dist/chunk-CNVJ5UF2.js.map +1 -0
- package/dist/chunk-CVHHTWDQ.cjs +72 -0
- package/dist/chunk-CVHHTWDQ.cjs.map +1 -0
- package/dist/chunk-H4VHCHCP.cjs +1268 -0
- package/dist/chunk-H4VHCHCP.cjs.map +1 -0
- package/dist/chunk-JQ6Q7MDQ.js +67 -0
- package/dist/chunk-JQ6Q7MDQ.js.map +1 -0
- package/dist/chunk-KNSPBTTJ.cjs +2158 -0
- package/dist/chunk-KNSPBTTJ.cjs.map +1 -0
- package/dist/chunk-MNXQDDWP.js +2143 -0
- package/dist/chunk-MNXQDDWP.js.map +1 -0
- package/dist/chunk-P4Q3MHIY.cjs +2093 -0
- package/dist/chunk-P4Q3MHIY.cjs.map +1 -0
- package/dist/chunk-PAOXD7DF.js +1253 -0
- package/dist/chunk-PAOXD7DF.js.map +1 -0
- package/dist/copilotkit/index.cjs +611 -0
- package/dist/copilotkit/index.cjs.map +1 -0
- package/dist/copilotkit/index.d.cts +162 -0
- package/dist/copilotkit/index.d.ts +162 -0
- package/dist/copilotkit/index.js +538 -0
- package/dist/copilotkit/index.js.map +1 -0
- package/dist/icons/index.cjs +48 -0
- package/dist/icons/index.cjs.map +1 -0
- package/dist/icons/index.d.cts +375 -0
- package/dist/icons/index.d.ts +375 -0
- package/dist/icons/index.js +3 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.cjs +536 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d-DYU1eVeb.d.cts +252 -0
- package/dist/index.d-DYU1eVeb.d.ts +252 -0
- package/dist/index.d.cts +185 -0
- package/dist/index.d.ts +185 -0
- package/dist/index.js +358 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/index.cjs +48 -0
- package/dist/layout/index.cjs.map +1 -0
- package/dist/layout/index.d.cts +206 -0
- package/dist/layout/index.d.ts +206 -0
- package/dist/layout/index.js +3 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/theme/index.cjs +24 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.d.cts +95 -0
- package/dist/theme/index.d.ts +95 -0
- package/dist/theme/index.js +3 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +148 -0
- package/public/assets/bg-set/brand-logos/Google.svg +1 -0
- package/public/assets/bg-set/brand-logos/Google2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft.svg +1 -0
- package/public/assets/bg-set/brand-logos/Microsoft2.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack.svg +1 -0
- package/public/assets/bg-set/brand-logos/Slack2.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube.svg +1 -0
- package/public/assets/bg-set/brand-logos/YouTube2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=lg, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=md, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=sm, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xl, Type=Waves Rays2.svg +1 -0
- package/public/assets/bg-set/pattern/Size=xs, Type=Waves Rays2.svg +1 -0
- package/public/assets/icon-set/Icon-add-circle-fill.svg +1 -0
- package/public/assets/icon-set/Icon-calendar-fill.svg +1 -0
- package/public/assets/icon-set/Icon-chat-1-fill.svg +1 -0
- package/public/assets/icon-set/Icon-download-2-fill.svg +1 -0
- package/public/assets/icon-set/Icon-home-fill.svg +1 -0
- package/public/assets/icon-set/Icon-mic-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-3-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-fill.svg +1 -0
- package/public/assets/icon-set/Icon-settings-line.svg +1 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkH4VHCHCP_cjs = require('./chunk-H4VHCHCP.cjs');
|
|
4
|
+
var chunkKNSPBTTJ_cjs = require('./chunk-KNSPBTTJ.cjs');
|
|
5
|
+
var chunkP4Q3MHIY_cjs = require('./chunk-P4Q3MHIY.cjs');
|
|
6
|
+
var chunkCVHHTWDQ_cjs = require('./chunk-CVHHTWDQ.cjs');
|
|
7
|
+
var button = require('@react-aria/button');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var styled = require('styled-components');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
var styled__default = /*#__PURE__*/_interopDefault(styled);
|
|
15
|
+
|
|
16
|
+
var NotificationCardContainer = styled__default.default.div`
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
width: 100%;
|
|
20
|
+
max-width: 600px;
|
|
21
|
+
padding: 20px;
|
|
22
|
+
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
|
23
|
+
border-radius: 20px;
|
|
24
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
25
|
+
gap: 12px;
|
|
26
|
+
`;
|
|
27
|
+
var SectionHeader = styled__default.default.button`
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: space-between;
|
|
31
|
+
width: 100%;
|
|
32
|
+
padding: 8px 4px;
|
|
33
|
+
border: none;
|
|
34
|
+
background: transparent;
|
|
35
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
|
|
36
|
+
'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
37
|
+
font-size: 16px;
|
|
38
|
+
font-weight: 700;
|
|
39
|
+
color: #2c3e50;
|
|
40
|
+
text-align: left;
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
transition: all 0.2s ease;
|
|
43
|
+
|
|
44
|
+
&:hover {
|
|
45
|
+
color: #1a252f;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&:focus-visible {
|
|
49
|
+
outline: 2px solid #5b9fff;
|
|
50
|
+
outline-offset: 2px;
|
|
51
|
+
border-radius: 8px;
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
var ChevronIcon = styled__default.default.span`
|
|
55
|
+
display: inline-flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
transition: transform 0.2s ease;
|
|
59
|
+
color: #6c757d;
|
|
60
|
+
|
|
61
|
+
${(props) => props.$isExpanded ? `
|
|
62
|
+
transform: rotate(0deg);
|
|
63
|
+
` : `
|
|
64
|
+
transform: rotate(-90deg);
|
|
65
|
+
`}
|
|
66
|
+
|
|
67
|
+
svg {
|
|
68
|
+
width: 16px;
|
|
69
|
+
height: 16px;
|
|
70
|
+
}
|
|
71
|
+
`;
|
|
72
|
+
var SectionContent = styled__default.default.div`
|
|
73
|
+
display: flex;
|
|
74
|
+
flex-direction: column;
|
|
75
|
+
gap: 8px;
|
|
76
|
+
padding-left: 0;
|
|
77
|
+
margin-top: 4px;
|
|
78
|
+
`;
|
|
79
|
+
var NotificationItemWrapper = styled__default.default.button`
|
|
80
|
+
display: flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
gap: 12px;
|
|
83
|
+
width: 100%;
|
|
84
|
+
padding: ${(props) => props.$isSelected ? "12px 16px" : "10px 12px"};
|
|
85
|
+
border: none;
|
|
86
|
+
cursor: pointer;
|
|
87
|
+
text-align: left;
|
|
88
|
+
transition: all 0.2s ease;
|
|
89
|
+
border-radius: ${(props) => props.$isSelected ? "12px" : "10px"};
|
|
90
|
+
|
|
91
|
+
/* Default state - transparent background */
|
|
92
|
+
background-color: ${(props) => props.$isSelected ? "#2c3e50" : "transparent"};
|
|
93
|
+
|
|
94
|
+
/* Hover state */
|
|
95
|
+
&:hover:not(:disabled) {
|
|
96
|
+
background-color: ${(props) => props.$isSelected ? "#1a252f" : "rgba(255, 255, 255, 0.5)"};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Active state */
|
|
100
|
+
&:active:not(:disabled) {
|
|
101
|
+
transform: scale(0.99);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Focus state */
|
|
105
|
+
&:focus-visible {
|
|
106
|
+
outline: 2px solid ${(props) => props.$isSelected ? "#ffffff" : "#5b9fff"};
|
|
107
|
+
outline-offset: 2px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Disabled state */
|
|
111
|
+
&:disabled {
|
|
112
|
+
cursor: not-allowed;
|
|
113
|
+
opacity: 0.5;
|
|
114
|
+
}
|
|
115
|
+
`;
|
|
116
|
+
var ItemIcon = styled__default.default.span`
|
|
117
|
+
display: inline-flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
width: 24px;
|
|
121
|
+
height: 24px;
|
|
122
|
+
flex-shrink: 0;
|
|
123
|
+
border-radius: ${(props) => props.$hasCustomIcon ? "6px" : "50%"};
|
|
124
|
+
background-color: ${(props) => props.$iconColor || "transparent"};
|
|
125
|
+
color: ${(props) => props.$hasCustomIcon ? "#ffffff" : "#6c757d"};
|
|
126
|
+
font-size: ${(props) => props.$hasCustomIcon ? "16px" : "14px"};
|
|
127
|
+
|
|
128
|
+
/* Default circle icon styling */
|
|
129
|
+
${(props) => !props.$hasCustomIcon && `
|
|
130
|
+
svg {
|
|
131
|
+
width: 20px;
|
|
132
|
+
height: 20px;
|
|
133
|
+
}
|
|
134
|
+
`}
|
|
135
|
+
|
|
136
|
+
/* Custom icon (emoji or colored icon) styling */
|
|
137
|
+
${(props) => props.$hasCustomIcon && `
|
|
138
|
+
padding: 2px;
|
|
139
|
+
`}
|
|
140
|
+
`;
|
|
141
|
+
var ItemText = styled__default.default.span`
|
|
142
|
+
flex: 1;
|
|
143
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
|
|
144
|
+
'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
|
145
|
+
font-size: 15px;
|
|
146
|
+
font-weight: ${(props) => props.$isSelected ? "500" : "400"};
|
|
147
|
+
color: ${(props) => props.$isSelected ? "#ffffff" : "#5a5a5a"};
|
|
148
|
+
line-height: 1.5;
|
|
149
|
+
word-wrap: break-word;
|
|
150
|
+
`;
|
|
151
|
+
var MenuButton = styled__default.default.button`
|
|
152
|
+
display: inline-flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
justify-content: center;
|
|
155
|
+
width: 32px;
|
|
156
|
+
height: 32px;
|
|
157
|
+
padding: 0;
|
|
158
|
+
border: none;
|
|
159
|
+
border-radius: 6px;
|
|
160
|
+
background-color: transparent;
|
|
161
|
+
color: #ffffff;
|
|
162
|
+
cursor: pointer;
|
|
163
|
+
transition: all 0.2s ease;
|
|
164
|
+
flex-shrink: 0;
|
|
165
|
+
|
|
166
|
+
&:hover:not(:disabled) {
|
|
167
|
+
background-color: rgba(255, 255, 255, 0.15);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
&:active:not(:disabled) {
|
|
171
|
+
background-color: rgba(255, 255, 255, 0.25);
|
|
172
|
+
transform: scale(0.95);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
&:focus-visible {
|
|
176
|
+
outline: 2px solid #ffffff;
|
|
177
|
+
outline-offset: 2px;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
svg {
|
|
181
|
+
width: 20px;
|
|
182
|
+
height: 20px;
|
|
183
|
+
}
|
|
184
|
+
`;
|
|
185
|
+
var NotificationCard = ({
|
|
186
|
+
sections,
|
|
187
|
+
onItemClick,
|
|
188
|
+
selectedItemId,
|
|
189
|
+
onMenuClick,
|
|
190
|
+
className,
|
|
191
|
+
"aria-label": ariaLabel = "Notification history"
|
|
192
|
+
}) => {
|
|
193
|
+
const [collapsedSections, setCollapsedSections] = react.useState(() => {
|
|
194
|
+
const initial = {};
|
|
195
|
+
for (const section of sections) {
|
|
196
|
+
initial[section.title] = section.isCollapsed || false;
|
|
197
|
+
}
|
|
198
|
+
return initial;
|
|
199
|
+
});
|
|
200
|
+
const toggleSection = (sectionTitle) => {
|
|
201
|
+
setCollapsedSections((prev) => ({
|
|
202
|
+
...prev,
|
|
203
|
+
[sectionTitle]: !prev[sectionTitle]
|
|
204
|
+
}));
|
|
205
|
+
};
|
|
206
|
+
return /* @__PURE__ */ jsxRuntime.jsx(NotificationCardContainer, { className, "aria-label": ariaLabel, role: "region", children: sections.map((section) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
207
|
+
SectionComponent,
|
|
208
|
+
{
|
|
209
|
+
section,
|
|
210
|
+
isCollapsed: collapsedSections[section.title] ?? false,
|
|
211
|
+
onToggle: () => toggleSection(section.title),
|
|
212
|
+
onItemClick,
|
|
213
|
+
selectedItemId,
|
|
214
|
+
onMenuClick
|
|
215
|
+
},
|
|
216
|
+
section.title
|
|
217
|
+
)) });
|
|
218
|
+
};
|
|
219
|
+
var SectionComponent = ({
|
|
220
|
+
section,
|
|
221
|
+
isCollapsed,
|
|
222
|
+
onToggle,
|
|
223
|
+
onItemClick,
|
|
224
|
+
selectedItemId,
|
|
225
|
+
onMenuClick
|
|
226
|
+
}) => {
|
|
227
|
+
const headerRef = react.useRef(null);
|
|
228
|
+
const { buttonProps } = button.useButton(
|
|
229
|
+
{
|
|
230
|
+
onPress: onToggle,
|
|
231
|
+
"aria-label": `${section.title} section, ${isCollapsed ? "collapsed" : "expanded"}`,
|
|
232
|
+
"aria-expanded": !isCollapsed
|
|
233
|
+
},
|
|
234
|
+
headerRef
|
|
235
|
+
);
|
|
236
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { "aria-label": `${section.title} notifications`, children: [
|
|
237
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SectionHeader, { ...buttonProps, ref: headerRef, children: [
|
|
238
|
+
section.title,
|
|
239
|
+
/* @__PURE__ */ jsxRuntime.jsx(ChevronIcon, { $isExpanded: !isCollapsed, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
240
|
+
"svg",
|
|
241
|
+
{
|
|
242
|
+
width: "16",
|
|
243
|
+
height: "16",
|
|
244
|
+
viewBox: "0 0 16 16",
|
|
245
|
+
fill: "none",
|
|
246
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
247
|
+
role: "img",
|
|
248
|
+
"aria-label": "Expand/collapse icon",
|
|
249
|
+
children: [
|
|
250
|
+
/* @__PURE__ */ jsxRuntime.jsx("title", { children: "Expand/collapse icon" }),
|
|
251
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
252
|
+
"path",
|
|
253
|
+
{
|
|
254
|
+
d: "M4 6L8 10L12 6",
|
|
255
|
+
stroke: "currentColor",
|
|
256
|
+
strokeWidth: "2",
|
|
257
|
+
strokeLinecap: "round",
|
|
258
|
+
strokeLinejoin: "round"
|
|
259
|
+
}
|
|
260
|
+
)
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
) })
|
|
264
|
+
] }),
|
|
265
|
+
!isCollapsed && /* @__PURE__ */ jsxRuntime.jsx(SectionContent, { role: "list", children: section.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
266
|
+
NotificationItemComponent,
|
|
267
|
+
{
|
|
268
|
+
item,
|
|
269
|
+
isSelected: item.id === selectedItemId,
|
|
270
|
+
onItemClick,
|
|
271
|
+
onMenuClick
|
|
272
|
+
},
|
|
273
|
+
item.id
|
|
274
|
+
)) })
|
|
275
|
+
] });
|
|
276
|
+
};
|
|
277
|
+
var NotificationItemComponent = ({
|
|
278
|
+
item,
|
|
279
|
+
isSelected,
|
|
280
|
+
onItemClick,
|
|
281
|
+
onMenuClick
|
|
282
|
+
}) => {
|
|
283
|
+
const itemRef = react.useRef(null);
|
|
284
|
+
const menuRef = react.useRef(null);
|
|
285
|
+
const { buttonProps: itemButtonProps } = button.useButton(
|
|
286
|
+
{
|
|
287
|
+
onPress: () => onItemClick?.(item),
|
|
288
|
+
"aria-label": `Notification: ${item.text}`,
|
|
289
|
+
"aria-current": isSelected ? "true" : void 0
|
|
290
|
+
},
|
|
291
|
+
itemRef
|
|
292
|
+
);
|
|
293
|
+
const { buttonProps: menuButtonProps } = button.useButton(
|
|
294
|
+
{
|
|
295
|
+
onPress: () => onMenuClick?.(item),
|
|
296
|
+
"aria-label": `Options for ${item.text}`
|
|
297
|
+
},
|
|
298
|
+
menuRef
|
|
299
|
+
);
|
|
300
|
+
const handleItemKeyDown = (e) => {
|
|
301
|
+
if (isSelected && e.key === "Tab" && !e.shiftKey) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
306
|
+
NotificationItemWrapper,
|
|
307
|
+
{
|
|
308
|
+
...itemButtonProps,
|
|
309
|
+
ref: itemRef,
|
|
310
|
+
$isSelected: isSelected,
|
|
311
|
+
$hasIcon: !!item.icon,
|
|
312
|
+
role: "listitem",
|
|
313
|
+
onKeyDown: handleItemKeyDown,
|
|
314
|
+
children: [
|
|
315
|
+
/* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { $iconColor: item.iconColor, $hasCustomIcon: !!item.icon, children: item.icon || /* @__PURE__ */ jsxRuntime.jsx(
|
|
316
|
+
"svg",
|
|
317
|
+
{
|
|
318
|
+
width: "20",
|
|
319
|
+
height: "20",
|
|
320
|
+
viewBox: "0 0 20 20",
|
|
321
|
+
fill: "none",
|
|
322
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
323
|
+
"aria-hidden": "true",
|
|
324
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "10", r: "8", stroke: "currentColor", strokeWidth: "2" })
|
|
325
|
+
}
|
|
326
|
+
) }),
|
|
327
|
+
/* @__PURE__ */ jsxRuntime.jsx(ItemText, { $isSelected: isSelected, children: item.text }),
|
|
328
|
+
isSelected && onMenuClick && /* @__PURE__ */ jsxRuntime.jsx(
|
|
329
|
+
MenuButton,
|
|
330
|
+
{
|
|
331
|
+
...menuButtonProps,
|
|
332
|
+
ref: menuRef,
|
|
333
|
+
onClick: (e) => {
|
|
334
|
+
e.stopPropagation();
|
|
335
|
+
menuButtonProps.onClick?.(e);
|
|
336
|
+
},
|
|
337
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
338
|
+
"svg",
|
|
339
|
+
{
|
|
340
|
+
width: "20",
|
|
341
|
+
height: "20",
|
|
342
|
+
viewBox: "0 0 20 20",
|
|
343
|
+
fill: "none",
|
|
344
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
345
|
+
"aria-hidden": "true",
|
|
346
|
+
children: [
|
|
347
|
+
/* @__PURE__ */ jsxRuntime.jsx("title", { children: "More options" }),
|
|
348
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "4", r: "1.5", fill: "currentColor" }),
|
|
349
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "10", r: "1.5", fill: "currentColor" }),
|
|
350
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "10", cy: "16", r: "1.5", fill: "currentColor" })
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
)
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
);
|
|
359
|
+
};
|
|
360
|
+
NotificationCard.displayName = "NotificationCard";
|
|
361
|
+
|
|
362
|
+
Object.defineProperty(exports, "FacebookIcon", {
|
|
363
|
+
enumerable: true,
|
|
364
|
+
get: function () { return chunkH4VHCHCP_cjs.FacebookIcon; }
|
|
365
|
+
});
|
|
366
|
+
Object.defineProperty(exports, "GmailIcon", {
|
|
367
|
+
enumerable: true,
|
|
368
|
+
get: function () { return chunkH4VHCHCP_cjs.GmailIcon; }
|
|
369
|
+
});
|
|
370
|
+
Object.defineProperty(exports, "InstagramIcon", {
|
|
371
|
+
enumerable: true,
|
|
372
|
+
get: function () { return chunkH4VHCHCP_cjs.InstagramIcon; }
|
|
373
|
+
});
|
|
374
|
+
Object.defineProperty(exports, "LinkedInIcon", {
|
|
375
|
+
enumerable: true,
|
|
376
|
+
get: function () { return chunkH4VHCHCP_cjs.LinkedInIcon; }
|
|
377
|
+
});
|
|
378
|
+
Object.defineProperty(exports, "RedditIcon", {
|
|
379
|
+
enumerable: true,
|
|
380
|
+
get: function () { return chunkH4VHCHCP_cjs.RedditIcon; }
|
|
381
|
+
});
|
|
382
|
+
Object.defineProperty(exports, "SlackIcon", {
|
|
383
|
+
enumerable: true,
|
|
384
|
+
get: function () { return chunkH4VHCHCP_cjs.SlackIcon; }
|
|
385
|
+
});
|
|
386
|
+
Object.defineProperty(exports, "TelegramIcon", {
|
|
387
|
+
enumerable: true,
|
|
388
|
+
get: function () { return chunkH4VHCHCP_cjs.TelegramIcon; }
|
|
389
|
+
});
|
|
390
|
+
Object.defineProperty(exports, "WhatsAppIcon", {
|
|
391
|
+
enumerable: true,
|
|
392
|
+
get: function () { return chunkH4VHCHCP_cjs.WhatsAppIcon; }
|
|
393
|
+
});
|
|
394
|
+
Object.defineProperty(exports, "XIcon", {
|
|
395
|
+
enumerable: true,
|
|
396
|
+
get: function () { return chunkH4VHCHCP_cjs.XIcon; }
|
|
397
|
+
});
|
|
398
|
+
Object.defineProperty(exports, "YouTubeIcon", {
|
|
399
|
+
enumerable: true,
|
|
400
|
+
get: function () { return chunkH4VHCHCP_cjs.YouTubeIcon; }
|
|
401
|
+
});
|
|
402
|
+
Object.defineProperty(exports, "ActionButtons", {
|
|
403
|
+
enumerable: true,
|
|
404
|
+
get: function () { return chunkKNSPBTTJ_cjs.ActionButtons; }
|
|
405
|
+
});
|
|
406
|
+
Object.defineProperty(exports, "Icon", {
|
|
407
|
+
enumerable: true,
|
|
408
|
+
get: function () { return chunkKNSPBTTJ_cjs.Icon; }
|
|
409
|
+
});
|
|
410
|
+
Object.defineProperty(exports, "IconNames", {
|
|
411
|
+
enumerable: true,
|
|
412
|
+
get: function () { return chunkKNSPBTTJ_cjs.IconNames; }
|
|
413
|
+
});
|
|
414
|
+
Object.defineProperty(exports, "Layout", {
|
|
415
|
+
enumerable: true,
|
|
416
|
+
get: function () { return chunkKNSPBTTJ_cjs.Layout; }
|
|
417
|
+
});
|
|
418
|
+
Object.defineProperty(exports, "NavHorizontal", {
|
|
419
|
+
enumerable: true,
|
|
420
|
+
get: function () { return chunkKNSPBTTJ_cjs.NavHorizontal; }
|
|
421
|
+
});
|
|
422
|
+
Object.defineProperty(exports, "NavVertical", {
|
|
423
|
+
enumerable: true,
|
|
424
|
+
get: function () { return chunkKNSPBTTJ_cjs.NavVertical; }
|
|
425
|
+
});
|
|
426
|
+
Object.defineProperty(exports, "PaneMenus", {
|
|
427
|
+
enumerable: true,
|
|
428
|
+
get: function () { return chunkKNSPBTTJ_cjs.PaneMenus; }
|
|
429
|
+
});
|
|
430
|
+
Object.defineProperty(exports, "PaneSectionHeader", {
|
|
431
|
+
enumerable: true,
|
|
432
|
+
get: function () { return chunkKNSPBTTJ_cjs.PaneSectionHeader; }
|
|
433
|
+
});
|
|
434
|
+
Object.defineProperty(exports, "ServiceIcon", {
|
|
435
|
+
enumerable: true,
|
|
436
|
+
get: function () { return chunkKNSPBTTJ_cjs.ServiceIcon; }
|
|
437
|
+
});
|
|
438
|
+
Object.defineProperty(exports, "WorkflowStatusCard", {
|
|
439
|
+
enumerable: true,
|
|
440
|
+
get: function () { return chunkKNSPBTTJ_cjs.WorkflowStatusCard; }
|
|
441
|
+
});
|
|
442
|
+
Object.defineProperty(exports, "Actions", {
|
|
443
|
+
enumerable: true,
|
|
444
|
+
get: function () { return chunkP4Q3MHIY_cjs.Actions; }
|
|
445
|
+
});
|
|
446
|
+
Object.defineProperty(exports, "AgentState", {
|
|
447
|
+
enumerable: true,
|
|
448
|
+
get: function () { return chunkP4Q3MHIY_cjs.AgentState; }
|
|
449
|
+
});
|
|
450
|
+
Object.defineProperty(exports, "AssistantMessage", {
|
|
451
|
+
enumerable: true,
|
|
452
|
+
get: function () { return chunkP4Q3MHIY_cjs.AssistantMessage; }
|
|
453
|
+
});
|
|
454
|
+
Object.defineProperty(exports, "AssistantThinking", {
|
|
455
|
+
enumerable: true,
|
|
456
|
+
get: function () { return chunkP4Q3MHIY_cjs.AssistantThinking; }
|
|
457
|
+
});
|
|
458
|
+
Object.defineProperty(exports, "Button", {
|
|
459
|
+
enumerable: true,
|
|
460
|
+
get: function () { return chunkP4Q3MHIY_cjs.Button; }
|
|
461
|
+
});
|
|
462
|
+
Object.defineProperty(exports, "ChatInput", {
|
|
463
|
+
enumerable: true,
|
|
464
|
+
get: function () { return chunkP4Q3MHIY_cjs.ChatInput; }
|
|
465
|
+
});
|
|
466
|
+
Object.defineProperty(exports, "CopilotUserMessage", {
|
|
467
|
+
enumerable: true,
|
|
468
|
+
get: function () { return chunkP4Q3MHIY_cjs.UserMessage2; }
|
|
469
|
+
});
|
|
470
|
+
Object.defineProperty(exports, "FileAttachment", {
|
|
471
|
+
enumerable: true,
|
|
472
|
+
get: function () { return chunkP4Q3MHIY_cjs.FileAttachment; }
|
|
473
|
+
});
|
|
474
|
+
Object.defineProperty(exports, "Footer", {
|
|
475
|
+
enumerable: true,
|
|
476
|
+
get: function () { return chunkP4Q3MHIY_cjs.Footer; }
|
|
477
|
+
});
|
|
478
|
+
Object.defineProperty(exports, "Header", {
|
|
479
|
+
enumerable: true,
|
|
480
|
+
get: function () { return chunkP4Q3MHIY_cjs.Header; }
|
|
481
|
+
});
|
|
482
|
+
Object.defineProperty(exports, "Input", {
|
|
483
|
+
enumerable: true,
|
|
484
|
+
get: function () { return chunkP4Q3MHIY_cjs.Input; }
|
|
485
|
+
});
|
|
486
|
+
Object.defineProperty(exports, "Messages", {
|
|
487
|
+
enumerable: true,
|
|
488
|
+
get: function () { return chunkP4Q3MHIY_cjs.Messages; }
|
|
489
|
+
});
|
|
490
|
+
Object.defineProperty(exports, "MessagesList", {
|
|
491
|
+
enumerable: true,
|
|
492
|
+
get: function () { return chunkP4Q3MHIY_cjs.MessagesList; }
|
|
493
|
+
});
|
|
494
|
+
Object.defineProperty(exports, "MessagesListContainer", {
|
|
495
|
+
enumerable: true,
|
|
496
|
+
get: function () { return chunkP4Q3MHIY_cjs.MessagesListContainer; }
|
|
497
|
+
});
|
|
498
|
+
Object.defineProperty(exports, "MessagesListContent", {
|
|
499
|
+
enumerable: true,
|
|
500
|
+
get: function () { return chunkP4Q3MHIY_cjs.MessagesListContent; }
|
|
501
|
+
});
|
|
502
|
+
Object.defineProperty(exports, "Response", {
|
|
503
|
+
enumerable: true,
|
|
504
|
+
get: function () { return chunkP4Q3MHIY_cjs.Response; }
|
|
505
|
+
});
|
|
506
|
+
Object.defineProperty(exports, "Suggestions", {
|
|
507
|
+
enumerable: true,
|
|
508
|
+
get: function () { return chunkP4Q3MHIY_cjs.Suggestions; }
|
|
509
|
+
});
|
|
510
|
+
Object.defineProperty(exports, "UserMessage", {
|
|
511
|
+
enumerable: true,
|
|
512
|
+
get: function () { return chunkP4Q3MHIY_cjs.UserMessage; }
|
|
513
|
+
});
|
|
514
|
+
Object.defineProperty(exports, "Window", {
|
|
515
|
+
enumerable: true,
|
|
516
|
+
get: function () { return chunkP4Q3MHIY_cjs.Window; }
|
|
517
|
+
});
|
|
518
|
+
Object.defineProperty(exports, "GlobalStyle", {
|
|
519
|
+
enumerable: true,
|
|
520
|
+
get: function () { return chunkCVHHTWDQ_cjs.GlobalStyle; }
|
|
521
|
+
});
|
|
522
|
+
Object.defineProperty(exports, "darkTheme", {
|
|
523
|
+
enumerable: true,
|
|
524
|
+
get: function () { return chunkCVHHTWDQ_cjs.darkTheme; }
|
|
525
|
+
});
|
|
526
|
+
Object.defineProperty(exports, "lightTheme", {
|
|
527
|
+
enumerable: true,
|
|
528
|
+
get: function () { return chunkCVHHTWDQ_cjs.lightTheme; }
|
|
529
|
+
});
|
|
530
|
+
Object.defineProperty(exports, "tokens", {
|
|
531
|
+
enumerable: true,
|
|
532
|
+
get: function () { return chunkCVHHTWDQ_cjs.tokens; }
|
|
533
|
+
});
|
|
534
|
+
exports.NotificationCard = NotificationCard;
|
|
535
|
+
//# sourceMappingURL=index.cjs.map
|
|
536
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/NotificationCard/NotificationCard.styles.ts","../src/components/NotificationCard/NotificationCard.tsx"],"names":["styled","useState","jsx","useRef","useButton","jsxs"],"mappings":"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","file":"index.cjs","sourcesContent":["import styled from 'styled-components';\n\n/**\n * Main container for the notification card with light gradient background\n */\nexport const NotificationCardContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 600px;\n padding: 20px;\n background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);\n border-radius: 20px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);\n gap: 12px;\n`;\n\n/**\n * Section header button (collapsible)\n */\nexport const SectionHeader = styled.button`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 8px 4px;\n border: none;\n background: transparent;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',\n 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n font-size: 16px;\n font-weight: 700;\n color: #2c3e50;\n text-align: left;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n color: #1a252f;\n }\n\n &:focus-visible {\n outline: 2px solid #5b9fff;\n outline-offset: 2px;\n border-radius: 8px;\n }\n`;\n\n/**\n * Chevron icon for section header with rotation animation\n */\ninterface ChevronIconProps {\n $isExpanded: boolean;\n}\n\nexport const ChevronIcon = styled.span<ChevronIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.2s ease;\n color: #6c757d;\n\n ${(props) =>\n props.$isExpanded\n ? `\n transform: rotate(0deg);\n `\n : `\n transform: rotate(-90deg);\n `}\n\n svg {\n width: 16px;\n height: 16px;\n }\n`;\n\n/**\n * Container for section content (list of notification items)\n */\nexport const SectionContent = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-left: 0;\n margin-top: 4px;\n`;\n\n/**\n * Individual notification item wrapper (button)\n */\ninterface NotificationItemWrapperProps {\n $isSelected: boolean;\n $hasIcon: boolean;\n}\n\nexport const NotificationItemWrapper = styled.button<NotificationItemWrapperProps>`\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: ${(props) => (props.$isSelected ? '12px 16px' : '10px 12px')};\n border: none;\n cursor: pointer;\n text-align: left;\n transition: all 0.2s ease;\n border-radius: ${(props) => (props.$isSelected ? '12px' : '10px')};\n\n /* Default state - transparent background */\n background-color: ${(props) => (props.$isSelected ? '#2c3e50' : 'transparent')};\n\n /* Hover state */\n &:hover:not(:disabled) {\n background-color: ${(props) => (props.$isSelected ? '#1a252f' : 'rgba(255, 255, 255, 0.5)')};\n }\n\n /* Active state */\n &:active:not(:disabled) {\n transform: scale(0.99);\n }\n\n /* Focus state */\n &:focus-visible {\n outline: 2px solid ${(props) => (props.$isSelected ? '#ffffff' : '#5b9fff')};\n outline-offset: 2px;\n }\n\n /* Disabled state */\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n`;\n\n/**\n * Icon container for notification items\n */\ninterface ItemIconProps {\n $iconColor?: string;\n $hasCustomIcon: boolean;\n}\n\nexport const ItemIcon = styled.span<ItemIconProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n border-radius: ${(props) => (props.$hasCustomIcon ? '6px' : '50%')};\n background-color: ${(props) => props.$iconColor || 'transparent'};\n color: ${(props) => (props.$hasCustomIcon ? '#ffffff' : '#6c757d')};\n font-size: ${(props) => (props.$hasCustomIcon ? '16px' : '14px')};\n\n /* Default circle icon styling */\n ${(props) =>\n !props.$hasCustomIcon &&\n `\n svg {\n width: 20px;\n height: 20px;\n }\n `}\n\n /* Custom icon (emoji or colored icon) styling */\n ${(props) =>\n props.$hasCustomIcon &&\n `\n padding: 2px;\n `}\n`;\n\n/**\n * Text content for notification items\n */\ninterface ItemTextProps {\n $isSelected: boolean;\n}\n\nexport const ItemText = styled.span<ItemTextProps>`\n flex: 1;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',\n 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;\n font-size: 15px;\n font-weight: ${(props) => (props.$isSelected ? '500' : '400')};\n color: ${(props) => (props.$isSelected ? '#ffffff' : '#5a5a5a')};\n line-height: 1.5;\n word-wrap: break-word;\n`;\n\n/**\n * Three-dot menu button (shown on selected items)\n */\nexport const MenuButton = styled.button`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 6px;\n background-color: transparent;\n color: #ffffff;\n cursor: pointer;\n transition: all 0.2s ease;\n flex-shrink: 0;\n\n &:hover:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.15);\n }\n\n &:active:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.25);\n transform: scale(0.95);\n }\n\n &:focus-visible {\n outline: 2px solid #ffffff;\n outline-offset: 2px;\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n`;\n","import { useButton } from '@react-aria/button';\nimport React, { type KeyboardEvent, useRef, useState } from 'react';\nimport {\n ChevronIcon,\n ItemIcon,\n ItemText,\n MenuButton,\n NotificationCardContainer,\n NotificationItemWrapper,\n SectionContent,\n SectionHeader,\n} from './NotificationCard.styles';\n\nexport interface NotificationItem {\n /** Unique identifier for the item */\n id: string;\n /** The text content of the notification */\n text: string;\n /** Optional icon (can be emoji, SVG, or icon component) */\n icon?: React.ReactNode;\n /** Icon background color (for colored icons like Slack, Google Sheets) */\n iconColor?: string;\n /** Whether this item is currently selected/active */\n isSelected?: boolean;\n}\n\nexport interface NotificationSection {\n /** Section title (e.g., \"Today\", \"Yesterday\") */\n title: string;\n /** Whether the section is initially collapsed */\n isCollapsed?: boolean;\n /** Array of notification items in this section */\n items: NotificationItem[];\n}\n\nexport interface NotificationCardProps {\n /** Array of notification sections */\n sections: NotificationSection[];\n /** Callback when an item is clicked */\n onItemClick?: (item: NotificationItem) => void;\n /** Currently selected item ID */\n selectedItemId?: string;\n /** Callback when menu button is clicked (three-dot menu) */\n onMenuClick?: (item: NotificationItem) => void;\n /** Additional CSS class name */\n className?: string;\n /** ARIA label for the notification card */\n 'aria-label'?: string;\n}\n\n/**\n * NotificationCard component with collapsible sections\n *\n * Features:\n * - Date-based sections with collapsible headers\n * - Different item states (default, selected)\n * - Icon variants (circle icon, colored app icons)\n * - Three-dot menu on selected items\n * - React ARIA for accessibility\n * - Full keyboard navigation support\n * - Clean design matching vendor image\n *\n * @example\n * ```tsx\n * <NotificationCard\n * sections={[\n * {\n * title: \"Today\",\n * items: [\n * { id: \"1\", text: \"Help me write a professional email.\" },\n * { id: \"2\", text: \"Write a letter to the work chat\", icon: \"💬\", iconColor: \"#4A90E2\" }\n * ]\n * },\n * {\n * title: \"Yesterday\",\n * items: [\n * { id: \"3\", text: \"Generate a 3D scene of robots\", isSelected: true }\n * ]\n * }\n * ]}\n * selectedItemId=\"3\"\n * onItemClick={(item) => console.log(item)}\n * onMenuClick={(item) => console.log(\"Menu clicked\", item)}\n * />\n * ```\n */\nexport const NotificationCard: React.FC<NotificationCardProps> = ({\n sections,\n onItemClick,\n selectedItemId,\n onMenuClick,\n className,\n 'aria-label': ariaLabel = 'Notification history',\n}) => {\n // Track collapsed state for each section\n const [collapsedSections, setCollapsedSections] = useState<Record<string, boolean>>(() => {\n const initial: Record<string, boolean> = {};\n for (const section of sections) {\n initial[section.title] = section.isCollapsed || false;\n }\n return initial;\n });\n\n const toggleSection = (sectionTitle: string) => {\n setCollapsedSections((prev) => ({\n ...prev,\n [sectionTitle]: !prev[sectionTitle],\n }));\n };\n\n return (\n <NotificationCardContainer className={className} aria-label={ariaLabel} role=\"region\">\n {sections.map((section) => (\n <SectionComponent\n key={section.title}\n section={section}\n isCollapsed={collapsedSections[section.title] ?? false}\n onToggle={() => toggleSection(section.title)}\n onItemClick={onItemClick}\n selectedItemId={selectedItemId}\n onMenuClick={onMenuClick}\n />\n ))}\n </NotificationCardContainer>\n );\n};\n\n/**\n * Individual section component with collapsible header\n */\ninterface SectionComponentProps {\n section: NotificationSection;\n isCollapsed: boolean;\n onToggle: () => void;\n onItemClick?: (item: NotificationItem) => void;\n selectedItemId?: string;\n onMenuClick?: (item: NotificationItem) => void;\n}\n\nconst SectionComponent: React.FC<SectionComponentProps> = ({\n section,\n isCollapsed,\n onToggle,\n onItemClick,\n selectedItemId,\n onMenuClick,\n}) => {\n const headerRef = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(\n {\n onPress: onToggle,\n 'aria-label': `${section.title} section, ${isCollapsed ? 'collapsed' : 'expanded'}`,\n 'aria-expanded': !isCollapsed,\n },\n headerRef\n );\n\n return (\n <section aria-label={`${section.title} notifications`}>\n <SectionHeader {...buttonProps} ref={headerRef}>\n {section.title}\n <ChevronIcon $isExpanded={!isCollapsed} aria-hidden=\"true\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Expand/collapse icon\"\n >\n <title>Expand/collapse icon</title>\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </ChevronIcon>\n </SectionHeader>\n\n {!isCollapsed && (\n <SectionContent role=\"list\">\n {section.items.map((item) => (\n <NotificationItemComponent\n key={item.id}\n item={item}\n isSelected={item.id === selectedItemId}\n onItemClick={onItemClick}\n onMenuClick={onMenuClick}\n />\n ))}\n </SectionContent>\n )}\n </section>\n );\n};\n\n/**\n * Individual notification item component\n */\ninterface NotificationItemComponentProps {\n item: NotificationItem;\n isSelected: boolean;\n onItemClick?: (item: NotificationItem) => void;\n onMenuClick?: (item: NotificationItem) => void;\n}\n\nconst NotificationItemComponent: React.FC<NotificationItemComponentProps> = ({\n item,\n isSelected,\n onItemClick,\n onMenuClick,\n}) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLButtonElement>(null);\n\n const { buttonProps: itemButtonProps } = useButton(\n {\n onPress: () => onItemClick?.(item),\n 'aria-label': `Notification: ${item.text}`,\n 'aria-current': isSelected ? 'true' : undefined,\n },\n itemRef\n );\n\n const { buttonProps: menuButtonProps } = useButton(\n {\n onPress: () => onMenuClick?.(item),\n 'aria-label': `Options for ${item.text}`,\n },\n menuRef\n );\n\n // Handle keyboard navigation between item and menu button\n const handleItemKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (isSelected && e.key === 'Tab' && !e.shiftKey) {\n // Allow natural tab to menu button\n return;\n }\n };\n\n return (\n <NotificationItemWrapper\n {...itemButtonProps}\n ref={itemRef}\n $isSelected={isSelected}\n $hasIcon={!!item.icon}\n role=\"listitem\"\n onKeyDown={handleItemKeyDown}\n >\n <ItemIcon $iconColor={item.iconColor} $hasCustomIcon={!!item.icon}>\n {item.icon || (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"2\" />\n </svg>\n )}\n </ItemIcon>\n <ItemText $isSelected={isSelected}>{item.text}</ItemText>\n {isSelected && onMenuClick && (\n <MenuButton\n {...menuButtonProps}\n ref={menuRef}\n onClick={(e) => {\n e.stopPropagation();\n menuButtonProps.onClick?.(e);\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <title>More options</title>\n <circle cx=\"10\" cy=\"4\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"10\" cy=\"10\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"10\" cy=\"16\" r=\"1.5\" fill=\"currentColor\" />\n </svg>\n </MenuButton>\n )}\n </NotificationItemWrapper>\n );\n};\n\nNotificationCard.displayName = 'NotificationCard';\n"]}
|