Skip to content

Commit 7fe111a

Browse files
matt-aitkensamejr
andauthored
AI dashboard widget + CLI AI generate fix suggestions (#1925)
* Made a better AI icon and improved how it looks on the create new schedules inspector * WIP adding kapa ai to the app * WIP adding a new Ask AI button to the side menu * WIP using the react example from the docs * Align the AI button in the bottom bar * Kapa widget now works * Trigger the Kapa modal from the custom button * Fix imports * Adds Ask AI shortcut to Shortcuts panel * Adds a new enter shortcut key * Adds a prop so you can optionally hide the shortcut key * Latest * Moved the Kapa/Help stuff into a component, out of root * WIP using onModalClose * Creates a wrapper provider to block shortcuts while kapa modal is open (has bugs) * Fixes button alignment * Hide the shortcut key at the button layer * Fix for enable/disable shortcut keys globally * Kapa is working * You can bring up the shortcut keys without opening the help panel * TODO remove listeners * remove imports and fix invalid tailwind class * style kapa widget as best i can * Remove Kapa event listeners * Allow passing in a query * Open the AI widget if there’s a URL param * Much cleaner implementation for Kapa * Trying to auto-open the Kapa widget when the page loads * Delay opening the widget because it was causing issues * Improved Kapa widget colors * Added an AI help link to the CLI * We don’t need this anymore * Exit with 1, indicating an error. This is important for CI * Removed old auto-opening code * Added some code comments to explain some of the annoying stuff --------- Co-authored-by: James Ritchie <james@trigger.dev>
1 parent 525285d commit 7fe111a

25 files changed

+828
-378
lines changed

.changeset/red-chairs-begin.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"trigger.dev": patch
3+
---
4+
5+
Added AI assistance link when you have build errors
+20-42
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,31 @@
11
export function AISparkleIcon({ className }: { className?: string }) {
22
return (
3-
<svg className={className} viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
3+
<svg
4+
className={className}
5+
width="24"
6+
height="24"
7+
viewBox="0 0 24 24"
8+
fill="none"
9+
xmlns="http://www.w3.org/2000/svg"
10+
>
411
<path
5-
d="M14.9806 0.803884C14.8871 0.33646 14.4767 0 14 0C13.5233 0 13.1129 0.33646 13.0194 0.803884L12.7809 1.99644C12.7017 2.3923 12.3923 2.70174 11.9964 2.78091L10.8039 3.01942C10.3365 3.1129 10 3.52332 10 4C10 4.47668 10.3365 4.8871 10.8039 4.98058L11.9964 5.21909C12.3923 5.29826 12.7017 5.6077 12.7809 6.00356L13.0194 7.19612C13.1129 7.66354 13.5233 8 14 8C14.4767 8 14.8871 7.66354 14.9806 7.19612L15.2191 6.00356C15.2983 5.6077 15.6077 5.29826 16.0036 5.21909L17.1961 4.98058C17.6635 4.8871 18 4.47668 18 4C18 3.52332 17.6635 3.1129 17.1961 3.01942L16.0036 2.78091C15.6077 2.70174 15.2983 2.3923 15.2191 1.99644L14.9806 0.803884Z"
6-
fill="url(#paint0_linear_11402_36656)"
12+
fillRule="evenodd"
13+
clipRule="evenodd"
14+
d="M9.14286 4.85718C9.46177 4.85718 9.74205 5.06859 9.82966 5.37523L10.6041 8.08589C10.9431 9.27235 11.8705 10.1998 13.057 10.5388L15.7677 11.3132C16.0743 11.4008 16.2857 11.6811 16.2857 12C16.2857 12.319 16.0743 12.5992 15.7677 12.6868L13.057 13.4613C11.8705 13.8003 10.9431 14.7277 10.6041 15.9142L9.82966 18.6248C9.74205 18.9315 9.46177 19.1429 9.14286 19.1429C8.82394 19.1429 8.54367 18.9315 8.45605 18.6248L7.68158 15.9142C7.34259 14.7277 6.41517 13.8003 5.22871 13.4613L2.51806 12.6868C2.21141 12.5992 2 12.319 2 12C2 11.6811 2.21141 11.4008 2.51806 11.3132L5.22871 10.5388C6.41517 10.1998 7.34259 9.27235 7.68158 8.08589L8.45605 5.37523C8.54367 5.06859 8.82394 4.85718 9.14286 4.85718Z"
15+
fill="#7655FD"
716
/>
817
<path
9-
d="M5.94868 4.68377C5.81257 4.27543 5.43043 4 5 4C4.56957 4 4.18743 4.27543 4.05132 4.68377L3.36754 6.73509C3.26801 7.03369 3.03369 7.26801 2.73509 7.36754L0.683772 8.05132C0.27543 8.18743 0 8.56957 0 9C0 9.43043 0.27543 9.81257 0.683772 9.94868L2.73509 10.6325C3.03369 10.732 3.26801 10.9663 3.36754 11.2649L4.05132 13.3162C4.18743 13.7246 4.56957 14 5 14C5.43043 14 5.81257 13.7246 5.94868 13.3162L6.63246 11.2649C6.73199 10.9663 6.96631 10.732 7.26491 10.6325L9.31623 9.94868C9.72457 9.81257 10 9.43043 10 9C10 8.56957 9.72457 8.18743 9.31623 8.05132L7.26491 7.36754C6.96631 7.26801 6.73199 7.03369 6.63246 6.73509L5.94868 4.68377Z"
10-
fill="url(#paint1_linear_11402_36656)"
18+
fillRule="evenodd"
19+
clipRule="evenodd"
20+
d="M17.7143 2C18.0421 2 18.3278 2.22307 18.4072 2.54105L18.6538 3.5272C18.8777 4.42291 19.5771 5.12229 20.4728 5.34622L21.459 5.59276C21.7769 5.67225 22 5.95795 22 6.28571C22 6.61348 21.7769 6.89918 21.459 6.97867L20.4728 7.22521C19.5771 7.44914 18.8777 8.14851 18.6538 9.04423L18.4072 10.0304C18.3278 10.3484 18.0421 10.5714 17.7143 10.5714C17.3865 10.5714 17.1008 10.3484 17.0213 10.0304L16.7748 9.04423C16.5509 8.14852 15.8515 7.44914 14.9558 7.22521L13.9696 6.97867C13.6516 6.89918 13.4286 6.61348 13.4286 6.28571C13.4286 5.95795 13.6516 5.67225 13.9696 5.59276L14.9558 5.34622C15.8515 5.12229 16.5509 4.42291 16.7748 3.5272L17.0213 2.54105C17.1008 2.22307 17.3865 2 17.7143 2Z"
21+
fill="#D946EF"
1122
/>
1223
<path
13-
d="M12.9487 12.6838C12.8126 12.2754 12.4304 12 12 12C11.5696 12 11.1874 12.2754 11.0513 12.6838L10.8675 13.2351C10.768 13.5337 10.5337 13.768 10.2351 13.8675L9.68377 14.0513C9.27543 14.1874 9 14.5696 9 15C9 15.4304 9.27543 15.8126 9.68377 15.9487L10.2351 16.1325C10.5337 16.232 10.768 16.4663 10.8675 16.7649L11.0513 17.3162C11.1874 17.7246 11.5696 18 12 18C12.4304 18 12.8126 17.7246 12.9487 17.3162L13.1325 16.7649C13.232 16.4663 13.4663 16.232 13.7649 16.1325L14.3162 15.9487C14.7246 15.8126 15 15.4304 15 15C15 14.5696 14.7246 14.1874 14.3162 14.0513L13.7649 13.8675C13.4663 13.768 13.232 13.5337 13.1325 13.2351L12.9487 12.6838Z"
14-
fill="url(#paint2_linear_11402_36656)"
24+
fillRule="evenodd"
25+
clipRule="evenodd"
26+
d="M16.2857 14.8572C16.5932 14.8572 16.8661 15.0539 16.9633 15.3456L17.3388 16.472C17.481 16.8986 17.8157 17.2333 18.2423 17.3755L19.3687 17.751C19.6604 17.8482 19.8571 18.1212 19.8571 18.4286C19.8571 18.7361 19.6604 19.009 19.3687 19.1062L18.2423 19.4817C17.8157 19.6239 17.481 19.9586 17.3388 20.3852L16.9633 21.5116C16.8661 21.8033 16.5932 22 16.2857 22C15.9783 22 15.7053 21.8033 15.6081 21.5116L15.2326 20.3852C15.0904 19.9586 14.7557 19.6239 14.3291 19.4817L13.2027 19.1062C12.911 19.009 12.7143 18.7361 12.7143 18.4286C12.7143 18.1212 12.911 17.8482 13.2027 17.751L14.3291 17.3755C14.7557 17.2333 15.0904 16.8986 15.2326 16.472L15.6081 15.3456C15.7053 15.0539 15.9783 14.8572 16.2857 14.8572Z"
27+
fill="#4F46E5"
1528
/>
16-
<defs>
17-
<linearGradient
18-
id="paint0_linear_11402_36656"
19-
x1="9"
20-
y1="0"
21-
x2="9"
22-
y2="18"
23-
gradientUnits="userSpaceOnUse"
24-
>
25-
<stop stopColor="#E543FF" />
26-
<stop offset="1" stopColor="#286399" />
27-
</linearGradient>
28-
<linearGradient
29-
id="paint1_linear_11402_36656"
30-
x1="9"
31-
y1="0"
32-
x2="9"
33-
y2="18"
34-
gradientUnits="userSpaceOnUse"
35-
>
36-
<stop stopColor="#E543FF" />
37-
<stop offset="1" stopColor="#286399" />
38-
</linearGradient>
39-
<linearGradient
40-
id="paint2_linear_11402_36656"
41-
x1="9"
42-
y1="0"
43-
x2="9"
44-
y2="18"
45-
gradientUnits="userSpaceOnUse"
46-
>
47-
<stop stopColor="#E543FF" />
48-
<stop offset="1" stopColor="#286399" />
49-
</linearGradient>
50-
</defs>
5129
</svg>
5230
);
5331
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export function KeyboardEnterIcon({ className }: { className?: string }) {
2+
return (
3+
<svg className={className} viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
4+
<path
5+
d="M12 5H18C19.6569 5 21 6.34315 21 8V13C21 14.6569 19.6569 16 18 16H8"
6+
stroke="currentColor"
7+
strokeWidth="2"
8+
/>
9+
<path d="M2 16L8 12L8 20L2 16Z" fill="currentColor" />
10+
</svg>
11+
);
12+
}

apps/webapp/app/components/Shortcuts.tsx

+133-105
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import {
1111
} from "./primitives/SheetV3";
1212
import { ShortcutKey } from "./primitives/ShortcutKey";
1313
import { Button } from "./primitives/Buttons";
14+
import { useState } from "react";
15+
import { useShortcutKeys } from "~/hooks/useShortcutKeys";
1416

1517
export function Shortcuts() {
1618
return (
@@ -23,121 +25,147 @@ export function Shortcuts() {
2325
data-action="shortcuts"
2426
fullWidth
2527
textAlignLeft
26-
shortcut={{ modifiers: ["shift"], key: "?" }}
28+
shortcut={{ modifiers: ["shift"], key: "?", enabled: false }}
2729
className="gap-x-0 pl-0.5"
2830
iconSpacing="gap-x-0.5"
2931
>
3032
Shortcuts
3133
</Button>
3234
</SheetTrigger>
33-
<SheetContent>
34-
<SheetHeader>
35-
<SheetTitle>
36-
<div className="flex items-center gap-x-2">
37-
<Keyboard className="size-5 text-indigo-500" />
38-
<span className="font-sans text-base font-medium text-text-bright">
39-
Keyboard shortcuts
40-
</span>
41-
</div>
42-
</SheetTitle>
43-
<div className="space-y-6 px-4 pb-4 pt-2">
44-
<div className="space-y-3">
45-
<Header3>General</Header3>
46-
<Shortcut name="Close">
47-
<ShortcutKey shortcut={{ key: "esc" }} variant="medium/bright" />
48-
</Shortcut>
49-
<Shortcut name="Confirm">
50-
<ShortcutKey shortcut={{ modifiers: ["mod"] }} variant="medium/bright" />
51-
<ShortcutKey shortcut={{ key: "enter" }} variant="medium/bright" />
52-
</Shortcut>
53-
<Shortcut name="Filter">
54-
<ShortcutKey shortcut={{ key: "f" }} variant="medium/bright" />
55-
</Shortcut>
56-
<Shortcut name="Select filter">
57-
<ShortcutKey shortcut={{ key: "1" }} variant="medium/bright" />
58-
<Paragraph variant="small" className="ml-1.5">
59-
to
60-
</Paragraph>
61-
<ShortcutKey shortcut={{ key: "9" }} variant="medium/bright" />
62-
</Shortcut>
63-
<Shortcut name="Previous page">
64-
<ShortcutKey shortcut={{ key: "j" }} variant="medium/bright" />
65-
</Shortcut>
66-
<Shortcut name="Next page">
67-
<ShortcutKey shortcut={{ key: "k" }} variant="medium/bright" />
68-
</Shortcut>
69-
<Shortcut name="Help & Feedback">
70-
<ShortcutKey shortcut={{ key: "h" }} variant="medium/bright" />
71-
</Shortcut>
72-
</div>
73-
<div className="space-y-3">
74-
<Header3>Runs page</Header3>
75-
<Shortcut name="Bulk action: Cancel runs">
76-
<ShortcutKey shortcut={{ key: "c" }} variant="medium/bright" />
77-
</Shortcut>
78-
<Shortcut name="Bulk action: Replay runs">
79-
<ShortcutKey shortcut={{ key: "r" }} variant="medium/bright" />
80-
</Shortcut>
81-
<Shortcut name="Bulk action: Clear selection">
82-
<ShortcutKey shortcut={{ key: "esc" }} variant="medium/bright" />
83-
</Shortcut>
84-
</div>
85-
<div className="space-y-3">
86-
<Header3>Run page</Header3>
87-
<Shortcut name="Replay run">
88-
<ShortcutKey shortcut={{ key: "r" }} variant="medium/bright" />
89-
</Shortcut>
90-
<Shortcut name="Overview">
91-
<ShortcutKey shortcut={{ key: "o" }} variant="medium/bright" />
92-
</Shortcut>
93-
<Shortcut name="Details">
94-
<ShortcutKey shortcut={{ key: "d" }} variant="medium/bright" />
95-
</Shortcut>
96-
<Shortcut name="Context">
97-
<ShortcutKey shortcut={{ key: "c" }} variant="medium/bright" />
98-
</Shortcut>
99-
<Shortcut name="Metadata">
100-
<ShortcutKey shortcut={{ key: "m" }} variant="medium/bright" />
101-
</Shortcut>
102-
<Shortcut name="Navigate">
103-
<ShortcutKey shortcut={{ key: "arrowup" }} variant="medium/bright" />
104-
<ShortcutKey shortcut={{ key: "arrowdown" }} variant="medium/bright" />
105-
<ShortcutKey shortcut={{ key: "arrowleft" }} variant="medium/bright" />
106-
<ShortcutKey shortcut={{ key: "arrowright" }} variant="medium/bright" />
107-
</Shortcut>
108-
<Shortcut name="Expand all">
109-
<ShortcutKey shortcut={{ key: "e" }} variant="medium/bright" />
110-
</Shortcut>
111-
<Shortcut name="Collapse all">
112-
<ShortcutKey shortcut={{ key: "w" }} variant="medium/bright" />
113-
</Shortcut>
114-
<Shortcut name="Toggle level">
115-
<ShortcutKey shortcut={{ key: "0" }} variant="medium/bright" />
116-
<Paragraph variant="small" className="ml-1.5">
117-
to
118-
</Paragraph>
119-
<ShortcutKey shortcut={{ key: "9" }} variant="medium/bright" />
120-
</Shortcut>
121-
</div>
122-
<div className="space-y-3">
123-
<Header3>Schedules page</Header3>
124-
<Shortcut name="New schedule">
125-
<ShortcutKey shortcut={{ key: "n" }} variant="medium/bright" />
126-
</Shortcut>
127-
</div>
128-
<div className="space-y-3">
129-
<Header3>Alerts page</Header3>
130-
<Shortcut name="New alert">
131-
<ShortcutKey shortcut={{ key: "n" }} variant="medium/bright" />
132-
</Shortcut>
133-
</div>
134-
</div>
135-
</SheetHeader>
136-
</SheetContent>
35+
<ShortcutContent />
13736
</Sheet>
13837
);
13938
}
14039

40+
export function ShortcutsAutoOpen() {
41+
const [isOpen, setIsOpen] = useState(false);
42+
43+
useShortcutKeys({
44+
shortcut: { modifiers: ["shift"], key: "?" },
45+
action: () => {
46+
setIsOpen(true);
47+
},
48+
});
49+
50+
return (
51+
<Sheet open={isOpen} onOpenChange={setIsOpen}>
52+
<ShortcutContent />
53+
</Sheet>
54+
);
55+
}
56+
57+
function ShortcutContent() {
58+
return (
59+
<SheetContent>
60+
<SheetHeader>
61+
<SheetTitle>
62+
<div className="flex items-center gap-x-2">
63+
<Keyboard className="size-5 text-indigo-500" />
64+
<span className="font-sans text-base font-medium text-text-bright">
65+
Keyboard shortcuts
66+
</span>
67+
</div>
68+
</SheetTitle>
69+
<div className="space-y-6 px-4 pb-4 pt-2">
70+
<div className="space-y-3">
71+
<Header3>General</Header3>
72+
<Shortcut name="Close">
73+
<ShortcutKey shortcut={{ key: "esc" }} variant="medium/bright" />
74+
</Shortcut>
75+
<Shortcut name="Confirm">
76+
<ShortcutKey shortcut={{ modifiers: ["mod"] }} variant="medium/bright" />
77+
<ShortcutKey shortcut={{ key: "enter" }} variant="medium/bright" />
78+
</Shortcut>
79+
<Shortcut name="Ask AI">
80+
<ShortcutKey shortcut={{ modifiers: ["mod"], key: "/" }} variant="medium/bright" />
81+
</Shortcut>
82+
<Shortcut name="Filter">
83+
<ShortcutKey shortcut={{ key: "f" }} variant="medium/bright" />
84+
</Shortcut>
85+
<Shortcut name="Select filter">
86+
<ShortcutKey shortcut={{ key: "1" }} variant="medium/bright" />
87+
<Paragraph variant="small" className="ml-1.5">
88+
to
89+
</Paragraph>
90+
<ShortcutKey shortcut={{ key: "9" }} variant="medium/bright" />
91+
</Shortcut>
92+
<Shortcut name="Previous page">
93+
<ShortcutKey shortcut={{ key: "j" }} variant="medium/bright" />
94+
</Shortcut>
95+
<Shortcut name="Next page">
96+
<ShortcutKey shortcut={{ key: "k" }} variant="medium/bright" />
97+
</Shortcut>
98+
<Shortcut name="Help & Feedback">
99+
<ShortcutKey shortcut={{ key: "h" }} variant="medium/bright" />
100+
</Shortcut>
101+
</div>
102+
<div className="space-y-3">
103+
<Header3>Runs page</Header3>
104+
<Shortcut name="Bulk action: Cancel runs">
105+
<ShortcutKey shortcut={{ key: "c" }} variant="medium/bright" />
106+
</Shortcut>
107+
<Shortcut name="Bulk action: Replay runs">
108+
<ShortcutKey shortcut={{ key: "r" }} variant="medium/bright" />
109+
</Shortcut>
110+
<Shortcut name="Bulk action: Clear selection">
111+
<ShortcutKey shortcut={{ key: "esc" }} variant="medium/bright" />
112+
</Shortcut>
113+
</div>
114+
<div className="space-y-3">
115+
<Header3>Run page</Header3>
116+
<Shortcut name="Replay run">
117+
<ShortcutKey shortcut={{ key: "r" }} variant="medium/bright" />
118+
</Shortcut>
119+
<Shortcut name="Overview">
120+
<ShortcutKey shortcut={{ key: "o" }} variant="medium/bright" />
121+
</Shortcut>
122+
<Shortcut name="Details">
123+
<ShortcutKey shortcut={{ key: "d" }} variant="medium/bright" />
124+
</Shortcut>
125+
<Shortcut name="Context">
126+
<ShortcutKey shortcut={{ key: "c" }} variant="medium/bright" />
127+
</Shortcut>
128+
<Shortcut name="Metadata">
129+
<ShortcutKey shortcut={{ key: "m" }} variant="medium/bright" />
130+
</Shortcut>
131+
<Shortcut name="Navigate">
132+
<ShortcutKey shortcut={{ key: "arrowup" }} variant="medium/bright" />
133+
<ShortcutKey shortcut={{ key: "arrowdown" }} variant="medium/bright" />
134+
<ShortcutKey shortcut={{ key: "arrowleft" }} variant="medium/bright" />
135+
<ShortcutKey shortcut={{ key: "arrowright" }} variant="medium/bright" />
136+
</Shortcut>
137+
<Shortcut name="Expand all">
138+
<ShortcutKey shortcut={{ key: "e" }} variant="medium/bright" />
139+
</Shortcut>
140+
<Shortcut name="Collapse all">
141+
<ShortcutKey shortcut={{ key: "w" }} variant="medium/bright" />
142+
</Shortcut>
143+
<Shortcut name="Toggle level">
144+
<ShortcutKey shortcut={{ key: "0" }} variant="medium/bright" />
145+
<Paragraph variant="small" className="ml-1.5">
146+
to
147+
</Paragraph>
148+
<ShortcutKey shortcut={{ key: "9" }} variant="medium/bright" />
149+
</Shortcut>
150+
</div>
151+
<div className="space-y-3">
152+
<Header3>Schedules page</Header3>
153+
<Shortcut name="New schedule">
154+
<ShortcutKey shortcut={{ key: "n" }} variant="medium/bright" />
155+
</Shortcut>
156+
</div>
157+
<div className="space-y-3">
158+
<Header3>Alerts page</Header3>
159+
<Shortcut name="New alert">
160+
<ShortcutKey shortcut={{ key: "n" }} variant="medium/bright" />
161+
</Shortcut>
162+
</div>
163+
</div>
164+
</SheetHeader>
165+
</SheetContent>
166+
);
167+
}
168+
141169
function Shortcut({ children, name }: { children: React.ReactNode; name: string }) {
142170
return (
143171
<div className="flex items-center justify-between gap-x-2">

apps/webapp/app/components/navigation/HelpAndFeedbackPopover.tsx

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ import {
22
ArrowUpRightIcon,
33
BookOpenIcon,
44
CalendarDaysIcon,
5-
ChatBubbleLeftEllipsisIcon,
65
EnvelopeIcon,
76
LightBulbIcon,
7+
QuestionMarkCircleIcon,
88
SignalIcon,
99
StarIcon,
1010
} from "@heroicons/react/20/solid";
1111
import { DiscordIcon, SlackIcon } from "@trigger.dev/companyicons";
1212
import { Fragment, useState } from "react";
1313
import { useCurrentPlan } from "~/routes/_app.orgs.$organizationSlug/route";
1414
import { Feedback } from "../Feedback";
15+
import { Shortcuts } from "../Shortcuts";
1516
import { StepContentContainer } from "../StepContentContainer";
1617
import { Button } from "../primitives/Buttons";
1718
import { ClipboardField } from "../primitives/ClipboardField";
@@ -21,16 +22,21 @@ import { Paragraph } from "../primitives/Paragraph";
2122
import { Popover, PopoverContent, PopoverSideMenuTrigger } from "../primitives/Popover";
2223
import { StepNumber } from "../primitives/StepNumber";
2324
import { MenuCount, SideMenuItem } from "./SideMenuItem";
24-
import { Shortcuts } from "../Shortcuts";
25-
export function HelpAndFeedback() {
25+
26+
export function HelpAndFeedback({ disableShortcut = false }: { disableShortcut?: boolean }) {
2627
const [isHelpMenuOpen, setHelpMenuOpen] = useState(false);
2728
const currentPlan = useCurrentPlan();
2829

2930
return (
3031
<Popover onOpenChange={(open) => setHelpMenuOpen(open)}>
31-
<PopoverSideMenuTrigger isOpen={isHelpMenuOpen} shortcut={{ key: "h" }}>
32+
<PopoverSideMenuTrigger
33+
isOpen={isHelpMenuOpen}
34+
shortcut={{ key: "h", enabledOnInputElements: false }}
35+
className="grow pr-2"
36+
disabled={disableShortcut}
37+
>
3238
<div className="flex items-center gap-1.5">
33-
<ChatBubbleLeftEllipsisIcon className="size-4 text-success" />
39+
<QuestionMarkCircleIcon className="size-4 text-success" />
3440
Help & Feedback
3541
</div>
3642
</PopoverSideMenuTrigger>

0 commit comments

Comments
 (0)