UNPKG

analytica-frontend-lib

Version:

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

1 lines 28.9 kB
{"version":3,"sources":["../src/components/ExamPageLayout/GabaritoCard.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nexport interface AnswerSheetCardProps {\n studentName: string;\n qrCodeDataUrl: string;\n totalQuestions: number;\n examTitle?: string;\n schoolName?: string;\n className?: string;\n}\n\n/**\n * Global print styles to remove browser headers/footers (URL, date, title)\n * and ensure full-page printing\n */\nexport function PrintStyles() {\n return (\n <style>\n {`\n @media print {\n @page {\n size: A4;\n margin: 0;\n }\n html, body {\n margin: 0 !important;\n padding: 0 !important;\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n }\n .gabarito-page-container {\n padding: 0 !important;\n margin: 0 !important;\n background: white !important;\n display: block !important;\n }\n .gabarito-card-container {\n box-shadow: none !important;\n border: none !important;\n padding: 12mm !important;\n margin: 0 !important;\n width: 210mm !important;\n height: 297mm !important;\n }\n .gabarito-card-container:last-child {\n page-break-after: auto !important;\n margin-bottom: 0 !important;\n }\n .gabarito-qr-code {\n bottom: 12px !important;\n right: 12px !important;\n }\n }\n `}\n </style>\n );\n}\n\nconst pageContainerStyle: CSSProperties = {\n minHeight: '100vh',\n background: '#f3f4f6',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding: '24px 0',\n};\n\nexport function PageContainer({ children }: Readonly<{ children: ReactNode }>) {\n return (\n <div className=\"gabarito-page-container\" style={pageContainerStyle}>\n {children}\n </div>\n );\n}\n\nconst cardContainerStyle: CSSProperties = {\n background: 'white',\n width: '210mm',\n height: '297mm',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n border: '1px solid #d1d5db',\n padding: '24px',\n fontSize: '11px',\n lineHeight: 1.3,\n fontFamily: 'Arial, Helvetica, sans-serif',\n color: '#000000',\n position: 'relative',\n boxSizing: 'border-box',\n pageBreakAfter: 'always',\n pageBreakInside: 'avoid',\n marginBottom: '24px',\n};\n\nexport const CardContainer = forwardRef<\n HTMLDivElement,\n { children: ReactNode }\n>(({ children }, ref) => {\n return (\n <div\n ref={ref}\n className=\"gabarito-card-container\"\n style={cardContainerStyle}\n >\n {children}\n </div>\n );\n});\n\nCardContainer.displayName = 'CardContainer';\n\n// Styles objects for inline styling\nconst styles = {\n headerBar: {\n background: '#000000',\n color: 'white',\n padding: '6px 12px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '16px',\n fontWeight: 700,\n marginBottom: 0,\n } as CSSProperties,\n\n subHeader: {\n padding: '4px 12px',\n fontSize: '10px',\n color: '#374151',\n borderLeft: '1px solid #9ca3af',\n borderRight: '1px solid #9ca3af',\n } as CSSProperties,\n\n infoBox: {\n border: '1px solid #9ca3af',\n marginTop: '4px',\n } as CSSProperties,\n\n infoRow: {\n display: 'flex',\n } as CSSProperties,\n\n infoRowWithBorder: {\n display: 'flex',\n borderTop: '1px solid #9ca3af',\n } as CSSProperties,\n\n infoField: {\n flex: 1,\n padding: '6px',\n } as CSSProperties,\n\n infoFieldLabel: {\n fontWeight: 700,\n fontSize: '9px',\n } as CSSProperties,\n\n infoFieldContent: {\n height: '20px',\n marginTop: '2px',\n } as CSSProperties,\n\n smallInfoField: {\n width: '144px',\n padding: '6px',\n display: 'flex',\n alignItems: 'flex-start',\n } as CSSProperties,\n\n foreignLanguageBox: {\n width: '160px',\n borderRight: '1px solid #9ca3af',\n padding: '8px',\n } as CSSProperties,\n\n foreignLanguageTitle: {\n fontWeight: 700,\n fontSize: '9px',\n textAlign: 'center' as const,\n marginBottom: '4px',\n } as CSSProperties,\n\n foreignLanguageOption: {\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n marginLeft: '8px',\n marginTop: '4px',\n } as CSSProperties,\n\n checkbox: {\n width: '12px',\n height: '12px',\n borderRadius: '50%',\n border: '1px solid #6b7280',\n display: 'inline-block',\n } as CSSProperties,\n\n proctorBox: {\n flex: 1,\n padding: '8px',\n } as CSSProperties,\n\n proctorTitle: {\n fontWeight: 700,\n fontSize: '9px',\n textAlign: 'center' as const,\n marginBottom: '4px',\n } as CSSProperties,\n\n proctorItem: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '0 8px',\n fontSize: '10px',\n marginTop: '4px',\n } as CSSProperties,\n\n checkboxGroup: {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n } as CSSProperties,\n\n signatureBox: {\n border: '1px solid #9ca3af',\n borderTop: 0,\n padding: '8px',\n textAlign: 'center' as const,\n } as CSSProperties,\n\n signatureTitle: {\n fontWeight: 700,\n fontSize: '9px',\n marginBottom: '8px',\n } as CSSProperties,\n\n signatureLine: {\n borderBottom: '1px solid #9ca3af',\n margin: '16px 32px 0 32px',\n } as CSSProperties,\n\n instructionsBox: {\n border: '1px solid #9ca3af',\n borderTop: 0,\n padding: '8px',\n } as CSSProperties,\n\n instructionsTitle: {\n fontWeight: 700,\n fontSize: '10px',\n textAlign: 'center' as const,\n marginBottom: '4px',\n } as CSSProperties,\n\n instructionsText: {\n fontSize: '9px',\n padding: '0 4px',\n } as CSSProperties,\n\n instructionsParagraph: {\n margin: '2px 0',\n } as CSSProperties,\n\n transcriptionBox: {\n border: '1px solid #9ca3af',\n borderTop: 0,\n padding: '8px',\n } as CSSProperties,\n\n transcriptionTitle: {\n fontWeight: 700,\n fontSize: '9px',\n textAlign: 'center' as const,\n } as CSSProperties,\n\n transcriptionLine: {\n borderBottom: '1px solid #9ca3af',\n margin: '20px 16px 0 16px',\n } as CSSProperties,\n\n transcriptionLineSecond: {\n borderBottom: '1px solid #9ca3af',\n margin: '16px 16px 0 16px',\n } as CSSProperties,\n\n exampleSection: {\n marginTop: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n padding: '0 4px',\n gap: '12px',\n } as CSSProperties,\n\n exampleText: {\n flex: 1,\n } as CSSProperties,\n\n exampleTextTitle: {\n fontWeight: 700,\n fontSize: '10px',\n marginBottom: '4px',\n } as CSSProperties,\n\n exampleTextParagraph: {\n fontSize: '9px',\n margin: '2px 0',\n } as CSSProperties,\n\n exampleBox: {\n width: '224px',\n border: '1px solid #9ca3af',\n padding: '6px',\n } as CSSProperties,\n\n exampleBoxTitle: {\n fontWeight: 700,\n fontSize: '9px',\n marginBottom: '4px',\n } as CSSProperties,\n\n exampleRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n fontSize: '9px',\n marginBottom: '2px',\n } as CSSProperties,\n\n exampleRowNumero: {\n fontWeight: 700,\n marginLeft: '4px',\n } as CSSProperties,\n\n exampleBubble: {\n width: '16px',\n height: '16px',\n borderRadius: '50%',\n border: '1px solid #6b7280',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '7px',\n fontWeight: 700,\n background: 'white',\n color: '#6b7280',\n } as CSSProperties,\n\n exampleBubbleFilled: {\n width: '16px',\n height: '16px',\n borderRadius: '50%',\n border: '1px solid #6b7280',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '7px',\n fontWeight: 700,\n background: '#000000',\n color: 'white',\n } as CSSProperties,\n\n gridContainer: {\n marginTop: '8px',\n border: '1px solid #9ca3af',\n } as CSSProperties,\n\n gridHeader: {\n display: 'flex',\n background: '#e5e7eb',\n borderBottom: '1px solid #9ca3af',\n } as CSSProperties,\n\n gridHeaderCell: {\n flex: 1,\n textAlign: 'center' as const,\n fontSize: '8px',\n fontWeight: 700,\n padding: '4px 0',\n } as CSSProperties,\n\n gridHeaderCellWithBorder: {\n flex: 1,\n textAlign: 'center' as const,\n fontSize: '8px',\n fontWeight: 700,\n padding: '4px 0',\n borderRight: '1px solid #9ca3af',\n } as CSSProperties,\n\n gridRow: {\n display: 'flex',\n } as CSSProperties,\n\n gridRowWithBorder: {\n display: 'flex',\n borderBottom: '1px solid #e5e7eb',\n } as CSSProperties,\n\n gridCell: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n padding: '6px 4px',\n } as CSSProperties,\n\n gridCellWithBorder: {\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n padding: '6px 4px',\n borderRight: '1px solid #9ca3af',\n } as CSSProperties,\n\n gridCellNumero: {\n width: '20px',\n textAlign: 'right' as const,\n fontSize: '9px',\n fontWeight: 500,\n marginRight: '8px',\n } as CSSProperties,\n\n gridCellBubbles: {\n display: 'flex',\n gap: '1px',\n } as CSSProperties,\n\n gridCellEmpty: {\n color: '#d1d5db',\n marginLeft: '24px',\n } as CSSProperties,\n\n answerBubble: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n border: '1px solid #9ca3af',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '9px',\n color: '#9ca3af',\n } as CSSProperties,\n\n qrCodeImage: {\n width: '180px',\n height: '180px',\n position: 'absolute' as const,\n bottom: '20px',\n right: '20px',\n } as CSSProperties,\n};\n\nconst OPTIONS = ['A', 'B', 'C', 'D', 'E'];\nconst NUM_COLUMNS = 5;\nconst ROWS_PER_COLUMN = 10;\n\n/**\n * Shared AnswerSheetCard component for rendering answer sheet content\n * Used by both AnswerSheetPreview (single) and AnswerSheetsBatchPreview (batch)\n * NOTE: This component renders just the inner content - wrap it with CardContainer\n */\nexport function AnswerSheetCard({\n studentName,\n qrCodeDataUrl,\n totalQuestions,\n examTitle,\n schoolName,\n className,\n}: Readonly<AnswerSheetCardProps>) {\n const getQuestionNumber = (colIdx: number, rowIdx: number): number | null => {\n const questionNum = colIdx * ROWS_PER_COLUMN + rowIdx + 1;\n return questionNum <= totalQuestions ? questionNum : null;\n };\n\n return (\n <>\n {/* Header */}\n <div style={styles.headerBar}>\n <span>&#9632;</span>\n <span>CARTAO-RESPOSTA</span>\n </div>\n <div style={styles.subHeader}>\n {examTitle || 'Simulado Analytica 2026'}\n </div>\n\n {/* Nome / Info do Aluno */}\n <div style={styles.infoBox}>\n <div style={styles.infoRow}>\n <div\n style={{\n ...styles.infoField,\n flex: 3,\n borderRight: '1px solid #9ca3af',\n }}\n >\n <div style={styles.infoFieldLabel}>NOME COMPLETO:</div>\n <div style={styles.infoFieldContent}>{studentName}</div>\n </div>\n <div style={styles.smallInfoField}>\n <div style={styles.infoFieldLabel}>INFORMACOES DO ALUNO</div>\n </div>\n </div>\n <div style={styles.infoRowWithBorder}>\n <div style={styles.infoField}>\n <div style={styles.infoFieldLabel}>ESCOLA E TURMA:</div>\n <div style={styles.infoFieldContent}>\n {schoolName && className\n ? `${schoolName} - ${className}`\n : schoolName || className || ''}\n </div>\n </div>\n </div>\n </div>\n\n {/* Lingua Estrangeira / Fiscal */}\n <div style={{ ...styles.infoBox, borderTop: 0 }}>\n <div style={styles.infoRow}>\n <div style={styles.foreignLanguageBox}>\n <div style={styles.foreignLanguageTitle}>LINGUA ESTRANGEIRA</div>\n <div style={styles.foreignLanguageOption}>\n <span style={styles.checkbox} />\n <span>INGLES</span>\n </div>\n <div style={styles.foreignLanguageOption}>\n <span style={styles.checkbox} />\n <span>ESPANHOL</span>\n </div>\n </div>\n <div style={styles.proctorBox}>\n <div style={styles.proctorTitle}>\n PARA USO EXCLUSIVO DO FISCAL DE SALA\n </div>\n <div style={styles.proctorItem}>\n <span>PARTICIPANTE AUSENTE</span>\n <div style={styles.checkboxGroup}>\n <span>SIM</span>\n <span style={styles.checkbox} />\n </div>\n </div>\n <div style={styles.proctorItem}>\n <span>\n PARTICIPANTE PRESENTE DEIXOU O CARTAO-RESPOSTA EM BRANCO\n </span>\n <div style={styles.checkboxGroup}>\n <span>SIM</span>\n <span style={styles.checkbox} />\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Assinatura */}\n <div style={styles.signatureBox}>\n <div style={styles.signatureTitle}>ASSINATURA DO PARTICIPANTE</div>\n <div style={styles.signatureLine} />\n </div>\n\n {/* Instrucoes */}\n <div style={styles.instructionsBox}>\n <div style={styles.instructionsTitle}>INSTRUCOES</div>\n <div style={styles.instructionsText}>\n <p style={styles.instructionsParagraph}>\n 1. Verifique se seu nome completo e os dados impressos neste\n CARTAO-RESPOSTA estao corretos. Assine somente no local apropriado.\n </p>\n <p style={styles.instructionsParagraph}>\n 2. O CARTAO-RESPOSTA e o unico documento para correcao eletronica.\n Nao o amasse, rasque, dobre ou rasure. Nao havera substituicao por\n erro do participante.\n </p>\n <p style={styles.instructionsParagraph}>\n 3. Em nenhuma hipotese voce podera levar o CARTAO-RESPOSTA ao deixar\n a sala de provas, sob pena de eliminacao no exame.\n </p>\n <p style={styles.instructionsParagraph}>\n 4. Preencha suas respostas nos campos apropriados conforme o EXEMPLO\n DE PREENCHIMENTO. O preenchimento incorreto impossibilita a leitura\n otica.\n </p>\n <p style={styles.instructionsParagraph}>\n 5. Entregue este CARTAO-RESPOSTA ao aplicador ao termino da\n realizacao do exame.\n </p>\n </div>\n </div>\n\n {/* Transcreva frase */}\n <div style={styles.transcriptionBox}>\n <div style={styles.transcriptionTitle}>\n TRANSCREVA AQUI A FRASE APRESENTADA NA CAPA DE SEU CADERNO DE\n QUESTOES, CONFORME AS INSTRUCOES NELA CONTIDAS.\n </div>\n <div style={styles.transcriptionLine} />\n <div style={styles.transcriptionLineSecond} />\n </div>\n\n {/* Exemplo de preenchimento */}\n <div style={styles.exampleSection}>\n <div style={styles.exampleText}>\n <div style={styles.exampleTextTitle}>EXEMPLO DE PREENCHIMENTO</div>\n <p style={styles.exampleTextParagraph}>\n Preencha os circulos completamente, conforme a imagem ao lado,\n utilizando\n </p>\n <p style={styles.exampleTextParagraph}>\n <strong>\n caneta esferografica de tinta preta, fabricada em material\n transparente.\n </strong>\n </p>\n <p style={styles.exampleTextParagraph}>\n Nao sera permitido o uso de lapis, lapiseira (grafite) e borracha.\n </p>\n </div>\n <div style={styles.exampleBox}>\n <div style={styles.exampleBoxTitle}>Exemplo de resposta</div>\n {[\n { q: 1, label: 'A', answer: 'A' },\n { q: 2, label: 'B', answer: 'B' },\n { q: 3, label: 'C', answer: 'C' },\n ].map(({ q, label, answer }) => (\n <div key={q} style={styles.exampleRow}>\n <span>Resposta da questao X = {label} -&gt;</span>\n <span style={styles.exampleRowNumero}>\n {String(q).padStart(2, '0')}\n </span>\n {OPTIONS.map((opt) => (\n <span\n key={opt}\n style={\n opt === answer\n ? styles.exampleBubbleFilled\n : styles.exampleBubble\n }\n >\n {opt}\n </span>\n ))}\n </div>\n ))}\n </div>\n </div>\n\n {/* Grid de Questoes */}\n <div style={styles.gridContainer}>\n {/* Header */}\n <div style={styles.gridHeader}>\n {Array.from({ length: NUM_COLUMNS }, (_, i) => (\n <div\n key={i}\n style={\n i < NUM_COLUMNS - 1\n ? styles.gridHeaderCellWithBorder\n : styles.gridHeaderCell\n }\n >\n Questao / Resposta\n </div>\n ))}\n </div>\n\n {/* Rows */}\n {Array.from({ length: ROWS_PER_COLUMN }, (_, rowIdx) => (\n <div\n key={rowIdx}\n style={\n rowIdx < ROWS_PER_COLUMN - 1\n ? styles.gridRowWithBorder\n : styles.gridRow\n }\n >\n {Array.from({ length: NUM_COLUMNS }, (_, colIdx) => {\n const questionNum = getQuestionNumber(colIdx, rowIdx);\n\n return (\n <div\n key={colIdx}\n style={\n colIdx < NUM_COLUMNS - 1\n ? styles.gridCellWithBorder\n : styles.gridCell\n }\n >\n {questionNum === null ? (\n <span style={styles.gridCellEmpty}>-</span>\n ) : (\n <>\n <span style={styles.gridCellNumero}>{questionNum}</span>\n <div style={styles.gridCellBubbles}>\n {OPTIONS.map((opt) => (\n <span key={opt} style={styles.answerBubble}>\n {opt}\n </span>\n ))}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n\n {/* QR Code */}\n {qrCodeDataUrl && (\n <img\n src={qrCodeDataUrl}\n alt=\"QR Code\"\n className=\"gabarito-qr-code\"\n style={styles.qrCodeImage}\n />\n )}\n </>\n );\n}\n\nexport default AnswerSheetCard;\n"],"mappings":"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","names":["_"]}