analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
89 lines (85 loc) • 2.5 kB
JavaScript
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