UNPKG

analytica-frontend-lib

Version:

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

164 lines (151 loc) 6.29 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkHGWU3GUNjs = require('./chunk-HGWU3GUN.js'); var _chunk34ST3MKOjs = require('./chunk-34ST3MKO.js'); var _chunkANT66KVKjs = require('./chunk-ANT66KVK.js'); // src/components/StatisticsCard/StatisticsCard.tsx var _Plus = require('@phosphor-icons/react/dist/csr/Plus'); var _jsxruntime = require('react/jsx-runtime'); var VARIANT_STYLES = { high: "bg-success-background", medium: "bg-warning-background", low: "bg-error-background", total: "bg-info-background" }; var VALUE_TEXT_COLORS = { high: "text-success-700", medium: "text-warning-600", low: "text-error-700", total: "text-info-700" }; var StatCard = ({ item, showPlaceholder = false }) => { return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `rounded-xl py-[17px] px-6 min-h-[105px] flex flex-col justify-center items-start gap-1 ${VARIANT_STYLES[item.variant]}`, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "4xl", weight: "bold", className: `${VALUE_TEXT_COLORS[item.variant]} leading-[42px] tracking-[0.2px] self-stretch`, children: showPlaceholder ? "-" : item.value } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "xs", weight: "bold", className: "uppercase text-[8px] leading-[9px] text-text-800 whitespace-nowrap", children: item.label } ) ] } ); }; var getGridColumnsClass = (itemCount) => { if (itemCount === 6) return "lg:grid-cols-6"; if (itemCount === 5) return "lg:grid-cols-5"; if (itemCount === 4) return "lg:grid-cols-4"; if (itemCount === 3) return "lg:grid-cols-3"; if (itemCount === 2) return "lg:grid-cols-2"; return "lg:grid-cols-1"; }; var StatisticsCard = ({ title, description, data, showPlaceholder = false, emptyStateMessage, emptyStateButtonText, onEmptyStateButtonClick, dropdownOptions, selectedDropdownValue, onDropdownChange, selectPlaceholder = "Selecione um per\xEDodo", dropdownAriaLabel = "Filtro de per\xEDodo", className = "" }) => { const hasData = data && data.length > 0; const gridColumnsClass = hasData ? getGridColumnsClass(data.length) : ""; return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `bg-background rounded-xl p-4 h-auto lg:min-h-[185px] flex flex-col gap-2 ${className}`, children: [ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-row justify-between items-center gap-4", children: [ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { as: "h3", size: "lg", weight: "bold", color: "text-text-950", children: title }), description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", color: "text-text-700", children: description }) ] }), dropdownOptions && dropdownOptions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-[120px] min-w-[90px] sm:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.Select_default, { value: selectedDropdownValue, onValueChange: onDropdownChange, size: "medium", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectTrigger, { className: "border border-border-300 rounded [&>span]:whitespace-nowrap [&>span]:overflow-hidden [&>span]:text-ellipsis", "aria-label": dropdownAriaLabel, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectValue, { placeholder: selectPlaceholder }) } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectContent, { className: "min-w-[120px]", children: dropdownOptions.map((option) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: option.value, className: "whitespace-nowrap", children: option.label }, option.value )) }) ] } ) }) ] }), hasData ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `grid grid-cols-1 sm:grid-cols-2 gap-[13px] ${gridColumnsClass}`, children: data.map((item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StatCard, { item, showPlaceholder }, `${item.variant}-${item.label}-${index}` )) } ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "border border-dashed border-border-300 rounded-lg p-6 min-h-[105px] flex flex-col items-center justify-center gap-2", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", color: "text-text-600", className: "text-center max-w-md", children: emptyStateMessage } ), onEmptyStateButtonClick && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk34ST3MKOjs.Button_default, { variant: "outline", action: "primary", size: "small", onClick: onEmptyStateButtonClick, iconLeft: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _Plus.PlusIcon, { size: 16, weight: "bold" }), children: emptyStateButtonText } ) ] }) ] } ); }; exports.StatisticsCard = StatisticsCard; //# sourceMappingURL=chunk-XGPQAGQF.js.map