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 / Agent / components / buttons / Mobile.jsx

Mobile.jsx in Extendify 3.2.1, at src/Agent/components/buttons/Mobile.jsx

61 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { magic } from '@agent/icons';
2 import { useGlobalStore } from '@agent/state/global';
3 import { useEffect, useRef } from '@wordpress/element';
4 import { __ } from '@wordpress/i18n';
5 import { chevronUp, Icon } from '@wordpress/icons';
6
7 export const Mobile = () => {
8 const { isMobile, minimized, setMinimized, setOpen } = useGlobalStore();
9 const ref = useRef(null);
10
11 const maximize = () => {
12 // A restored minimized:true can pair with open:false, which renders nothing.
13 setOpen(true);
14 setMinimized(false);
15 };
16
17 useEffect(() => {
18 if (!isMobile || minimized) return;
19 // Set button height as root var
20 document.body.style.setProperty(
21 '--extendify-agent-mobile-btn-height',
22 `${ref.current?.offsetHeight}px`,
23 );
24 }, [isMobile, minimized]);
25
26 useEffect(() => {
27 if (!isMobile) return;
28 document.body.classList.add('extendify-agent-mobile-btn-open');
29 return () => {
30 document.body.classList.remove('extendify-agent-mobile-btn-open');
31 };
32 }, [isMobile]);
33
34 if (!isMobile || !minimized) return null;
35
36 return (
37 <button
38 ref={ref}
39 type="button"
40 className="m-0 flex w-full items-center justify-between gap-2 bg-gray-900 px-4 py-3 font-sans text-white shadow-[0_-1px_0_0_rgba(255,255,255,0.05)]"
41 onClick={maximize}
42 aria-label={__('Open Agent', 'extendify-local')}
43 >
44 <div className="flex gap-3">
45 <div className="flex h-10 w-10 items-center justify-center rounded-full bg-[#3858e9]">
46 <Icon icon={magic} size={24} />
47 </div>
48 <div className="text-left text-sm rtl:text-right">
49 <div className="font-semibold">
50 {__('AI Agent', 'extendify-local')}
51 </div>
52 <div className="text-gray-600">
53 {__('How can we help you today?', 'extendify-local')}
54 </div>
55 </div>
56 </div>
57 <Icon className="fill-white" icon={chevronUp} size={24} />
58 </button>
59 );
60 };
61