@etus/ui 0.4.0-beta.11 → 0.4.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-7B577M5O.js → chunk-2YSZPUQZ.js} +3 -3
- package/dist/{chunk-7B577M5O.js.map → chunk-2YSZPUQZ.js.map} +1 -1
- package/dist/{chunk-IHW6IJE5.js → chunk-3NLWCX2F.js} +3 -3
- package/dist/{chunk-IHW6IJE5.js.map → chunk-3NLWCX2F.js.map} +1 -1
- package/dist/{chunk-WOOBWQHY.js → chunk-3NSIUZGP.js} +3 -3
- package/dist/{chunk-WOOBWQHY.js.map → chunk-3NSIUZGP.js.map} +1 -1
- package/dist/{chunk-Y6ZXHHUS.js → chunk-3W7FXRO5.js} +3 -3
- package/dist/{chunk-Y6ZXHHUS.js.map → chunk-3W7FXRO5.js.map} +1 -1
- package/dist/{chunk-2TAFX4RZ.js → chunk-7GCTZEMK.js} +3 -3
- package/dist/{chunk-2TAFX4RZ.js.map → chunk-7GCTZEMK.js.map} +1 -1
- package/dist/{chunk-6TBA37U7.js → chunk-7TF5PVEU.js} +6 -6
- package/dist/chunk-7TF5PVEU.js.map +1 -0
- package/dist/{chunk-HANDVWJA.js → chunk-BS5XDYOE.js} +3 -3
- package/dist/{chunk-HANDVWJA.js.map → chunk-BS5XDYOE.js.map} +1 -1
- package/dist/{chunk-DQ43X75Q.js → chunk-EYSTEGV5.js} +4 -4
- package/dist/{chunk-DQ43X75Q.js.map → chunk-EYSTEGV5.js.map} +1 -1
- package/dist/{chunk-4KOJTZVU.js → chunk-FCIF6H6E.js} +3 -3
- package/dist/{chunk-4KOJTZVU.js.map → chunk-FCIF6H6E.js.map} +1 -1
- package/dist/{chunk-7SPMPMXE.js → chunk-GGUWEAYD.js} +3 -3
- package/dist/{chunk-7SPMPMXE.js.map → chunk-GGUWEAYD.js.map} +1 -1
- package/dist/{chunk-RRORYKXT.js → chunk-LLI3JFJL.js} +4 -4
- package/dist/{chunk-RRORYKXT.js.map → chunk-LLI3JFJL.js.map} +1 -1
- package/dist/chunk-N2WITPE2.js +249 -0
- package/dist/chunk-N2WITPE2.js.map +1 -0
- package/dist/{chunk-RN4WIA4D.js → chunk-OBRJXVWO.js} +3 -3
- package/dist/{chunk-RN4WIA4D.js.map → chunk-OBRJXVWO.js.map} +1 -1
- package/dist/{chunk-36LMNJKG.js → chunk-P27ERD6W.js} +4 -4
- package/dist/{chunk-36LMNJKG.js.map → chunk-P27ERD6W.js.map} +1 -1
- package/dist/{chunk-FBFP6LWC.js → chunk-P7D6S6GX.js} +3 -3
- package/dist/{chunk-FBFP6LWC.js.map → chunk-P7D6S6GX.js.map} +1 -1
- package/dist/{chunk-K3QIPEIV.js → chunk-R3HUGCGR.js} +3 -3
- package/dist/{chunk-K3QIPEIV.js.map → chunk-R3HUGCGR.js.map} +1 -1
- package/dist/{chunk-42RY5GAT.js → chunk-SUU3HNOX.js} +3 -3
- package/dist/{chunk-42RY5GAT.js.map → chunk-SUU3HNOX.js.map} +1 -1
- package/dist/{chunk-WDPGJHLV.js → chunk-SXPBKGLT.js} +3 -3
- package/dist/{chunk-WDPGJHLV.js.map → chunk-SXPBKGLT.js.map} +1 -1
- package/dist/{chunk-VNAC3RM2.js → chunk-T6XRYT6Q.js} +3 -3
- package/dist/{chunk-VNAC3RM2.js.map → chunk-T6XRYT6Q.js.map} +1 -1
- package/dist/chunk-TP4PDKFE.js +3 -0
- package/dist/{chunk-IXJHHR3Y.js.map → chunk-TP4PDKFE.js.map} +1 -1
- package/dist/{chunk-R52QIEJZ.js → chunk-UYC7M3FM.js} +3 -3
- package/dist/{chunk-R52QIEJZ.js.map → chunk-UYC7M3FM.js.map} +1 -1
- package/dist/{chunk-KO3R4JFH.js → chunk-VLDAHAG6.js} +3 -3
- package/dist/{chunk-KO3R4JFH.js.map → chunk-VLDAHAG6.js.map} +1 -1
- package/dist/{chunk-OWLYSN7L.js → chunk-W7S7GPU5.js} +3 -3
- package/dist/{chunk-OWLYSN7L.js.map → chunk-W7S7GPU5.js.map} +1 -1
- package/dist/{chunk-Z2RO42XL.js → chunk-WXBC3D2N.js} +4 -4
- package/dist/{chunk-Z2RO42XL.js.map → chunk-WXBC3D2N.js.map} +1 -1
- package/dist/{chunk-DCUFQJYP.js → chunk-Y4RKKQMB.js} +14 -5
- package/dist/chunk-Y4RKKQMB.js.map +1 -0
- package/dist/{chunk-ZUNG2RTQ.js → chunk-YUHPTV2A.js} +3 -3
- package/dist/{chunk-ZUNG2RTQ.js.map → chunk-YUHPTV2A.js.map} +1 -1
- package/dist/{chunk-Z46KLLW2.js → chunk-ZP4HYVDG.js} +3 -3
- package/dist/{chunk-Z46KLLW2.js.map → chunk-ZP4HYVDG.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +2 -2
- package/dist/components/advanced/EventCalendar/index.js +2 -2
- package/dist/components/advanced/FilterBuilder/index.js +2 -2
- package/dist/components/advanced/ReportBuilder/index.js +2 -2
- package/dist/components/advanced/index.js +11 -11
- package/dist/components/data-display/Carousel/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +4 -4
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +2 -2
- package/dist/components/data-display/DataTable/index.js +3 -3
- package/dist/components/data-display/ImageGallery/index.js +3 -3
- package/dist/components/data-display/index.js +19 -19
- package/dist/components/feedback/AlertDialog/index.js +2 -2
- package/dist/components/feedback/ConfirmModal/index.js +3 -3
- package/dist/components/feedback/index.js +5 -5
- package/dist/components/forms/DatePicker/index.js +3 -3
- package/dist/components/forms/DateRangePicker/index.js +3 -3
- package/dist/components/forms/InputGroup/index.js +2 -2
- package/dist/components/forms/index.js +15 -15
- package/dist/components/index.js +86 -85
- package/dist/components/layout/index.js +1 -1
- package/dist/components/navigation/MobileSidebar/index.js +1 -1
- package/dist/components/navigation/Pagination/index.js +2 -2
- package/dist/components/navigation/Sidebar/index.js +2 -2
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/primitives/Button/index.js +1 -1
- package/dist/components/primitives/ConfirmButton/index.js +3 -3
- package/dist/components/primitives/PaymentMethodIcon/index.js +5 -0
- package/dist/components/primitives/PaymentMethodIcon/index.js.map +1 -0
- package/dist/components/primitives/Tag/index.js +1 -1
- package/dist/components/primitives/index.js +15 -14
- package/dist/components/workflow/ApprovalFlow/index.js +2 -2
- package/dist/components/workflow/CommentSystem/index.js +2 -2
- package/dist/components/workflow/Dashboard/index.js +2 -2
- package/dist/components/workflow/DashboardBuilder/index.js +2 -2
- package/dist/components/workflow/KanbanBoard/index.js +2 -2
- package/dist/components/workflow/ReportGenerator/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +2 -2
- package/dist/components/workflow/index.js +9 -9
- package/dist/index.d.ts +43 -2
- package/dist/index.js +86 -85
- package/dist/styles.css +71 -28
- package/package.json +2 -2
- package/dist/chunk-6TBA37U7.js.map +0 -1
- package/dist/chunk-DCUFQJYP.js.map +0 -1
- package/dist/chunk-IXJHHR3Y.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/ReportGenerator/ReportGenerator.variants.ts","../src/components/workflow/ReportGenerator/ReportGenerator.tsx"],"names":["FilterIcon"],"mappings":"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","file":"chunk-42RY5GAT.js","sourcesContent":["/* eslint-disable sonarjs/no-duplicate-string -- Tailwind classes are intentionally duplicated across variants */\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ReportGenerator container variants\n */\nexport const reportGeneratorVariants = cva(\n [\n \"relative\",\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"text-card-foreground\",\n ],\n {\n variants: {\n size: {\n default: \"p-6\",\n sm: \"p-4\",\n lg: \"p-8\",\n },\n layout: {\n default: \"\",\n compact: \"max-w-2xl\",\n full: \"w-full\",\n },\n },\n defaultVariants: {\n size: \"default\",\n layout: \"default\",\n },\n }\n)\n\n/**\n * Step indicator variants\n */\nexport const stepIndicatorVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"mb-6\",\n \"pb-6\",\n \"border-b\",\n \"border-border\",\n ],\n {\n variants: {\n size: {\n default: \"gap-4\",\n sm: \"gap-3\",\n lg: \"gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Step item variants\n */\nexport const stepItemVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"gap-2\",\n \"transition-colors\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n pending: \"text-muted-foreground\",\n active: \"text-primary\",\n complete: \"text-success\",\n },\n clickable: {\n true: \"cursor-pointer hover:text-primary\",\n false: \"\",\n },\n },\n defaultVariants: {\n state: \"pending\",\n clickable: false,\n },\n }\n)\n\n/**\n * Step badge variants\n */\nexport const stepBadgeVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"rounded-full\",\n \"font-medium\",\n \"transition-colors\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n pending: \"bg-muted text-muted-foreground\",\n active: \"bg-primary text-primary-foreground\",\n complete: \"bg-success text-success-foreground\",\n },\n size: {\n default: \"h-8 w-8 text-sm\",\n sm: \"h-6 w-6 text-xs\",\n lg: \"h-10 w-10 text-base\",\n },\n },\n defaultVariants: {\n state: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Template grid variants\n */\nexport const templateGridVariants = cva(\n [\n \"grid\",\n \"gap-4\",\n ],\n {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n)\n\n/**\n * Template card variants\n */\nexport const templateCardVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-background\",\n \"p-4\",\n \"cursor-pointer\",\n \"transition-all\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n default: \"hover:border-primary/50 hover:shadow-sm\",\n selected: \"border-primary ring-2 ring-primary/20\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Configuration section variants\n */\nexport const configSectionVariants = cva(\n [\n \"space-y-4\",\n ],\n {\n variants: {\n size: {\n default: \"mb-6\",\n sm: \"mb-4\",\n lg: \"mb-8\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview container variants\n */\nexport const previewContainerVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-muted/30\",\n \"overflow-hidden\",\n ],\n {\n variants: {\n size: {\n default: \"min-h-96\",\n sm: \"min-h-72\",\n lg: \"min-h-[var(--report-generator-root-min-height-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview header variants\n */\nexport const previewHeaderVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-between\",\n \"border-b\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n size: {\n default: \"px-4 py-3\",\n sm: \"px-3 py-2\",\n lg: \"px-6 py-4\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview content variants\n */\nexport const previewContentVariants = cva(\n [\n \"overflow-auto\",\n ],\n {\n variants: {\n size: {\n default: \"p-4 max-h-96\",\n sm: \"p-3 max-h-72\",\n lg: \"p-6 max-h-[var(--report-generator-output-max-height-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Export button group variants\n */\nexport const exportButtonGroupVariants = cva(\n [\n \"flex\",\n \"flex-wrap\",\n \"gap-2\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"end\",\n },\n }\n)\n\n/**\n * Form actions variants\n */\nexport const formActionsVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"gap-3\",\n \"pt-6\",\n \"border-t\",\n \"border-border\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n between: \"justify-between\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"between\",\n },\n }\n)\n\n/**\n * Loading state variants\n */\nexport const loadingStateVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n ],\n {\n variants: {\n size: {\n default: \"py-16 gap-4\",\n sm: \"py-12 gap-3\",\n lg: \"py-20 gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Error state variants\n */\nexport const errorStateVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"text-destructive\",\n ],\n {\n variants: {\n size: {\n default: \"py-16 gap-4\",\n sm: \"py-12 gap-3\",\n lg: \"py-20 gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nexport type ReportGeneratorVariantProps = VariantProps<\n typeof reportGeneratorVariants\n>\nexport type StepIndicatorVariantProps = VariantProps<\n typeof stepIndicatorVariants\n>\nexport type StepBadgeVariantProps = VariantProps<typeof stepBadgeVariants>\nexport type TemplateCardVariantProps = VariantProps<typeof templateCardVariants>\nexport type PreviewContainerVariantProps = VariantProps<\n typeof previewContainerVariants\n>\n","import type {\n ColumnDefinition,\n ExportFormat,\n ReportConfig,\n ReportGeneratorProps,\n ReportGeneratorState,\n ReportTemplate,\n ScheduleConfig,\n} from \"./ReportGenerator.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport {\n AlertCircle,\n ArrowLeft,\n ArrowRight,\n Calendar,\n Check,\n Clock,\n Download,\n Eye,\n FileJson,\n FileSpreadsheet,\n FileText,\n Filter as FilterIcon,\n Loader2,\n Printer,\n Settings2,\n Table2,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Checkbox } from \"../../forms/Checkbox\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n configSectionVariants,\n errorStateVariants,\n exportButtonGroupVariants,\n formActionsVariants,\n loadingStateVariants,\n previewContainerVariants,\n previewContentVariants,\n previewHeaderVariants,\n reportGeneratorVariants,\n stepBadgeVariants,\n stepIndicatorVariants,\n stepItemVariants,\n templateCardVariants,\n templateGridVariants,\n} from \"./ReportGenerator.variants\"\n\n/**\n * Step definitions\n */\nconst STEPS = [\n { label: \"Selecionar Template\", description: \"Escolha o tipo de relatório\" },\n { label: \"Configurar\", description: \"Defina filtros e colunas\" },\n { label: \"Visualizar\", description: \"Prévia do relatório\" },\n { label: \"Exportar\", description: \"Baixe o relatório\" },\n] as const\n\n/**\n * Export format labels and icons\n */\nconst EXPORT_FORMAT_INFO: Record<\n ExportFormat,\n { icon: React.ComponentType<{ className?: string }>; label: string; }\n> = {\n pdf: { label: \"PDF\", icon: FileText },\n xlsx: { label: \"Excel\", icon: FileSpreadsheet },\n csv: { label: \"CSV\", icon: Table2 },\n json: { label: \"JSON\", icon: FileJson },\n print: { label: \"Imprimir\", icon: Printer },\n}\n\n/**\n * StepIndicator displays the current progress through the wizard\n */\nfunction StepIndicator({\n currentStep,\n completedSteps,\n onStepClick,\n}: {\n completedSteps: number[]\n currentStep: number\n onStepClick?: (step: number) => void\n}) {\n return (\n <div\n aria-label=\"Etapas do gerador de relatórios\"\n className={stepIndicatorVariants()}\n role=\"navigation\"\n >\n {STEPS.map((step, index) => {\n const isComplete = completedSteps.includes(index)\n const isActive = index === currentStep\n const isClickable = onStepClick && (isComplete || index < currentStep)\n\n const handleClick = () => {\n if (isClickable) {\n onStepClick(index)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (isClickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n onStepClick(index)\n }\n }\n\n return (\n <div\n key={step.label}\n className={cn(\n stepItemVariants({\n state: isComplete ? \"complete\" : isActive ? \"active\" : \"pending\",\n clickable: isClickable,\n }),\n index > 0 && \"flex-1\"\n )}\n aria-current={isActive ? \"step\" : undefined}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {index > 0 && (\n <div\n className={cn(\n \"h-px flex-1 mr-2\",\n isComplete || isActive ? \"bg-primary\" : \"bg-border\"\n )}\n />\n )}\n <div\n className={stepBadgeVariants({\n state: isComplete ? \"complete\" : isActive ? \"active\" : \"pending\",\n })}\n >\n {isComplete ? <Check className=\"h-4 w-4\" /> : index + 1}\n </div>\n <div className=\"hidden sm:block\">\n <div className=\"text-sm font-medium\">{step.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {step.description}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\n/**\n * TemplateSelector displays available templates for selection\n */\nfunction TemplateSelector({\n templates,\n selectedTemplate,\n onSelect,\n}: {\n onSelect: (templateId: string) => void\n selectedTemplate?: string\n templates: ReportTemplate[]\n}) {\n const groupedTemplates = useMemo(() => {\n const groups: Record<string, ReportTemplate[]> = {}\n for (const template of templates) {\n const category = template.category\n groups[category] ??= []\n groups[category].push(template)\n }\n return groups\n }, [templates])\n\n const handleTemplateClick = (templateId: string) => {\n onSelect(templateId)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>, templateId: string) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onSelect(templateId)\n }\n }\n\n return (\n <div aria-label=\"Templates disponíveis\" className=\"space-y-6\" role=\"listbox\">\n {Object.entries(groupedTemplates).map(([category, categoryTemplates]) => (\n <div key={category} className=\"space-y-3\">\n <h3 className=\"text-sm font-medium text-muted-foreground\">\n {category}\n </h3>\n <div className={templateGridVariants()}>\n {categoryTemplates.map((template) => {\n const isSelected = selectedTemplate === template.id\n return (\n <div\n key={template.id}\n className={templateCardVariants({\n state: isSelected ? \"selected\" : \"default\",\n })}\n aria-selected={isSelected}\n role=\"option\"\n tabIndex={0}\n onClick={() => { handleTemplateClick(template.id); }}\n onKeyDown={(e) => { handleKeyDown(e, template.id); }}\n >\n <div className=\"flex items-start gap-3\">\n {template.icon && (\n <div className=\"shrink-0 text-primary\">{template.icon}</div>\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-medium\">{template.name}</div>\n <div className=\"text-sm text-muted-foreground line-clamp-2\">\n {template.description}\n </div>\n <div className=\"mt-2 text-xs text-muted-foreground\">\n {template.columns.length} colunas\n </div>\n </div>\n {isSelected && (\n <Check className=\"h-5 w-5 text-primary shrink-0\" />\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/**\n * ConfigurationForm allows configuring the report\n */\nfunction ConfigurationForm({\n template,\n config,\n onChange,\n showSchedule,\n}: {\n config: Partial<ReportConfig>\n onChange: (config: Partial<ReportConfig>) => void\n showSchedule?: boolean\n template: ReportTemplate\n}) {\n const formId = useId()\n\n const handleColumnToggle = (columnId: string, checked: boolean) => {\n const currentColumns = config.columns ?? template.columns.map((c) => c.id)\n const newColumns = checked\n ? [...currentColumns, columnId]\n : currentColumns.filter((id) => id !== columnId)\n onChange({ ...config, columns: newColumns })\n }\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({ ...config, title: e.target.value })\n }\n\n const handleIncludeChartsChange = (checked: boolean) => {\n onChange({ ...config, includeCharts: checked })\n }\n\n const handleIncludeSummaryChange = (checked: boolean) => {\n onChange({ ...config, includeSummary: checked })\n }\n\n const selectedColumns = config.columns ?? template.columns.map((c) => c.id)\n\n return (\n <div aria-describedby={`${formId}-desc`} className=\"space-y-6\" role=\"form\">\n <p className=\"sr-only\" id={`${formId}-desc`}>\n Configure o relatório selecionando colunas e opções\n </p>\n\n {/* Report Title */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Settings2 className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Configurações Gerais</h3>\n </div>\n <div className=\"space-y-4\">\n <div>\n <Label htmlFor={`${formId}-title`}>Título do Relatório</Label>\n <input\n className=\"mt-1.5 w-full px-3 py-2 rounded-md border border-input bg-background text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n id={`${formId}-title`}\n placeholder={template.name}\n type=\"text\"\n value={config.title ?? \"\"}\n onChange={handleTitleChange}\n />\n </div>\n </div>\n </div>\n\n {/* Column Selection */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Table2 className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Colunas</h3>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {template.columns.map((column) => (\n <div key={column.id} className=\"flex items-center gap-2\">\n <Checkbox\n checked={selectedColumns.includes(column.id)}\n id={`${formId}-col-${column.id}`}\n onCheckedChange={(checked) =>\n { handleColumnToggle(column.id, checked === true); }\n }\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-col-${column.id}`}\n >\n {column.label}\n </Label>\n </div>\n ))}\n </div>\n </div>\n\n {/* Filters Section */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <FilterIcon className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Filtros</h3>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {template.defaultFilters && template.defaultFilters.length > 0\n ? `${String(template.defaultFilters.length)} filtro(s) configurado(s)`\n : \"Nenhum filtro configurado\"}\n </p>\n </div>\n\n {/* Options */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Opções</h3>\n </div>\n <div className=\"space-y-3\">\n {template.charts && template.charts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={config.includeCharts ?? true}\n id={`${formId}-charts`}\n onCheckedChange={handleIncludeChartsChange}\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-charts`}\n >\n Incluir gráficos\n </Label>\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={config.includeSummary ?? true}\n id={`${formId}-summary`}\n onCheckedChange={handleIncludeSummaryChange}\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-summary`}\n >\n Incluir resumo estatístico\n </Label>\n </div>\n </div>\n </div>\n\n {/* Schedule Option */}\n {showSchedule && (\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Agendamento</h3>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Configure o agendamento após gerar o relatório\n </p>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * PreviewPanel displays the report preview\n */\nfunction PreviewPanel({\n data,\n columns,\n config,\n branding,\n}: {\n branding?: ReportGeneratorProps[\"branding\"]\n columns: ColumnDefinition[]\n config: ReportConfig\n data: unknown[]\n}) {\n const selectedColumns = columns.filter((c) => config.columns.includes(c.id))\n\n const formatValue = (value: unknown, column: ColumnDefinition): string => {\n if (value === null || value === undefined) return \"-\"\n\n switch (column.type) {\n case \"currency\":\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(Number(value))\n case \"date\":\n return new Intl.DateTimeFormat(\"pt-BR\").format(\n new Date(typeof value === \"string\" || typeof value === \"number\" ? value : 0)\n )\n case \"number\":\n return new Intl.NumberFormat(\"pt-BR\").format(Number(value))\n case \"boolean\":\n return value === true ? \"Sim\" : \"Não\"\n default:\n return typeof value === \"object\" ? JSON.stringify(value) : String(value as boolean | number | string)\n }\n }\n\n return (\n <div className={previewContainerVariants()}>\n <div className={previewHeaderVariants()}>\n <div className=\"flex items-center gap-3\">\n {branding?.logo && (\n <img\n alt={branding.companyName ?? \"Logo\"}\n className=\"h-8 w-auto\"\n src={branding.logo}\n />\n )}\n <div>\n <div className=\"font-semibold\">{config.title || \"Relatório\"}</div>\n {config.description && (\n <div className=\"text-xs text-muted-foreground\">\n {config.description}\n </div>\n )}\n </div>\n </div>\n <div className=\"text-xs text-muted-foreground\">\n {data.length} registro(s)\n </div>\n </div>\n <div className={previewContentVariants()}>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border\">\n {selectedColumns.map((column) => (\n <th\n key={column.id}\n className=\"px-3 py-2 text-left font-medium text-muted-foreground\"\n >\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.slice(0, 10).map((row, rowIndex) => {\n // Generate stable key from row data since preview data has no IDs\n const rowKey = `row-${String(rowIndex)}-${JSON.stringify(Object.values(row as Record<string, unknown>).slice(0, 2))}`\n return (\n <tr key={rowKey} className=\"border-b border-border/50\">\n {selectedColumns.map((column) => (\n <td key={column.id} className=\"px-3 py-2\">\n {formatValue(\n (row as Record<string, unknown>)[column.field],\n column\n )}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n {data.length > 10 && (\n <div className=\"mt-4 text-center text-sm text-muted-foreground\">\n Mostrando 10 de {data.length} registros\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ExportPanel displays export options\n */\nfunction ExportPanel({\n exportFormats,\n onExport,\n isExporting,\n showSchedule,\n onSchedule,\n}: {\n exportFormats: ExportFormat[]\n isExporting: boolean\n onExport: (format: ExportFormat) => void\n onSchedule?: () => void\n showSchedule?: boolean\n}) {\n return (\n <div className=\"space-y-6\">\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Download className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Formato de Exportação</h3>\n </div>\n <div className={exportButtonGroupVariants({ align: \"start\" })}>\n {exportFormats.map((format) => {\n const info = EXPORT_FORMAT_INFO[format]\n const Icon = info.icon\n return (\n <Button\n key={format}\n disabled={isExporting}\n size=\"lg\"\n variant=\"outline\"\n onClick={() => { onExport(format); }}\n >\n <Icon className=\"h-4 w-4 mr-2\" />\n {info.label}\n </Button>\n )\n })}\n </div>\n </div>\n\n {showSchedule && onSchedule && (\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Calendar className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Agendar Relatório</h3>\n </div>\n <Button variant=\"outline\" onClick={onSchedule}>\n <Clock className=\"h-4 w-4 mr-2\" />\n Configurar Agendamento\n </Button>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ReportGenerator is a wizard-style component for creating and exporting reports\n */\nfunction ReportGenerator({\n templates,\n dataSource,\n defaultTemplate,\n exportFormats = [\"pdf\", \"xlsx\", \"csv\"],\n showPreview = true,\n showSchedule = false,\n maxRows = 10000,\n branding,\n className,\n onGenerate,\n onReportExport,\n onSchedule,\n onReportError,\n onConfigChange,\n size,\n layout,\n}: ReportGeneratorProps) {\n const componentId = useId()\n\n // State\n const [currentStep, setCurrentStep] = useState(0)\n const [completedSteps, setCompletedSteps] = useState<number[]>([])\n const [generatorState, setGeneratorState] =\n useState<ReportGeneratorState>(\"idle\")\n const [selectedTemplateId, setSelectedTemplateId] = useState<string | undefined>(\n defaultTemplate\n )\n const [config, setConfig] = useState<Partial<ReportConfig>>({})\n const [previewData, setPreviewData] = useState<unknown[]>([])\n const [error, setError] = useState<Error | null>(null)\n\n // Computed values\n const selectedTemplate = useMemo(\n () => templates.find((t) => t.id === selectedTemplateId),\n [templates, selectedTemplateId]\n )\n\n const effectiveSteps = useMemo(() => {\n if (!showPreview) {\n return STEPS.filter((_, index) => index !== 2)\n }\n return STEPS\n }, [showPreview])\n\n const isGenerating = generatorState === \"generating\"\n const isExporting = generatorState === \"exporting\"\n\n // Handlers\n const handleTemplateSelect = useCallback(\n (templateId: string) => {\n setSelectedTemplateId(templateId)\n const template = templates.find((t) => t.id === templateId)\n if (template) {\n const initialConfig: Partial<ReportConfig> = {\n templateId,\n title: template.name,\n columns: template.columns.map((c) => c.id),\n filters: template.defaultFilters ?? [],\n includeCharts: true,\n includeSummary: true,\n }\n setConfig(initialConfig)\n onConfigChange?.({ config: initialConfig as ReportConfig })\n }\n },\n [templates, onConfigChange]\n )\n\n const handleConfigChange = useCallback(\n (newConfig: Partial<ReportConfig>) => {\n setConfig(newConfig)\n onConfigChange?.({ config: newConfig as ReportConfig })\n },\n [onConfigChange]\n )\n\n const handleNext = useCallback(() => {\n // Mark current step as complete\n if (!completedSteps.includes(currentStep)) {\n setCompletedSteps((prev) => [...prev, currentStep])\n }\n\n // Moving from template selection to configuration\n if (currentStep === 0 && !selectedTemplateId) {\n return\n }\n\n // Moving to preview step - generate report\n if (currentStep === 1 && showPreview) {\n setGeneratorState(\"generating\")\n try {\n onGenerate?.({ config: config as ReportConfig })\n\n // Simulate data fetching based on data source\n let data: unknown[] = []\n if (dataSource.type === \"static\" && dataSource.data) {\n data = dataSource.data.slice(0, maxRows)\n } else {\n // For API/query, we'd fetch data here\n // For now, use empty array as placeholder\n data = []\n }\n\n setPreviewData(data)\n setGeneratorState(\"preview\")\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setError(errorObj)\n setGeneratorState(\"error\")\n onReportError?.({ error: errorObj })\n return\n }\n }\n\n setCurrentStep((prev) => Math.min(prev + 1, effectiveSteps.length - 1))\n }, [\n currentStep,\n completedSteps,\n selectedTemplateId,\n showPreview,\n config,\n dataSource,\n maxRows,\n effectiveSteps.length,\n onGenerate,\n onReportError,\n ])\n\n const handleBack = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0))\n if (generatorState === \"error\") {\n setGeneratorState(\"idle\")\n setError(null)\n }\n }, [generatorState])\n\n const handleStepClick = useCallback(\n (step: number) => {\n if (step < currentStep || completedSteps.includes(step)) {\n setCurrentStep(step)\n }\n },\n [currentStep, completedSteps]\n )\n\n const handleExport = useCallback(\n (format: ExportFormat) => {\n setGeneratorState(\"exporting\")\n try {\n // Create export blob based on format\n const content = JSON.stringify({\n config,\n data: previewData,\n format,\n generatedAt: new Date().toISOString(),\n })\n const blob = new Blob([content], { type: \"application/json\" })\n\n onReportExport?.({ format, data: blob })\n setGeneratorState(\"idle\")\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setError(errorObj)\n setGeneratorState(\"error\")\n onReportError?.({ error: errorObj })\n }\n },\n [config, previewData, onReportExport, onReportError]\n )\n\n const handleSchedule = useCallback(() => {\n const schedule: ScheduleConfig = {\n frequency: \"weekly\",\n time: \"09:00\",\n recipients: [],\n format: \"pdf\",\n }\n onSchedule?.({ schedule })\n }, [onSchedule])\n\n // Determine if we can proceed to next step\n const canProceed = useMemo(() => {\n switch (currentStep) {\n case 0:\n return !!selectedTemplateId\n case 1:\n return (\n config.columns && config.columns.length > 0 && !!config.title?.trim()\n )\n default:\n return true\n }\n }, [currentStep, selectedTemplateId, config])\n\n // Render loading state for generation only\n if (isGenerating) {\n return (\n <div\n aria-busy=\"true\"\n aria-describedby={`${componentId}-loading`}\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n role=\"status\"\n >\n <div className={loadingStateVariants()}>\n <Loader2 className=\"h-8 w-8 animate-spin text-primary\" />\n <div id={`${componentId}-loading`}>\n <p className=\"font-medium\">Gerando relatório...</p>\n <p className=\"text-sm text-muted-foreground\">\n Por favor, aguarde\n </p>\n </div>\n </div>\n </div>\n )\n }\n\n // Render error state\n if (generatorState === \"error\" && error) {\n return (\n <div\n aria-describedby={`${componentId}-error`}\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n role=\"alert\"\n >\n <div className={errorStateVariants()}>\n <AlertCircle className=\"h-8 w-8\" />\n <div id={`${componentId}-error`}>\n <p className=\"font-medium\">Erro ao gerar relatório</p>\n <p className=\"text-sm\">{error.message}</p>\n </div>\n <Button variant=\"outline\" onClick={handleBack}>\n <ArrowLeft className=\"h-4 w-4 mr-2\" />\n Voltar\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-describedby={`${componentId}-desc`}\n aria-label=\"Gerador de Relatórios\"\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n data-slot=\"report-generator\"\n role=\"form\"\n >\n <p className=\"sr-only\" id={`${componentId}-desc`}>\n Use este assistente para criar e exportar relatórios personalizados\n </p>\n\n {/* Step Indicator */}\n <StepIndicator\n completedSteps={completedSteps}\n currentStep={currentStep}\n onStepClick={handleStepClick}\n />\n\n {/* Step Content */}\n <div aria-live=\"polite\" className=\"min-h-72\">\n {/* Step 0: Template Selection */}\n {currentStep === 0 && (\n <TemplateSelector\n selectedTemplate={selectedTemplateId}\n templates={templates}\n onSelect={handleTemplateSelect}\n />\n )}\n\n {/* Step 1: Configuration */}\n {currentStep === 1 && selectedTemplate && (\n <ConfigurationForm\n config={config}\n showSchedule={showSchedule}\n template={selectedTemplate}\n onChange={handleConfigChange}\n />\n )}\n\n {/* Step 2: Preview (if enabled) */}\n {currentStep === 2 && showPreview && selectedTemplate && (\n <PreviewPanel\n branding={branding}\n columns={selectedTemplate.columns}\n config={config as ReportConfig}\n data={previewData}\n />\n )}\n\n {/* Step 3/2: Export */}\n {((currentStep === 3 && showPreview) ||\n (currentStep === 2 && !showPreview)) && (\n <ExportPanel\n exportFormats={exportFormats}\n isExporting={isExporting}\n showSchedule={showSchedule}\n onExport={handleExport}\n onSchedule={showSchedule ? handleSchedule : undefined}\n />\n )}\n </div>\n\n {/* Navigation Actions */}\n <div className={formActionsVariants()}>\n <Button\n disabled={currentStep === 0}\n variant=\"outline\"\n onClick={handleBack}\n >\n <ArrowLeft className=\"h-4 w-4 mr-2\" />\n Voltar\n </Button>\n {currentStep < effectiveSteps.length - 1 ? (\n <Button disabled={!canProceed} onClick={handleNext}>\n Próximo\n <ArrowRight className=\"h-4 w-4 ml-2\" />\n </Button>\n ) : null}\n </div>\n </div>\n )\n}\n\nexport { ReportGenerator }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/ReportGenerator/ReportGenerator.variants.ts","../src/components/workflow/ReportGenerator/ReportGenerator.tsx"],"names":["FilterIcon"],"mappings":"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","file":"chunk-SUU3HNOX.js","sourcesContent":["/* eslint-disable sonarjs/no-duplicate-string -- Tailwind classes are intentionally duplicated across variants */\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * ReportGenerator container variants\n */\nexport const reportGeneratorVariants = cva(\n [\n \"relative\",\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"text-card-foreground\",\n ],\n {\n variants: {\n size: {\n default: \"p-6\",\n sm: \"p-4\",\n lg: \"p-8\",\n },\n layout: {\n default: \"\",\n compact: \"max-w-2xl\",\n full: \"w-full\",\n },\n },\n defaultVariants: {\n size: \"default\",\n layout: \"default\",\n },\n }\n)\n\n/**\n * Step indicator variants\n */\nexport const stepIndicatorVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"mb-6\",\n \"pb-6\",\n \"border-b\",\n \"border-border\",\n ],\n {\n variants: {\n size: {\n default: \"gap-4\",\n sm: \"gap-3\",\n lg: \"gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Step item variants\n */\nexport const stepItemVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"gap-2\",\n \"transition-colors\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n pending: \"text-muted-foreground\",\n active: \"text-primary\",\n complete: \"text-success\",\n },\n clickable: {\n true: \"cursor-pointer hover:text-primary\",\n false: \"\",\n },\n },\n defaultVariants: {\n state: \"pending\",\n clickable: false,\n },\n }\n)\n\n/**\n * Step badge variants\n */\nexport const stepBadgeVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"rounded-full\",\n \"font-medium\",\n \"transition-colors\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n pending: \"bg-muted text-muted-foreground\",\n active: \"bg-primary text-primary-foreground\",\n complete: \"bg-success text-success-foreground\",\n },\n size: {\n default: \"h-8 w-8 text-sm\",\n sm: \"h-6 w-6 text-xs\",\n lg: \"h-10 w-10 text-base\",\n },\n },\n defaultVariants: {\n state: \"pending\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Template grid variants\n */\nexport const templateGridVariants = cva(\n [\n \"grid\",\n \"gap-4\",\n ],\n {\n variants: {\n columns: {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n)\n\n/**\n * Template card variants\n */\nexport const templateCardVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-background\",\n \"p-4\",\n \"cursor-pointer\",\n \"transition-all\",\n \"duration-200\",\n ],\n {\n variants: {\n state: {\n default: \"hover:border-primary/50 hover:shadow-sm\",\n selected: \"border-primary ring-2 ring-primary/20\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Configuration section variants\n */\nexport const configSectionVariants = cva(\n [\n \"space-y-4\",\n ],\n {\n variants: {\n size: {\n default: \"mb-6\",\n sm: \"mb-4\",\n lg: \"mb-8\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview container variants\n */\nexport const previewContainerVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-muted/30\",\n \"overflow-hidden\",\n ],\n {\n variants: {\n size: {\n default: \"min-h-96\",\n sm: \"min-h-72\",\n lg: \"min-h-[var(--report-generator-root-min-height-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview header variants\n */\nexport const previewHeaderVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-between\",\n \"border-b\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n size: {\n default: \"px-4 py-3\",\n sm: \"px-3 py-2\",\n lg: \"px-6 py-4\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Preview content variants\n */\nexport const previewContentVariants = cva(\n [\n \"overflow-auto\",\n ],\n {\n variants: {\n size: {\n default: \"p-4 max-h-96\",\n sm: \"p-3 max-h-72\",\n lg: \"p-6 max-h-[var(--report-generator-output-max-height-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Export button group variants\n */\nexport const exportButtonGroupVariants = cva(\n [\n \"flex\",\n \"flex-wrap\",\n \"gap-2\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"end\",\n },\n }\n)\n\n/**\n * Form actions variants\n */\nexport const formActionsVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"gap-3\",\n \"pt-6\",\n \"border-t\",\n \"border-border\",\n ],\n {\n variants: {\n align: {\n start: \"justify-start\",\n between: \"justify-between\",\n end: \"justify-end\",\n },\n },\n defaultVariants: {\n align: \"between\",\n },\n }\n)\n\n/**\n * Loading state variants\n */\nexport const loadingStateVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n ],\n {\n variants: {\n size: {\n default: \"py-16 gap-4\",\n sm: \"py-12 gap-3\",\n lg: \"py-20 gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Error state variants\n */\nexport const errorStateVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"text-destructive\",\n ],\n {\n variants: {\n size: {\n default: \"py-16 gap-4\",\n sm: \"py-12 gap-3\",\n lg: \"py-20 gap-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nexport type ReportGeneratorVariantProps = VariantProps<\n typeof reportGeneratorVariants\n>\nexport type StepIndicatorVariantProps = VariantProps<\n typeof stepIndicatorVariants\n>\nexport type StepBadgeVariantProps = VariantProps<typeof stepBadgeVariants>\nexport type TemplateCardVariantProps = VariantProps<typeof templateCardVariants>\nexport type PreviewContainerVariantProps = VariantProps<\n typeof previewContainerVariants\n>\n","import type {\n ColumnDefinition,\n ExportFormat,\n ReportConfig,\n ReportGeneratorProps,\n ReportGeneratorState,\n ReportTemplate,\n ScheduleConfig,\n} from \"./ReportGenerator.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport {\n AlertCircle,\n ArrowLeft,\n ArrowRight,\n Calendar,\n Check,\n Clock,\n Download,\n Eye,\n FileJson,\n FileSpreadsheet,\n FileText,\n Filter as FilterIcon,\n Loader2,\n Printer,\n Settings2,\n Table2,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Checkbox } from \"../../forms/Checkbox\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n configSectionVariants,\n errorStateVariants,\n exportButtonGroupVariants,\n formActionsVariants,\n loadingStateVariants,\n previewContainerVariants,\n previewContentVariants,\n previewHeaderVariants,\n reportGeneratorVariants,\n stepBadgeVariants,\n stepIndicatorVariants,\n stepItemVariants,\n templateCardVariants,\n templateGridVariants,\n} from \"./ReportGenerator.variants\"\n\n/**\n * Step definitions\n */\nconst STEPS = [\n { label: \"Selecionar Template\", description: \"Escolha o tipo de relatório\" },\n { label: \"Configurar\", description: \"Defina filtros e colunas\" },\n { label: \"Visualizar\", description: \"Prévia do relatório\" },\n { label: \"Exportar\", description: \"Baixe o relatório\" },\n] as const\n\n/**\n * Export format labels and icons\n */\nconst EXPORT_FORMAT_INFO: Record<\n ExportFormat,\n { icon: React.ComponentType<{ className?: string }>; label: string; }\n> = {\n pdf: { label: \"PDF\", icon: FileText },\n xlsx: { label: \"Excel\", icon: FileSpreadsheet },\n csv: { label: \"CSV\", icon: Table2 },\n json: { label: \"JSON\", icon: FileJson },\n print: { label: \"Imprimir\", icon: Printer },\n}\n\n/**\n * StepIndicator displays the current progress through the wizard\n */\nfunction StepIndicator({\n currentStep,\n completedSteps,\n onStepClick,\n}: {\n completedSteps: number[]\n currentStep: number\n onStepClick?: (step: number) => void\n}) {\n return (\n <div\n aria-label=\"Etapas do gerador de relatórios\"\n className={stepIndicatorVariants()}\n role=\"navigation\"\n >\n {STEPS.map((step, index) => {\n const isComplete = completedSteps.includes(index)\n const isActive = index === currentStep\n const isClickable = onStepClick && (isComplete || index < currentStep)\n\n const handleClick = () => {\n if (isClickable) {\n onStepClick(index)\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (isClickable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault()\n onStepClick(index)\n }\n }\n\n return (\n <div\n key={step.label}\n className={cn(\n stepItemVariants({\n state: isComplete ? \"complete\" : isActive ? \"active\" : \"pending\",\n clickable: isClickable,\n }),\n index > 0 && \"flex-1\"\n )}\n aria-current={isActive ? \"step\" : undefined}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {index > 0 && (\n <div\n className={cn(\n \"h-px flex-1 mr-2\",\n isComplete || isActive ? \"bg-primary\" : \"bg-border\"\n )}\n />\n )}\n <div\n className={stepBadgeVariants({\n state: isComplete ? \"complete\" : isActive ? \"active\" : \"pending\",\n })}\n >\n {isComplete ? <Check className=\"h-4 w-4\" /> : index + 1}\n </div>\n <div className=\"hidden sm:block\">\n <div className=\"text-sm font-medium\">{step.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {step.description}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\n/**\n * TemplateSelector displays available templates for selection\n */\nfunction TemplateSelector({\n templates,\n selectedTemplate,\n onSelect,\n}: {\n onSelect: (templateId: string) => void\n selectedTemplate?: string\n templates: ReportTemplate[]\n}) {\n const groupedTemplates = useMemo(() => {\n const groups: Record<string, ReportTemplate[]> = {}\n for (const template of templates) {\n const category = template.category\n groups[category] ??= []\n groups[category].push(template)\n }\n return groups\n }, [templates])\n\n const handleTemplateClick = (templateId: string) => {\n onSelect(templateId)\n }\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>, templateId: string) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n onSelect(templateId)\n }\n }\n\n return (\n <div aria-label=\"Templates disponíveis\" className=\"space-y-6\" role=\"listbox\">\n {Object.entries(groupedTemplates).map(([category, categoryTemplates]) => (\n <div key={category} className=\"space-y-3\">\n <h3 className=\"text-sm font-medium text-muted-foreground\">\n {category}\n </h3>\n <div className={templateGridVariants()}>\n {categoryTemplates.map((template) => {\n const isSelected = selectedTemplate === template.id\n return (\n <div\n key={template.id}\n className={templateCardVariants({\n state: isSelected ? \"selected\" : \"default\",\n })}\n aria-selected={isSelected}\n role=\"option\"\n tabIndex={0}\n onClick={() => { handleTemplateClick(template.id); }}\n onKeyDown={(e) => { handleKeyDown(e, template.id); }}\n >\n <div className=\"flex items-start gap-3\">\n {template.icon && (\n <div className=\"shrink-0 text-primary\">{template.icon}</div>\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-medium\">{template.name}</div>\n <div className=\"text-sm text-muted-foreground line-clamp-2\">\n {template.description}\n </div>\n <div className=\"mt-2 text-xs text-muted-foreground\">\n {template.columns.length} colunas\n </div>\n </div>\n {isSelected && (\n <Check className=\"h-5 w-5 text-primary shrink-0\" />\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/**\n * ConfigurationForm allows configuring the report\n */\nfunction ConfigurationForm({\n template,\n config,\n onChange,\n showSchedule,\n}: {\n config: Partial<ReportConfig>\n onChange: (config: Partial<ReportConfig>) => void\n showSchedule?: boolean\n template: ReportTemplate\n}) {\n const formId = useId()\n\n const handleColumnToggle = (columnId: string, checked: boolean) => {\n const currentColumns = config.columns ?? template.columns.map((c) => c.id)\n const newColumns = checked\n ? [...currentColumns, columnId]\n : currentColumns.filter((id) => id !== columnId)\n onChange({ ...config, columns: newColumns })\n }\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({ ...config, title: e.target.value })\n }\n\n const handleIncludeChartsChange = (checked: boolean) => {\n onChange({ ...config, includeCharts: checked })\n }\n\n const handleIncludeSummaryChange = (checked: boolean) => {\n onChange({ ...config, includeSummary: checked })\n }\n\n const selectedColumns = config.columns ?? template.columns.map((c) => c.id)\n\n return (\n <div aria-describedby={`${formId}-desc`} className=\"space-y-6\" role=\"form\">\n <p className=\"sr-only\" id={`${formId}-desc`}>\n Configure o relatório selecionando colunas e opções\n </p>\n\n {/* Report Title */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Settings2 className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Configurações Gerais</h3>\n </div>\n <div className=\"space-y-4\">\n <div>\n <Label htmlFor={`${formId}-title`}>Título do Relatório</Label>\n <input\n className=\"mt-1.5 w-full px-3 py-2 rounded-md border border-input bg-background text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n id={`${formId}-title`}\n placeholder={template.name}\n type=\"text\"\n value={config.title ?? \"\"}\n onChange={handleTitleChange}\n />\n </div>\n </div>\n </div>\n\n {/* Column Selection */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Table2 className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Colunas</h3>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {template.columns.map((column) => (\n <div key={column.id} className=\"flex items-center gap-2\">\n <Checkbox\n checked={selectedColumns.includes(column.id)}\n id={`${formId}-col-${column.id}`}\n onCheckedChange={(checked) =>\n { handleColumnToggle(column.id, checked === true); }\n }\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-col-${column.id}`}\n >\n {column.label}\n </Label>\n </div>\n ))}\n </div>\n </div>\n\n {/* Filters Section */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <FilterIcon className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Filtros</h3>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {template.defaultFilters && template.defaultFilters.length > 0\n ? `${String(template.defaultFilters.length)} filtro(s) configurado(s)`\n : \"Nenhum filtro configurado\"}\n </p>\n </div>\n\n {/* Options */}\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Eye className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Opções</h3>\n </div>\n <div className=\"space-y-3\">\n {template.charts && template.charts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={config.includeCharts ?? true}\n id={`${formId}-charts`}\n onCheckedChange={handleIncludeChartsChange}\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-charts`}\n >\n Incluir gráficos\n </Label>\n </div>\n )}\n <div className=\"flex items-center gap-2\">\n <Checkbox\n checked={config.includeSummary ?? true}\n id={`${formId}-summary`}\n onCheckedChange={handleIncludeSummaryChange}\n />\n <Label\n className=\"text-sm font-normal cursor-pointer\"\n htmlFor={`${formId}-summary`}\n >\n Incluir resumo estatístico\n </Label>\n </div>\n </div>\n </div>\n\n {/* Schedule Option */}\n {showSchedule && (\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Agendamento</h3>\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Configure o agendamento após gerar o relatório\n </p>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * PreviewPanel displays the report preview\n */\nfunction PreviewPanel({\n data,\n columns,\n config,\n branding,\n}: {\n branding?: ReportGeneratorProps[\"branding\"]\n columns: ColumnDefinition[]\n config: ReportConfig\n data: unknown[]\n}) {\n const selectedColumns = columns.filter((c) => config.columns.includes(c.id))\n\n const formatValue = (value: unknown, column: ColumnDefinition): string => {\n if (value === null || value === undefined) return \"-\"\n\n switch (column.type) {\n case \"currency\":\n return new Intl.NumberFormat(\"pt-BR\", {\n style: \"currency\",\n currency: \"BRL\",\n }).format(Number(value))\n case \"date\":\n return new Intl.DateTimeFormat(\"pt-BR\").format(\n new Date(typeof value === \"string\" || typeof value === \"number\" ? value : 0)\n )\n case \"number\":\n return new Intl.NumberFormat(\"pt-BR\").format(Number(value))\n case \"boolean\":\n return value === true ? \"Sim\" : \"Não\"\n default:\n return typeof value === \"object\" ? JSON.stringify(value) : String(value as boolean | number | string)\n }\n }\n\n return (\n <div className={previewContainerVariants()}>\n <div className={previewHeaderVariants()}>\n <div className=\"flex items-center gap-3\">\n {branding?.logo && (\n <img\n alt={branding.companyName ?? \"Logo\"}\n className=\"h-8 w-auto\"\n src={branding.logo}\n />\n )}\n <div>\n <div className=\"font-semibold\">{config.title || \"Relatório\"}</div>\n {config.description && (\n <div className=\"text-xs text-muted-foreground\">\n {config.description}\n </div>\n )}\n </div>\n </div>\n <div className=\"text-xs text-muted-foreground\">\n {data.length} registro(s)\n </div>\n </div>\n <div className={previewContentVariants()}>\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border\">\n {selectedColumns.map((column) => (\n <th\n key={column.id}\n className=\"px-3 py-2 text-left font-medium text-muted-foreground\"\n >\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.slice(0, 10).map((row, rowIndex) => {\n // Generate stable key from row data since preview data has no IDs\n const rowKey = `row-${String(rowIndex)}-${JSON.stringify(Object.values(row as Record<string, unknown>).slice(0, 2))}`\n return (\n <tr key={rowKey} className=\"border-b border-border/50\">\n {selectedColumns.map((column) => (\n <td key={column.id} className=\"px-3 py-2\">\n {formatValue(\n (row as Record<string, unknown>)[column.field],\n column\n )}\n </td>\n ))}\n </tr>\n )\n })}\n </tbody>\n </table>\n {data.length > 10 && (\n <div className=\"mt-4 text-center text-sm text-muted-foreground\">\n Mostrando 10 de {data.length} registros\n </div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * ExportPanel displays export options\n */\nfunction ExportPanel({\n exportFormats,\n onExport,\n isExporting,\n showSchedule,\n onSchedule,\n}: {\n exportFormats: ExportFormat[]\n isExporting: boolean\n onExport: (format: ExportFormat) => void\n onSchedule?: () => void\n showSchedule?: boolean\n}) {\n return (\n <div className=\"space-y-6\">\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Download className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Formato de Exportação</h3>\n </div>\n <div className={exportButtonGroupVariants({ align: \"start\" })}>\n {exportFormats.map((format) => {\n const info = EXPORT_FORMAT_INFO[format]\n const Icon = info.icon\n return (\n <Button\n key={format}\n disabled={isExporting}\n size=\"lg\"\n variant=\"outline\"\n onClick={() => { onExport(format); }}\n >\n <Icon className=\"h-4 w-4 mr-2\" />\n {info.label}\n </Button>\n )\n })}\n </div>\n </div>\n\n {showSchedule && onSchedule && (\n <div className={configSectionVariants()}>\n <div className=\"flex items-center gap-2 mb-3\">\n <Calendar className=\"h-4 w-4 text-muted-foreground\" />\n <h3 className=\"text-sm font-medium\">Agendar Relatório</h3>\n </div>\n <Button variant=\"outline\" onClick={onSchedule}>\n <Clock className=\"h-4 w-4 mr-2\" />\n Configurar Agendamento\n </Button>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * ReportGenerator is a wizard-style component for creating and exporting reports\n */\nfunction ReportGenerator({\n templates,\n dataSource,\n defaultTemplate,\n exportFormats = [\"pdf\", \"xlsx\", \"csv\"],\n showPreview = true,\n showSchedule = false,\n maxRows = 10000,\n branding,\n className,\n onGenerate,\n onReportExport,\n onSchedule,\n onReportError,\n onConfigChange,\n size,\n layout,\n}: ReportGeneratorProps) {\n const componentId = useId()\n\n // State\n const [currentStep, setCurrentStep] = useState(0)\n const [completedSteps, setCompletedSteps] = useState<number[]>([])\n const [generatorState, setGeneratorState] =\n useState<ReportGeneratorState>(\"idle\")\n const [selectedTemplateId, setSelectedTemplateId] = useState<string | undefined>(\n defaultTemplate\n )\n const [config, setConfig] = useState<Partial<ReportConfig>>({})\n const [previewData, setPreviewData] = useState<unknown[]>([])\n const [error, setError] = useState<Error | null>(null)\n\n // Computed values\n const selectedTemplate = useMemo(\n () => templates.find((t) => t.id === selectedTemplateId),\n [templates, selectedTemplateId]\n )\n\n const effectiveSteps = useMemo(() => {\n if (!showPreview) {\n return STEPS.filter((_, index) => index !== 2)\n }\n return STEPS\n }, [showPreview])\n\n const isGenerating = generatorState === \"generating\"\n const isExporting = generatorState === \"exporting\"\n\n // Handlers\n const handleTemplateSelect = useCallback(\n (templateId: string) => {\n setSelectedTemplateId(templateId)\n const template = templates.find((t) => t.id === templateId)\n if (template) {\n const initialConfig: Partial<ReportConfig> = {\n templateId,\n title: template.name,\n columns: template.columns.map((c) => c.id),\n filters: template.defaultFilters ?? [],\n includeCharts: true,\n includeSummary: true,\n }\n setConfig(initialConfig)\n onConfigChange?.({ config: initialConfig as ReportConfig })\n }\n },\n [templates, onConfigChange]\n )\n\n const handleConfigChange = useCallback(\n (newConfig: Partial<ReportConfig>) => {\n setConfig(newConfig)\n onConfigChange?.({ config: newConfig as ReportConfig })\n },\n [onConfigChange]\n )\n\n const handleNext = useCallback(() => {\n // Mark current step as complete\n if (!completedSteps.includes(currentStep)) {\n setCompletedSteps((prev) => [...prev, currentStep])\n }\n\n // Moving from template selection to configuration\n if (currentStep === 0 && !selectedTemplateId) {\n return\n }\n\n // Moving to preview step - generate report\n if (currentStep === 1 && showPreview) {\n setGeneratorState(\"generating\")\n try {\n onGenerate?.({ config: config as ReportConfig })\n\n // Simulate data fetching based on data source\n let data: unknown[] = []\n if (dataSource.type === \"static\" && dataSource.data) {\n data = dataSource.data.slice(0, maxRows)\n } else {\n // For API/query, we'd fetch data here\n // For now, use empty array as placeholder\n data = []\n }\n\n setPreviewData(data)\n setGeneratorState(\"preview\")\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setError(errorObj)\n setGeneratorState(\"error\")\n onReportError?.({ error: errorObj })\n return\n }\n }\n\n setCurrentStep((prev) => Math.min(prev + 1, effectiveSteps.length - 1))\n }, [\n currentStep,\n completedSteps,\n selectedTemplateId,\n showPreview,\n config,\n dataSource,\n maxRows,\n effectiveSteps.length,\n onGenerate,\n onReportError,\n ])\n\n const handleBack = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0))\n if (generatorState === \"error\") {\n setGeneratorState(\"idle\")\n setError(null)\n }\n }, [generatorState])\n\n const handleStepClick = useCallback(\n (step: number) => {\n if (step < currentStep || completedSteps.includes(step)) {\n setCurrentStep(step)\n }\n },\n [currentStep, completedSteps]\n )\n\n const handleExport = useCallback(\n (format: ExportFormat) => {\n setGeneratorState(\"exporting\")\n try {\n // Create export blob based on format\n const content = JSON.stringify({\n config,\n data: previewData,\n format,\n generatedAt: new Date().toISOString(),\n })\n const blob = new Blob([content], { type: \"application/json\" })\n\n onReportExport?.({ format, data: blob })\n setGeneratorState(\"idle\")\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n setError(errorObj)\n setGeneratorState(\"error\")\n onReportError?.({ error: errorObj })\n }\n },\n [config, previewData, onReportExport, onReportError]\n )\n\n const handleSchedule = useCallback(() => {\n const schedule: ScheduleConfig = {\n frequency: \"weekly\",\n time: \"09:00\",\n recipients: [],\n format: \"pdf\",\n }\n onSchedule?.({ schedule })\n }, [onSchedule])\n\n // Determine if we can proceed to next step\n const canProceed = useMemo(() => {\n switch (currentStep) {\n case 0:\n return !!selectedTemplateId\n case 1:\n return (\n config.columns && config.columns.length > 0 && !!config.title?.trim()\n )\n default:\n return true\n }\n }, [currentStep, selectedTemplateId, config])\n\n // Render loading state for generation only\n if (isGenerating) {\n return (\n <div\n aria-busy=\"true\"\n aria-describedby={`${componentId}-loading`}\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n role=\"status\"\n >\n <div className={loadingStateVariants()}>\n <Loader2 className=\"h-8 w-8 animate-spin text-primary\" />\n <div id={`${componentId}-loading`}>\n <p className=\"font-medium\">Gerando relatório...</p>\n <p className=\"text-sm text-muted-foreground\">\n Por favor, aguarde\n </p>\n </div>\n </div>\n </div>\n )\n }\n\n // Render error state\n if (generatorState === \"error\" && error) {\n return (\n <div\n aria-describedby={`${componentId}-error`}\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n role=\"alert\"\n >\n <div className={errorStateVariants()}>\n <AlertCircle className=\"h-8 w-8\" />\n <div id={`${componentId}-error`}>\n <p className=\"font-medium\">Erro ao gerar relatório</p>\n <p className=\"text-sm\">{error.message}</p>\n </div>\n <Button variant=\"outline\" onClick={handleBack}>\n <ArrowLeft className=\"h-4 w-4 mr-2\" />\n Voltar\n </Button>\n </div>\n </div>\n )\n }\n\n return (\n <div\n aria-describedby={`${componentId}-desc`}\n aria-label=\"Gerador de Relatórios\"\n className={cn(reportGeneratorVariants({ size, layout }), className)}\n data-slot=\"report-generator\"\n role=\"form\"\n >\n <p className=\"sr-only\" id={`${componentId}-desc`}>\n Use este assistente para criar e exportar relatórios personalizados\n </p>\n\n {/* Step Indicator */}\n <StepIndicator\n completedSteps={completedSteps}\n currentStep={currentStep}\n onStepClick={handleStepClick}\n />\n\n {/* Step Content */}\n <div aria-live=\"polite\" className=\"min-h-72\">\n {/* Step 0: Template Selection */}\n {currentStep === 0 && (\n <TemplateSelector\n selectedTemplate={selectedTemplateId}\n templates={templates}\n onSelect={handleTemplateSelect}\n />\n )}\n\n {/* Step 1: Configuration */}\n {currentStep === 1 && selectedTemplate && (\n <ConfigurationForm\n config={config}\n showSchedule={showSchedule}\n template={selectedTemplate}\n onChange={handleConfigChange}\n />\n )}\n\n {/* Step 2: Preview (if enabled) */}\n {currentStep === 2 && showPreview && selectedTemplate && (\n <PreviewPanel\n branding={branding}\n columns={selectedTemplate.columns}\n config={config as ReportConfig}\n data={previewData}\n />\n )}\n\n {/* Step 3/2: Export */}\n {((currentStep === 3 && showPreview) ||\n (currentStep === 2 && !showPreview)) && (\n <ExportPanel\n exportFormats={exportFormats}\n isExporting={isExporting}\n showSchedule={showSchedule}\n onExport={handleExport}\n onSchedule={showSchedule ? handleSchedule : undefined}\n />\n )}\n </div>\n\n {/* Navigation Actions */}\n <div className={formActionsVariants()}>\n <Button\n disabled={currentStep === 0}\n variant=\"outline\"\n onClick={handleBack}\n >\n <ArrowLeft className=\"h-4 w-4 mr-2\" />\n Voltar\n </Button>\n {currentStep < effectiveSteps.length - 1 ? (\n <Button disabled={!canProceed} onClick={handleNext}>\n Próximo\n <ArrowRight className=\"h-4 w-4 ml-2\" />\n </Button>\n ) : null}\n </div>\n </div>\n )\n}\n\nexport { ReportGenerator }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-7TF5PVEU.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { RefreshCw, X, LayoutGrid, Loader2 } from 'lucide-react';
|
|
4
4
|
import { useId, useRef, useCallback, useEffect } from 'react';
|
|
@@ -511,5 +511,5 @@ function Dashboard({
|
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
export { Dashboard, DashboardEmptyState, DashboardErrorState, DashboardHeader, DashboardLoadingState, DashboardWidget, dashboardContentVariants, dashboardEmptyVariants, dashboardGridVariants, dashboardHeaderVariants, dashboardLoadingVariants, dashboardSidebarVariants, dashboardVariants, dashboardWidgetHeaderVariants, dashboardWidgetVariants };
|
|
514
|
-
//# sourceMappingURL=chunk-
|
|
515
|
-
//# sourceMappingURL=chunk-
|
|
514
|
+
//# sourceMappingURL=chunk-SXPBKGLT.js.map
|
|
515
|
+
//# sourceMappingURL=chunk-SXPBKGLT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/Dashboard/Dashboard.variants.ts","../src/components/workflow/Dashboard/Dashboard.tsx"],"names":[],"mappings":"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","file":"chunk-WDPGJHLV.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Dashboard container variants\n */\nexport const dashboardVariants = cva(\n [\n \"relative\",\n \"bg-background\",\n \"text-foreground\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-0 min-h-screen\",\n sidebar: \"flex\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard header variants\n */\nexport const dashboardHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-4\",\n \"mb-6\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-4\",\n full: \"px-6 pt-6\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard grid variants\n */\nexport const dashboardGridVariants = cva(\n [\n \"grid\",\n \"w-full\",\n ],\n {\n variants: {\n layout: {\n default: \"gap-6\",\n dense: \"gap-4\",\n full: \"gap-6 px-6 pb-6\",\n sidebar: \"gap-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard sidebar variants\n */\nexport const dashboardSidebarVariants = cva(\n [\n \"shrink-0\",\n \"border-r\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n width: {\n sm: \"w-48\",\n md: \"w-64\",\n lg: \"w-80\",\n },\n },\n defaultVariants: {\n width: \"md\",\n },\n }\n)\n\n/**\n * Dashboard content variants\n */\nexport const dashboardContentVariants = cva(\n [\n \"flex-1\",\n \"min-w-0\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"\",\n full: \"\",\n sidebar: \"p-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard widget variants\n */\nexport const dashboardWidgetVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"overflow-hidden\",\n \"transition-shadow\",\n \"duration-200\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-6\",\n sidebar: \"p-6\",\n },\n state: {\n default: \"\",\n dragging: \"shadow-lg ring-2 ring-primary/20\",\n resizing: \"shadow-md\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md\",\n false: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n state: \"default\",\n interactive: false,\n },\n }\n)\n\n/**\n * Dashboard widget header variants\n */\nexport const dashboardWidgetHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-2\",\n \"mb-4\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-3\",\n full: \"\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard empty state variants\n */\nexport const dashboardEmptyVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard loading state variants\n */\nexport const dashboardLoadingVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\nexport type DashboardVariantProps = VariantProps<typeof dashboardVariants>\nexport type DashboardWidgetVariantProps = VariantProps<typeof dashboardWidgetVariants>\n","import type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetData,\n DashboardWidgetProps,\n} from \"./Dashboard.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport { LayoutGrid, Loader2, RefreshCw, X } from \"lucide-react\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n dashboardContentVariants,\n dashboardEmptyVariants,\n dashboardGridVariants,\n dashboardHeaderVariants,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n} from \"./Dashboard.variants\"\n\n/**\n * Get icon for widget type\n */\nfunction getWidgetIcon(_type: DashboardWidgetData[\"type\"]) {\n // For now, return a generic icon - can be extended per type\n return <LayoutGrid className=\"h-4 w-4 text-muted-foreground\" />\n}\n\n/**\n * DashboardHeader displays the dashboard title and actions\n */\nfunction DashboardHeader({\n title,\n description,\n showRefresh = true,\n onRefresh,\n actions,\n}: DashboardHeaderProps) {\n return (\n <div className={dashboardHeaderVariants()} data-slot=\"dashboard-header\">\n <div className=\"space-y-1\">\n {title && (\n <h1\n className=\"text-2xl font-bold tracking-tight\"\n data-slot=\"dashboard-title\"\n >\n {title}\n </h1>\n )}\n {description && (\n <p\n className=\"text-sm text-muted-foreground\"\n data-slot=\"dashboard-description\"\n >\n {description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-2\" data-slot=\"dashboard-actions\">\n {showRefresh && onRefresh && (\n <Button\n aria-label=\"Refresh dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onRefresh}\n >\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Atualizar\n </Button>\n )}\n {actions}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardWidget renders a single widget card\n */\nfunction DashboardWidget({\n widget,\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n onClick,\n onRemove,\n className,\n ...props\n}: DashboardWidgetProps) {\n const widgetId = useId()\n\n // Calculate grid span and position styles\n const gridStyle = {\n gridColumn: `span ${String(Math.min(widget.w, columns))}`,\n minHeight: `${String(widget.h * rowHeight)}px`,\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n }\n\n return (\n <div\n className={cn(\n dashboardWidgetVariants({\n interactive: Boolean(onClick),\n }),\n className\n )}\n aria-label={widget.title}\n data-draggable={isDraggable || undefined}\n data-resizable={isResizable || undefined}\n data-slot=\"dashboard-widget\"\n data-widget-id={widget.id}\n data-widget-type={widget.type}\n id={widgetId}\n role={onClick ? \"button\" : \"region\"}\n style={gridStyle}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? handleKeyDown : undefined}\n {...props}\n >\n <div className={dashboardWidgetHeaderVariants()} data-slot=\"dashboard-widget-header\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {getWidgetIcon(widget.type)}\n <div className=\"min-w-0\">\n <h2 className=\"text-lg font-semibold truncate\">{widget.title}</h2>\n {widget.description && (\n <p className=\"text-sm text-muted-foreground truncate\">\n {widget.description}\n </p>\n )}\n </div>\n </div>\n {onRemove && (\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"shrink-0\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <div className=\"flex-1\" data-slot=\"dashboard-widget-content\">\n {/* Widget content would be rendered here based on type */}\n {widget.type === \"kpi\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"object\" &&\n \"value\" in widget.data &&\n (typeof (widget.data as Record<string, unknown>)[\"value\"] === \"string\" ||\n typeof (widget.data as Record<string, unknown>)[\"value\"] === \"number\") && (\n <div className=\"text-3xl font-bold\">\n {String((widget.data as Record<string, unknown>)[\"value\"])}\n </div>\n )}\n {widget.type === \"text\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"string\" && (\n <div className=\"text-sm text-muted-foreground\">{widget.data}</div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardEmptyState displays when no widgets are configured\n */\nfunction DashboardEmptyState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-empty\">\n <LayoutGrid className=\"h-12 w-12 text-muted-foreground mb-4\" />\n <h3 className=\"text-lg font-semibold mb-2\">Nenhum widget configurado</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Adicione widgets para visualizar dados e métricas neste dashboard.\n </p>\n </div>\n )\n}\n\n/**\n * DashboardLoadingState displays while data is loading\n */\nfunction DashboardLoadingState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardLoadingVariants({ layout })} data-slot=\"dashboard-loading\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n )\n}\n\n/**\n * DashboardErrorState displays when an error occurs\n */\nfunction DashboardErrorState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-error\">\n <div className=\"rounded-full bg-destructive/10 p-3 mb-4\">\n <X className=\"h-8 w-8 text-destructive\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">Erro ao carregar dashboard</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Ocorreu um erro ao carregar os dados. Tente novamente mais tarde.\n </p>\n </div>\n )\n}\n\n/**\n * Dashboard component for creating control panels with widgets, metrics, and visualizations.\n *\n * @example\n * ```tsx\n * const widgets = [\n * { id: '1', type: 'kpi', title: 'Total Sales', x: 0, y: 0, w: 3, h: 2, data: { value: 'R$ 150.000' } },\n * { id: '2', type: 'chart', title: 'Sales by Month', x: 3, y: 0, w: 6, h: 4 },\n * ]\n *\n * <Dashboard\n * title=\"Sales Dashboard\"\n * description=\"Overview of commercial performance\"\n * widgets={widgets}\n * onRefresh={() => console.log('Refresh')}\n * />\n * ```\n */\nfunction Dashboard({\n \"aria-label\": ariaLabel = \"Dashboard\",\n className,\n title,\n description,\n widgets,\n layout = \"default\",\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n showHeader = true,\n showRefresh = true,\n refreshInterval,\n sidebarContent,\n headerActions,\n state = \"ready\",\n onLayoutChange,\n onWidgetAdd: _onWidgetAdd,\n onWidgetRemove,\n onRefresh,\n onExport: _onExport,\n onWidgetClick,\n ...props\n}: DashboardProps) {\n const dashboardId = useId()\n const refreshTimerRef = useRef<null | ReturnType<typeof setInterval>>(null)\n\n // Normalize layout\n const normalizedLayout = layout ?? \"default\"\n\n // Handle refresh\n const handleRefresh = useCallback(() => {\n onRefresh?.({ timestamp: Date.now() })\n }, [onRefresh])\n\n // Handle widget remove\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n onWidgetRemove?.({ widgetId, timestamp: Date.now() })\n // Notify layout change\n const updatedLayout = widgets\n .filter((w) => w.id !== widgetId)\n .map((w) => ({ i: w.id, x: w.x, y: w.y, w: w.w, h: w.h }))\n onLayoutChange?.({ layout: updatedLayout, timestamp: Date.now() })\n },\n [widgets, onWidgetRemove, onLayoutChange]\n )\n\n // Handle widget click\n const handleWidgetClick = useCallback(\n (widget: DashboardWidgetData) => {\n onWidgetClick?.({ widget, timestamp: Date.now() })\n },\n [onWidgetClick]\n )\n\n // Set up auto-refresh\n useEffect(() => {\n if (refreshInterval && refreshInterval > 0 && onRefresh) {\n refreshTimerRef.current = setInterval(() => {\n onRefresh({ timestamp: Date.now() })\n }, refreshInterval)\n }\n\n return () => {\n if (refreshTimerRef.current) {\n clearInterval(refreshTimerRef.current)\n }\n }\n }, [refreshInterval, onRefresh])\n\n // Generate grid template columns\n const gridTemplateColumns = `repeat(${String(columns)}, minmax(0, 1fr))`\n\n // Render content based on state\n const renderContent = () => {\n switch (state) {\n case \"loading\":\n return <DashboardLoadingState layout={normalizedLayout} />\n case \"error\":\n return <DashboardErrorState layout={normalizedLayout} />\n case \"empty\":\n return <DashboardEmptyState layout={normalizedLayout} />\n case \"ready\":\n default:\n if (widgets.length === 0) {\n return <DashboardEmptyState layout={normalizedLayout} />\n }\n return (\n <div\n className={dashboardGridVariants({ layout: normalizedLayout })}\n data-slot=\"dashboard-grid\"\n style={{ gridTemplateColumns }}\n >\n {widgets.map((widget) => (\n <DashboardWidget\n key={widget.id}\n columns={columns}\n isDraggable={isDraggable && !widget.isStatic}\n isResizable={isResizable && !widget.isStatic}\n rowHeight={rowHeight}\n widget={widget}\n onClick={\n onWidgetClick ? () => { handleWidgetClick(widget); } : undefined\n }\n onRemove={\n onWidgetRemove\n ? () => { handleWidgetRemove(widget.id); }\n : undefined\n }\n />\n ))}\n </div>\n )\n }\n }\n\n // Sidebar layout\n if (normalizedLayout === \"sidebar\") {\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {sidebarContent && (\n <aside\n className={dashboardSidebarVariants()}\n data-slot=\"dashboard-sidebar\"\n >\n {sidebarContent}\n </aside>\n )}\n <div className={dashboardContentVariants({ layout: normalizedLayout })}>\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n </div>\n )\n }\n\n // Default, dense, and full layouts\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n )\n}\n\nexport {\n Dashboard,\n dashboardContentVariants,\n DashboardEmptyState,\n dashboardEmptyVariants,\n DashboardErrorState,\n dashboardGridVariants,\n DashboardHeader,\n dashboardHeaderVariants,\n DashboardLoadingState,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n DashboardWidget,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n}\nexport type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetProps,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/Dashboard/Dashboard.variants.ts","../src/components/workflow/Dashboard/Dashboard.tsx"],"names":[],"mappings":";;;;;;;AAKO,IAAM,iBAAA,GAAoB,GAAA;AAAA,EAC/B;AAAA,IACE,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO,KAAA;AAAA,QACP,IAAA,EAAM,kBAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,uBAAA,GAA0B,GAAA;AAAA,EACrC;AAAA,IACE,MAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,qBAAA,GAAwB,GAAA;AAAA,EACnC;AAAA,IACE,MAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,OAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,iBAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,UAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,EAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,uBAAA,GAA0B,GAAA;AAAA,EACrC;AAAA,IACE,YAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO,KAAA;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU,kCAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,gCAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,KAAA,EAAO,SAAA;AAAA,MACP,WAAA,EAAa;AAAA;AACf;AAEJ;AAKO,IAAM,6BAAA,GAAgC,GAAA;AAAA,EAC3C;AAAA,IACE,MAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,sBAAA,GAAyB,GAAA;AAAA,EACpC;AAAA,IACE,MAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;AAKO,IAAM,wBAAA,GAA2B,GAAA;AAAA,EACtC;AAAA,IACE,MAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ;AAAA;AACV;AAEJ;ACjNA,SAAS,cAAc,KAAA,EAAoC;AAEzD,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,+BAAA,EAAgC,CAAA;AAC/D;AAKA,SAAS,eAAA,CAAgB;AAAA,EACvB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,SAAA;AAAA,EACA;AACF,CAAA,EAAyB;AACvB,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,uBAAA,EAAwB,EAAG,aAAU,kBAAA,EACnD,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACC,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,mCAAA;AAAA,UACV,WAAA,EAAU,iBAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MAED,WAAA,oBACC,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,+BAAA;AAAA,UACV,WAAA,EAAU,uBAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA0B,aAAU,mBAAA,EAChD,QAAA,EAAA;AAAA,MAAA,WAAA,IAAe,SAAA,oBACd,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,mBAAA;AAAA,UACX,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,SAAA;AAAA,UAET,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAA,EAAA,EAAU,WAAU,cAAA,EAAe,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA,OAExC;AAAA,MAED;AAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAKA,SAAS,eAAA,CAAgB;AAAA,EACvB,MAAA;AAAA,EACA,OAAA,GAAU,EAAA;AAAA,EACV,SAAA,GAAY,GAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd,WAAA,GAAc,KAAA;AAAA,EACd,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAyB;AACvB,EAAA,MAAM,WAAW,KAAA,EAAM;AAGvB,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB,UAAA,EAAY,QAAQ,MAAA,CAAO,IAAA,CAAK,IAAI,MAAA,CAAO,CAAA,EAAG,OAAO,CAAC,CAAC,CAAA,CAAA;AAAA,IACvD,WAAW,CAAA,EAAG,MAAA,CAAO,MAAA,CAAO,CAAA,GAAI,SAAS,CAAC,CAAA,EAAA;AAAA,GAC5C;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyC;AAC9D,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,OAAA,IAAU;AAAA,IACZ;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uBAAA,CAAwB;AAAA,UACtB,WAAA,EAAa,QAAQ,OAAO;AAAA,SAC7B,CAAA;AAAA,QACD;AAAA,OACF;AAAA,MACA,cAAY,MAAA,CAAO,KAAA;AAAA,MACnB,kBAAgB,WAAA,IAAe,MAAA;AAAA,MAC/B,kBAAgB,WAAA,IAAe,MAAA;AAAA,MAC/B,WAAA,EAAU,kBAAA;AAAA,MACV,kBAAgB,MAAA,CAAO,EAAA;AAAA,MACvB,oBAAkB,MAAA,CAAO,IAAA;AAAA,MACzB,EAAA,EAAI,QAAA;AAAA,MACJ,IAAA,EAAM,UAAU,QAAA,GAAW,QAAA;AAAA,MAC3B,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,UAAU,CAAA,GAAI,MAAA;AAAA,MACxB,OAAA;AAAA,MACA,SAAA,EAAW,UAAU,aAAA,GAAgB,MAAA;AAAA,MACpC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,6BAAA,EAA8B,EAAG,aAAU,yBAAA,EACzD,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,4BAC1B,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gCAAA,EAAkC,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,cAC5D,OAAO,WAAA,oBACN,GAAA,CAAC,OAAE,SAAA,EAAU,wCAAA,EACV,iBAAO,WAAA,EACV;AAAA,aAAA,EAEJ;AAAA,WAAA,EACF,CAAA;AAAA,UACC,QAAA,oBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,YAAA,EAAY,CAAA,OAAA,EAAU,MAAA,CAAO,KAAK,CAAA,CAAA;AAAA,cAClC,SAAA,EAAU,UAAA;AAAA,cACV,IAAA,EAAK,MAAA;AAAA,cACL,OAAA,EAAQ,OAAA;AAAA,cACR,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,QAAA,EAAS;AAAA,cACX,CAAA;AAAA,cAEA,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AACzB,SAAA,EAEJ,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,aAAU,0BAAA,EAE/B,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,SAAS,KAAA,IACf,MAAA,CAAO,IAAA,KAAS,IAAA,IAChB,OAAO,IAAA,KAAS,MAAA,IAChB,OAAO,MAAA,CAAO,SAAS,QAAA,IACvB,OAAA,IAAW,MAAA,CAAO,IAAA,KACjB,OAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,CAAA,KAAM,YAC5D,OAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,MAAM,QAAA,CAAA,oBAC7D,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBACZ,QAAA,EAAA,MAAA,CAAQ,MAAA,CAAO,IAAA,CAAiC,OAAO,CAAC,CAAA,EAC3D,CAAA;AAAA,UAEH,OAAO,IAAA,KAAS,MAAA,IACf,OAAO,IAAA,KAAS,IAAA,IAChB,OAAO,IAAA,KAAS,MAAA,IAChB,OAAO,MAAA,CAAO,SAAS,QAAA,oBACrB,GAAA,CAAC,SAAI,SAAA,EAAU,+BAAA,EAAiC,iBAAO,IAAA,EAAK;AAAA,SAAA,EAElE;AAAA;AAAA;AAAA,GACF;AAEJ;AAKA,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAO,EAAiE;AACrG,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,sBAAA,CAAuB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,iBAAA,EAC5D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAU,sCAAA,EAAuC,CAAA;AAAA,oBAC7D,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAA,2BAAA,EAAyB,CAAA;AAAA,oBACpE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,uEAAA,EAEtD;AAAA,GAAA,EACF,CAAA;AAEJ;AAKA,SAAS,qBAAA,CAAsB,EAAE,MAAA,EAAO,EAAiE;AACvG,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,wBAAA,CAAyB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,mBAAA,EAC9D,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,8CAA6C,CAAA,EAClE,CAAA;AAEJ;AAKA,SAAS,mBAAA,CAAoB,EAAE,MAAA,EAAO,EAAiE;AACrG,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,sBAAA,CAAuB,EAAE,MAAA,EAAQ,CAAA,EAAG,WAAA,EAAU,iBAAA,EAC5D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,yCAAA,EACb,8BAAC,CAAA,EAAA,EAAE,SAAA,EAAU,4BAA2B,CAAA,EAC1C,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BAAA,EAA6B,QAAA,EAAA,4BAAA,EAA0B,CAAA;AAAA,oBACrE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,mEAAA,EAEtD;AAAA,GAAA,EACF,CAAA;AAEJ;AAoBA,SAAS,SAAA,CAAU;AAAA,EACjB,cAAc,SAAA,GAAY,WAAA;AAAA,EAC1B,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS,SAAA;AAAA,EACT,OAAA,GAAU,EAAA;AAAA,EACV,SAAA,GAAY,GAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd,WAAA,GAAc,KAAA;AAAA,EACd,UAAA,GAAa,IAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,eAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,cAAA;AAAA,EACA,WAAA,EAAa,YAAA;AAAA,EACb,cAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA,EAAU,SAAA;AAAA,EACV,aAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,EAAA,MAAM,eAAA,GAAkB,OAA8C,IAAI,CAAA;AAG1E,EAAA,MAAM,mBAAmB,MAAA,IAAU,SAAA;AAGnC,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,SAAA,GAAY,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,QAAA,KAAqB;AACpB,MAAA,cAAA,GAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAEpD,MAAA,MAAM,aAAA,GAAgB,OAAA,CACnB,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,QAAQ,CAAA,CAC/B,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,CAAA,EAAG,CAAA,CAAE,EAAA,EAAI,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAG,CAAA,EAAG,CAAA,CAAE,CAAA,EAAE,CAAE,CAAA;AAC3D,MAAA,cAAA,GAAiB,EAAE,MAAA,EAAQ,aAAA,EAAe,WAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,IACnE,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,cAAA,EAAgB,cAAc;AAAA,GAC1C;AAGA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,MAAA,KAAgC;AAC/B,MAAA,aAAA,GAAgB,EAAE,MAAA,EAAQ,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,IACnD,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAGA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,eAAA,IAAmB,eAAA,GAAkB,CAAA,IAAK,SAAA,EAAW;AACvD,MAAA,eAAA,CAAgB,OAAA,GAAU,YAAY,MAAM;AAC1C,QAAA,SAAA,CAAU,EAAE,SAAA,EAAW,IAAA,CAAK,GAAA,IAAO,CAAA;AAAA,MACrC,GAAG,eAAe,CAAA;AAAA,IACpB;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,QAAA,aAAA,CAAc,gBAAgB,OAAO,CAAA;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,SAAS,CAAC,CAAA;AAG/B,EAAA,MAAM,mBAAA,GAAsB,CAAA,OAAA,EAAU,MAAA,CAAO,OAAO,CAAC,CAAA,iBAAA,CAAA;AAGrD,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,SAAA;AACH,QAAA,uBAAO,GAAA,CAAC,qBAAA,EAAA,EAAsB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MAC1D,KAAK,OAAA;AACH,QAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MACxD,KAAK,OAAA;AACH,QAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,MACxD,KAAK,OAAA;AAAA,MACL;AACE,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,UAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAQ,gBAAA,EAAkB,CAAA;AAAA,QACxD;AACA,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,qBAAA,CAAsB,EAAE,MAAA,EAAQ,kBAAkB,CAAA;AAAA,YAC7D,WAAA,EAAU,gBAAA;AAAA,YACV,KAAA,EAAO,EAAE,mBAAA,EAAoB;AAAA,YAE5B,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,qBACZ,GAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBAEC,OAAA;AAAA,gBACA,WAAA,EAAa,WAAA,IAAe,CAAC,MAAA,CAAO,QAAA;AAAA,gBACpC,WAAA,EAAa,WAAA,IAAe,CAAC,MAAA,CAAO,QAAA;AAAA,gBACpC,SAAA;AAAA,gBACA,MAAA;AAAA,gBACA,OAAA,EACE,gBAAgB,MAAM;AAAE,kBAAA,iBAAA,CAAkB,MAAM,CAAA;AAAA,gBAAG,CAAA,GAAI,MAAA;AAAA,gBAEzD,QAAA,EACE,iBACI,MAAM;AAAE,kBAAA,kBAAA,CAAmB,OAAO,EAAE,CAAA;AAAA,gBAAG,CAAA,GACvC;AAAA,eAAA;AAAA,cAZD,MAAA,CAAO;AAAA,aAef;AAAA;AAAA,SACH;AAAA;AAEN,EACF,CAAA;AAGA,EAAA,IAAI,qBAAqB,SAAA,EAAW;AAClC,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,SAAA;AAAA,QACZ,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,QAAQ,gBAAA,EAAkB,GAAG,SAAS,CAAA;AAAA,QACxE,aAAA,EAAa,gBAAA;AAAA,QACb,WAAA,EAAU,WAAA;AAAA,QACV,YAAA,EAAY,KAAA;AAAA,QACZ,EAAA,EAAI,WAAA;AAAA,QACJ,IAAA,EAAK,MAAA;AAAA,QACJ,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,cAAA,oBACC,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,WAAW,wBAAA,EAAyB;AAAA,cACpC,WAAA,EAAU,mBAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BAEF,IAAA,CAAC,SAAI,SAAA,EAAW,wBAAA,CAAyB,EAAE,MAAA,EAAQ,gBAAA,EAAkB,CAAA,EAClE,QAAA,EAAA;AAAA,YAAA,UAAA,KAAe,KAAA,IAAS,eAAe,aAAA,CAAA,oBACtC,GAAA;AAAA,cAAC,eAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,aAAA;AAAA,gBACT,WAAA;AAAA,gBACA,WAAA;AAAA,gBACA,KAAA;AAAA,gBACA,SAAA,EAAW,YAAY,aAAA,GAAgB;AAAA;AAAA,aACzC;AAAA,YAED,aAAA;AAAc,WAAA,EACjB;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AAGA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAW,GAAG,iBAAA,CAAkB,EAAE,QAAQ,gBAAA,EAAkB,GAAG,SAAS,CAAA;AAAA,MACxE,aAAA,EAAa,gBAAA;AAAA,MACb,WAAA,EAAU,WAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,EAAA,EAAI,WAAA;AAAA,MACJ,IAAA,EAAK,MAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,KAAe,KAAA,IAAS,eAAe,aAAA,CAAA,oBACtC,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,aAAA;AAAA,YACT,WAAA;AAAA,YACA,WAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,YAAY,aAAA,GAAgB;AAAA;AAAA,SACzC;AAAA,QAED,aAAA;AAAc;AAAA;AAAA,GACjB;AAEJ","file":"chunk-SXPBKGLT.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Dashboard container variants\n */\nexport const dashboardVariants = cva(\n [\n \"relative\",\n \"bg-background\",\n \"text-foreground\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-0 min-h-screen\",\n sidebar: \"flex\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard header variants\n */\nexport const dashboardHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-4\",\n \"mb-6\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-4\",\n full: \"px-6 pt-6\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard grid variants\n */\nexport const dashboardGridVariants = cva(\n [\n \"grid\",\n \"w-full\",\n ],\n {\n variants: {\n layout: {\n default: \"gap-6\",\n dense: \"gap-4\",\n full: \"gap-6 px-6 pb-6\",\n sidebar: \"gap-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard sidebar variants\n */\nexport const dashboardSidebarVariants = cva(\n [\n \"shrink-0\",\n \"border-r\",\n \"border-border\",\n \"bg-card\",\n ],\n {\n variants: {\n width: {\n sm: \"w-48\",\n md: \"w-64\",\n lg: \"w-80\",\n },\n },\n defaultVariants: {\n width: \"md\",\n },\n }\n)\n\n/**\n * Dashboard content variants\n */\nexport const dashboardContentVariants = cva(\n [\n \"flex-1\",\n \"min-w-0\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"\",\n full: \"\",\n sidebar: \"p-6\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard widget variants\n */\nexport const dashboardWidgetVariants = cva(\n [\n \"rounded-lg\",\n \"border\",\n \"border-border\",\n \"bg-card\",\n \"overflow-hidden\",\n \"transition-shadow\",\n \"duration-200\",\n ],\n {\n variants: {\n layout: {\n default: \"p-6\",\n dense: \"p-4\",\n full: \"p-6\",\n sidebar: \"p-6\",\n },\n state: {\n default: \"\",\n dragging: \"shadow-lg ring-2 ring-primary/20\",\n resizing: \"shadow-md\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-md\",\n false: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n state: \"default\",\n interactive: false,\n },\n }\n)\n\n/**\n * Dashboard widget header variants\n */\nexport const dashboardWidgetHeaderVariants = cva(\n [\n \"flex\",\n \"items-start\",\n \"justify-between\",\n \"gap-2\",\n \"mb-4\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"mb-3\",\n full: \"\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard empty state variants\n */\nexport const dashboardEmptyVariants = cva(\n [\n \"flex\",\n \"flex-col\",\n \"items-center\",\n \"justify-center\",\n \"text-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\n/**\n * Dashboard loading state variants\n */\nexport const dashboardLoadingVariants = cva(\n [\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"py-16\",\n ],\n {\n variants: {\n layout: {\n default: \"\",\n dense: \"py-12\",\n full: \"min-h-[50vh]\",\n sidebar: \"\",\n },\n },\n defaultVariants: {\n layout: \"default\",\n },\n }\n)\n\nexport type DashboardVariantProps = VariantProps<typeof dashboardVariants>\nexport type DashboardWidgetVariantProps = VariantProps<typeof dashboardWidgetVariants>\n","import type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetData,\n DashboardWidgetProps,\n} from \"./Dashboard.types\"\nimport type { KeyboardEvent } from \"react\"\n\nimport { LayoutGrid, Loader2, RefreshCw, X } from \"lucide-react\"\nimport { useCallback, useEffect, useId, useRef } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../primitives/Button\"\nimport {\n dashboardContentVariants,\n dashboardEmptyVariants,\n dashboardGridVariants,\n dashboardHeaderVariants,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n} from \"./Dashboard.variants\"\n\n/**\n * Get icon for widget type\n */\nfunction getWidgetIcon(_type: DashboardWidgetData[\"type\"]) {\n // For now, return a generic icon - can be extended per type\n return <LayoutGrid className=\"h-4 w-4 text-muted-foreground\" />\n}\n\n/**\n * DashboardHeader displays the dashboard title and actions\n */\nfunction DashboardHeader({\n title,\n description,\n showRefresh = true,\n onRefresh,\n actions,\n}: DashboardHeaderProps) {\n return (\n <div className={dashboardHeaderVariants()} data-slot=\"dashboard-header\">\n <div className=\"space-y-1\">\n {title && (\n <h1\n className=\"text-2xl font-bold tracking-tight\"\n data-slot=\"dashboard-title\"\n >\n {title}\n </h1>\n )}\n {description && (\n <p\n className=\"text-sm text-muted-foreground\"\n data-slot=\"dashboard-description\"\n >\n {description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-2\" data-slot=\"dashboard-actions\">\n {showRefresh && onRefresh && (\n <Button\n aria-label=\"Refresh dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onRefresh}\n >\n <RefreshCw className=\"h-4 w-4 mr-2\" />\n Atualizar\n </Button>\n )}\n {actions}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardWidget renders a single widget card\n */\nfunction DashboardWidget({\n widget,\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n onClick,\n onRemove,\n className,\n ...props\n}: DashboardWidgetProps) {\n const widgetId = useId()\n\n // Calculate grid span and position styles\n const gridStyle = {\n gridColumn: `span ${String(Math.min(widget.w, columns))}`,\n minHeight: `${String(widget.h * rowHeight)}px`,\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault()\n onClick?.()\n }\n }\n\n return (\n <div\n className={cn(\n dashboardWidgetVariants({\n interactive: Boolean(onClick),\n }),\n className\n )}\n aria-label={widget.title}\n data-draggable={isDraggable || undefined}\n data-resizable={isResizable || undefined}\n data-slot=\"dashboard-widget\"\n data-widget-id={widget.id}\n data-widget-type={widget.type}\n id={widgetId}\n role={onClick ? \"button\" : \"region\"}\n style={gridStyle}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={onClick ? handleKeyDown : undefined}\n {...props}\n >\n <div className={dashboardWidgetHeaderVariants()} data-slot=\"dashboard-widget-header\">\n <div className=\"flex items-center gap-2 min-w-0\">\n {getWidgetIcon(widget.type)}\n <div className=\"min-w-0\">\n <h2 className=\"text-lg font-semibold truncate\">{widget.title}</h2>\n {widget.description && (\n <p className=\"text-sm text-muted-foreground truncate\">\n {widget.description}\n </p>\n )}\n </div>\n </div>\n {onRemove && (\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"shrink-0\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove()\n }}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <div className=\"flex-1\" data-slot=\"dashboard-widget-content\">\n {/* Widget content would be rendered here based on type */}\n {widget.type === \"kpi\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"object\" &&\n \"value\" in widget.data &&\n (typeof (widget.data as Record<string, unknown>)[\"value\"] === \"string\" ||\n typeof (widget.data as Record<string, unknown>)[\"value\"] === \"number\") && (\n <div className=\"text-3xl font-bold\">\n {String((widget.data as Record<string, unknown>)[\"value\"])}\n </div>\n )}\n {widget.type === \"text\" &&\n widget.data !== null &&\n widget.data !== undefined &&\n typeof widget.data === \"string\" && (\n <div className=\"text-sm text-muted-foreground\">{widget.data}</div>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * DashboardEmptyState displays when no widgets are configured\n */\nfunction DashboardEmptyState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-empty\">\n <LayoutGrid className=\"h-12 w-12 text-muted-foreground mb-4\" />\n <h3 className=\"text-lg font-semibold mb-2\">Nenhum widget configurado</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Adicione widgets para visualizar dados e métricas neste dashboard.\n </p>\n </div>\n )\n}\n\n/**\n * DashboardLoadingState displays while data is loading\n */\nfunction DashboardLoadingState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardLoadingVariants({ layout })} data-slot=\"dashboard-loading\">\n <Loader2 className=\"h-8 w-8 animate-spin text-muted-foreground\" />\n </div>\n )\n}\n\n/**\n * DashboardErrorState displays when an error occurs\n */\nfunction DashboardErrorState({ layout }: { layout?: \"default\" | \"dense\" | \"full\" | \"sidebar\" | null }) {\n return (\n <div className={dashboardEmptyVariants({ layout })} data-slot=\"dashboard-error\">\n <div className=\"rounded-full bg-destructive/10 p-3 mb-4\">\n <X className=\"h-8 w-8 text-destructive\" />\n </div>\n <h3 className=\"text-lg font-semibold mb-2\">Erro ao carregar dashboard</h3>\n <p className=\"text-sm text-muted-foreground max-w-md\">\n Ocorreu um erro ao carregar os dados. Tente novamente mais tarde.\n </p>\n </div>\n )\n}\n\n/**\n * Dashboard component for creating control panels with widgets, metrics, and visualizations.\n *\n * @example\n * ```tsx\n * const widgets = [\n * { id: '1', type: 'kpi', title: 'Total Sales', x: 0, y: 0, w: 3, h: 2, data: { value: 'R$ 150.000' } },\n * { id: '2', type: 'chart', title: 'Sales by Month', x: 3, y: 0, w: 6, h: 4 },\n * ]\n *\n * <Dashboard\n * title=\"Sales Dashboard\"\n * description=\"Overview of commercial performance\"\n * widgets={widgets}\n * onRefresh={() => console.log('Refresh')}\n * />\n * ```\n */\nfunction Dashboard({\n \"aria-label\": ariaLabel = \"Dashboard\",\n className,\n title,\n description,\n widgets,\n layout = \"default\",\n columns = 12,\n rowHeight = 100,\n isDraggable = false,\n isResizable = false,\n showHeader = true,\n showRefresh = true,\n refreshInterval,\n sidebarContent,\n headerActions,\n state = \"ready\",\n onLayoutChange,\n onWidgetAdd: _onWidgetAdd,\n onWidgetRemove,\n onRefresh,\n onExport: _onExport,\n onWidgetClick,\n ...props\n}: DashboardProps) {\n const dashboardId = useId()\n const refreshTimerRef = useRef<null | ReturnType<typeof setInterval>>(null)\n\n // Normalize layout\n const normalizedLayout = layout ?? \"default\"\n\n // Handle refresh\n const handleRefresh = useCallback(() => {\n onRefresh?.({ timestamp: Date.now() })\n }, [onRefresh])\n\n // Handle widget remove\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n onWidgetRemove?.({ widgetId, timestamp: Date.now() })\n // Notify layout change\n const updatedLayout = widgets\n .filter((w) => w.id !== widgetId)\n .map((w) => ({ i: w.id, x: w.x, y: w.y, w: w.w, h: w.h }))\n onLayoutChange?.({ layout: updatedLayout, timestamp: Date.now() })\n },\n [widgets, onWidgetRemove, onLayoutChange]\n )\n\n // Handle widget click\n const handleWidgetClick = useCallback(\n (widget: DashboardWidgetData) => {\n onWidgetClick?.({ widget, timestamp: Date.now() })\n },\n [onWidgetClick]\n )\n\n // Set up auto-refresh\n useEffect(() => {\n if (refreshInterval && refreshInterval > 0 && onRefresh) {\n refreshTimerRef.current = setInterval(() => {\n onRefresh({ timestamp: Date.now() })\n }, refreshInterval)\n }\n\n return () => {\n if (refreshTimerRef.current) {\n clearInterval(refreshTimerRef.current)\n }\n }\n }, [refreshInterval, onRefresh])\n\n // Generate grid template columns\n const gridTemplateColumns = `repeat(${String(columns)}, minmax(0, 1fr))`\n\n // Render content based on state\n const renderContent = () => {\n switch (state) {\n case \"loading\":\n return <DashboardLoadingState layout={normalizedLayout} />\n case \"error\":\n return <DashboardErrorState layout={normalizedLayout} />\n case \"empty\":\n return <DashboardEmptyState layout={normalizedLayout} />\n case \"ready\":\n default:\n if (widgets.length === 0) {\n return <DashboardEmptyState layout={normalizedLayout} />\n }\n return (\n <div\n className={dashboardGridVariants({ layout: normalizedLayout })}\n data-slot=\"dashboard-grid\"\n style={{ gridTemplateColumns }}\n >\n {widgets.map((widget) => (\n <DashboardWidget\n key={widget.id}\n columns={columns}\n isDraggable={isDraggable && !widget.isStatic}\n isResizable={isResizable && !widget.isStatic}\n rowHeight={rowHeight}\n widget={widget}\n onClick={\n onWidgetClick ? () => { handleWidgetClick(widget); } : undefined\n }\n onRemove={\n onWidgetRemove\n ? () => { handleWidgetRemove(widget.id); }\n : undefined\n }\n />\n ))}\n </div>\n )\n }\n }\n\n // Sidebar layout\n if (normalizedLayout === \"sidebar\") {\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {sidebarContent && (\n <aside\n className={dashboardSidebarVariants()}\n data-slot=\"dashboard-sidebar\"\n >\n {sidebarContent}\n </aside>\n )}\n <div className={dashboardContentVariants({ layout: normalizedLayout })}>\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n </div>\n )\n }\n\n // Default, dense, and full layouts\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardVariants({ layout: normalizedLayout }), className)}\n data-layout={normalizedLayout}\n data-slot=\"dashboard\"\n data-state={state}\n id={dashboardId}\n role=\"main\"\n {...props}\n >\n {showHeader && (title ?? description ?? headerActions) && (\n <DashboardHeader\n actions={headerActions}\n description={description}\n showRefresh={showRefresh}\n title={title}\n onRefresh={onRefresh ? handleRefresh : undefined}\n />\n )}\n {renderContent()}\n </div>\n )\n}\n\nexport {\n Dashboard,\n dashboardContentVariants,\n DashboardEmptyState,\n dashboardEmptyVariants,\n DashboardErrorState,\n dashboardGridVariants,\n DashboardHeader,\n dashboardHeaderVariants,\n DashboardLoadingState,\n dashboardLoadingVariants,\n dashboardSidebarVariants,\n dashboardVariants,\n DashboardWidget,\n dashboardWidgetHeaderVariants,\n dashboardWidgetVariants,\n}\nexport type {\n DashboardHeaderProps,\n DashboardProps,\n DashboardWidgetProps,\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-7TF5PVEU.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { ChevronLeft, ChevronRight, Clock, MapPin } from 'lucide-react';
|
|
4
4
|
import * as React from 'react';
|
|
@@ -1058,5 +1058,5 @@ function EventCalendar({
|
|
|
1058
1058
|
}
|
|
1059
1059
|
|
|
1060
1060
|
export { EventCalendar, EventCalendarAgenda, EventCalendarDay, EventCalendarEvent, EventCalendarHeader, EventCalendarMonth, EventCalendarWeek, eventCalendarAgendaItemVariants, eventCalendarCellVariants, eventCalendarDayNumberVariants, eventCalendarEventVariants, eventCalendarHeaderVariants, eventCalendarTimeSlotVariants, eventCalendarVariants, eventCalendarViewButtonVariants, getEventVariant };
|
|
1061
|
-
//# sourceMappingURL=chunk-
|
|
1062
|
-
//# sourceMappingURL=chunk-
|
|
1061
|
+
//# sourceMappingURL=chunk-T6XRYT6Q.js.map
|
|
1062
|
+
//# sourceMappingURL=chunk-T6XRYT6Q.js.map
|