2022-09-15 19:58:41 +03:00
|
|
|
import classNames from "classnames";
|
2023-06-22 10:04:12 -07:00
|
|
|
import { Disclosure, Transition } from '@headlessui/react';
|
|
|
|
import { MdKeyboardArrowDown } from "react-icons/md";
|
2022-09-15 19:58:41 +03:00
|
|
|
|
2022-08-24 10:44:35 +03:00
|
|
|
import List from "components/services/list";
|
2022-11-04 17:38:33 -04:00
|
|
|
import ResolvedIcon from "components/resolvedicon";
|
2022-08-24 10:44:35 +03:00
|
|
|
|
2023-06-22 11:51:12 -07:00
|
|
|
export default function ServicesGroup({ group, services, layout, fiveColumns, disableCollapse }) {
|
2023-06-21 16:46:14 -04:00
|
|
|
|
2022-08-24 10:44:35 +03:00
|
|
|
return (
|
|
|
|
<div
|
|
|
|
key={services.name}
|
2022-09-15 19:58:41 +03:00
|
|
|
className={classNames(
|
2023-04-07 22:28:19 -07:00
|
|
|
layout?.style === "row" ? "basis-full" : "basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4",
|
2023-04-07 22:35:42 -07:00
|
|
|
layout?.style !== "row" && fiveColumns ? "3xl:basis-1/5" : "",
|
2022-09-15 19:58:41 +03:00
|
|
|
"flex-1 p-1"
|
|
|
|
)}
|
2022-08-24 10:44:35 +03:00
|
|
|
>
|
2023-06-22 10:04:12 -07:00
|
|
|
<Disclosure defaultOpen>
|
|
|
|
{({ open }) => (
|
|
|
|
<>
|
|
|
|
<Disclosure.Button disabled={disableCollapse} className="flex w-full select-none items-center group">
|
2023-06-21 16:46:14 -04:00
|
|
|
{layout?.icon &&
|
|
|
|
<div className="flex-shrink-0 mr-2 w-7 h-7">
|
|
|
|
<ResolvedIcon icon={layout.icon} />
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
<h2 className="flex text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
|
2023-06-22 10:04:12 -07:00
|
|
|
<MdKeyboardArrowDown className={classNames(
|
|
|
|
disableCollapse ? 'hidden' : '',
|
|
|
|
'transition-opacity opacity-0 group-hover:opacity-100 ml-auto text-theme-800 dark:text-theme-300 text-xl',
|
|
|
|
open ? 'rotate-180 transform' : ''
|
|
|
|
)} />
|
|
|
|
</Disclosure.Button>
|
|
|
|
<Transition
|
|
|
|
enter="transition duration-200 ease-out"
|
|
|
|
enterFrom="transform scale-75 opacity-0"
|
|
|
|
enterTo="transform scale-100 opacity-100"
|
|
|
|
leave="transition duration-75 ease-out"
|
|
|
|
leaveFrom="transform scale-100 opacity-100"
|
|
|
|
leaveTo="transform scale-75 opacity-0"
|
|
|
|
>
|
|
|
|
<Disclosure.Panel>
|
|
|
|
<List group={group} services={services.services} layout={layout} />
|
|
|
|
</Disclosure.Panel>
|
|
|
|
</Transition>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</Disclosure>
|
2022-08-24 10:44:35 +03:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|