PluginProbe
Extendify / 2.2.0
Extendify v2.2.0
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / src / HelpCenter / components / ai-chat / Nav.jsx

Nav.jsx in Extendify 2.2.0, at src/HelpCenter/components/ai-chat/Nav.jsx

71 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { Icon, Dropdown, MenuGroup, MenuItem } from '@wordpress/components';
2 import { __, sprintf } from '@wordpress/i18n';
3 import { moreVertical, check } from '@wordpress/icons';
4 import { useAIChatStore } from '@help-center/state/ai-chat';
5
6 export const Nav = ({ setShowHistory }) => {
7 const experienceLevels = {
8 beginner: __('Beginner', 'extendify-local'),
9 intermediate: __('Intermediate', 'extendify-local'),
10 advanced: __('Advanced', 'extendify-local'),
11 };
12 const { historyCount, hasHistory, experienceLevel, setExperienceLevel } =
13 useAIChatStore();
14
15 return (
16 <nav className="absolute right-0 z-10 mx-4 mt-3 flex items-center justify-between gap-2">
17 <div className="flex items-center gap-2">
18 <Dropdown
19 className="flex"
20 contentClassName="origin-top-right rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5 focus:outline-none"
21 popoverProps={{ placement: 'bottom-start' }}
22 renderToggle={({ onToggle }) => (
23 <span>
24 <Icon
25 icon={moreVertical}
26 onClick={onToggle}
27 size={28}
28 className="cursor-pointer rounded fill-current p-1 text-design-text hover:bg-white/10"
29 />
30 <span className="sr-only">
31 {__('Toggle menu', 'extendify-local')}
32 </span>
33 </span>
34 )}
35 renderContent={({ onClose }) => (
36 <MenuGroup label={__('WordPress Comfort Level', 'extendify-local')}>
37 {Object.entries(experienceLevels).map(([key, label]) => (
38 <MenuItem
39 key={key}
40 isSelected={experienceLevel === key}
41 onClick={() => {
42 setExperienceLevel(key);
43 onClose();
44 }}
45 icon={experienceLevel === key ? check : null}>
46 {label}
47 </MenuItem>
48 ))}
49 <hr />
50 <MenuItem
51 disabled={!hasHistory()}
52 onClick={() => {
53 setShowHistory(true);
54 onClose();
55 }}>
56 {
57 // translators: %d: number of chat history items
58 sprintf(
59 __('Chat History (%d)', 'extendify-local'),
60 historyCount,
61 )
62 }
63 </MenuItem>
64 </MenuGroup>
65 )}
66 />
67 </div>
68 </nav>
69 );
70 };
71