UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

89 lines (85 loc) 2.5 kB
import { MenuContent, MenuItem, Menu_default } from "./chunk-WI3GQX74.mjs"; import { cn } from "./chunk-53ICLDGS.mjs"; // src/components/shared/ReportLayout.tsx import { useState } from "react"; // src/components/shared/ReportGridUtils.ts var getGridColumnsClass = (count) => { if (count >= 5) return "lg:grid-cols-5"; if (count === 4) return "lg:grid-cols-4"; if (count === 3) return "lg:grid-cols-3"; if (count === 2) return "lg:grid-cols-2"; return ""; }; // src/components/shared/ReportLayout.tsx import { jsx, jsxs } from "react/jsx-runtime"; var ReportLayout = ({ tabs, defaultTab, activeTab: controlledTab, onTabChange, renderCard, gridTestId, className, ...props }) => { const firstTabValue = tabs[0]?.value ?? ""; const [internalTab, setInternalTab] = useState(defaultTab ?? firstTabValue); const isControlled = controlledTab !== void 0; const activeTabValue = isControlled ? controlledTab : internalTab; const activeTabData = tabs.find((t) => t.value === activeTabValue); const cards = activeTabData?.cards ?? []; const handleTabChange = (value) => { if (!isControlled) { setInternalTab(value); } onTabChange?.(value); }; if (tabs.length === 0) { return null; } return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), ...props, children: [ tabs.length > 1 && /* @__PURE__ */ jsx( Menu_default, { defaultValue: defaultTab ?? firstTabValue, value: controlledTab, variant: "menu2", onValueChange: handleTabChange, children: /* @__PURE__ */ jsx(MenuContent, { variant: "menu2", children: tabs.map((tab) => /* @__PURE__ */ jsxs( MenuItem, { value: tab.value, variant: "menu-overflow", className: "!text-sm !leading-[100%] !tracking-[0.2px]", children: [ tab.icon && /* @__PURE__ */ jsx("span", { className: "[&>svg]:w-[21px] [&>svg]:h-[21px]", children: tab.icon }), tab.label ] }, tab.value )) }) } ), /* @__PURE__ */ jsx( "div", { className: cn( "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4", getGridColumnsClass(cards.length) ), "data-testid": gridTestId, children: cards.map((card) => renderCard(card)) } ) ] }); }; export { ReportLayout }; //# sourceMappingURL=chunk-JPAENAZB.mjs.map