PluginProbe
Extendify / 3.2.1
Extendify v3.2.1
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 3.2.1, at src/HelpCenter/components/ai-chat/Nav.jsx

73 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useAIChatStore } from '@help-center/state/ai-chat';
2 import { Dropdown, Icon, MenuGroup, MenuItem } from '@wordpress/components';
3 import { __, sprintf } from '@wordpress/i18n';
4 import { check, moreVertical } from '@wordpress/icons';
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/5 focus:outline-hidden"
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-sm 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 >
47 {label}
48 </MenuItem>
49 ))}
50 <hr />
51 <MenuItem
52 disabled={!hasHistory()}
53 onClick={() => {
54 setShowHistory(true);
55 onClose();
56 }}
57 >
58 {
59 // translators: %d: number of chat history items
60 sprintf(
61 __('Chat History (%d)', 'extendify-local'),
62 historyCount,
63 )
64 }
65 </MenuItem>
66 </MenuGroup>
67 )}
68 />
69 </div>
70 </nav>
71 );
72 };
73