trix-app 0.16.1
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/LICENSE +41 -0
- package/dist/assets/fonts/Phosphor.ttf +0 -0
- package/dist/assets/fonts/Poppins-Bold.ttf +0 -0
- package/dist/assets/fonts/Poppins-Light.ttf +0 -0
- package/dist/assets/fonts/Poppins-Medium.ttf +0 -0
- package/dist/assets/fonts/Poppins-Regular.ttf +0 -0
- package/dist/assets/fonts/Poppins-SemiBold.ttf +0 -0
- package/dist/assets/genial-logo.png +0 -0
- package/dist/assets/index.d.ts +10 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/trix-logo-black.png +0 -0
- package/dist/components/charts/bar.d.ts +18 -0
- package/dist/components/charts/bar.d.ts.map +1 -0
- package/dist/components/charts/line.d.ts +20 -0
- package/dist/components/charts/line.d.ts.map +1 -0
- package/dist/components/charts/pie.d.ts +15 -0
- package/dist/components/charts/pie.d.ts.map +1 -0
- package/dist/components/charts/time-series.d.ts +22 -0
- package/dist/components/charts/time-series.d.ts.map +1 -0
- package/dist/components/page-count.d.ts +6 -0
- package/dist/components/page-count.d.ts.map +1 -0
- package/dist/components/primitives/divider.d.ts +4 -0
- package/dist/components/primitives/divider.d.ts.map +1 -0
- package/dist/components/primitives/icon.d.ts +9 -0
- package/dist/components/primitives/icon.d.ts.map +1 -0
- package/dist/components/primitives/image.d.ts +5 -0
- package/dist/components/primitives/image.d.ts.map +1 -0
- package/dist/components/primitives/index.d.ts +7 -0
- package/dist/components/primitives/index.d.ts.map +1 -0
- package/dist/components/primitives/link.d.ts +3 -0
- package/dist/components/primitives/link.d.ts.map +1 -0
- package/dist/components/primitives/page.d.ts +4 -0
- package/dist/components/primitives/page.d.ts.map +1 -0
- package/dist/components/primitives/svg.d.ts +11 -0
- package/dist/components/primitives/svg.d.ts.map +1 -0
- package/dist/components/primitives/text.d.ts +4 -0
- package/dist/components/primitives/text.d.ts.map +1 -0
- package/dist/components/primitives/view.d.ts +4 -0
- package/dist/components/primitives/view.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +12 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/card.d.ts +11 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/index.d.ts +6 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/item.d.ts +43 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/table.d.ts +18 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/constants/phosphor-icons.d.ts +1533 -0
- package/dist/constants/phosphor-icons.d.ts.map +1 -0
- package/dist/index.cjs +285 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +285 -0
- package/dist/lib/generate-pdf.d.ts +21 -0
- package/dist/lib/generate-pdf.d.ts.map +1 -0
- package/dist/lib/insert-page.d.ts +9 -0
- package/dist/lib/insert-page.d.ts.map +1 -0
- package/dist/templates/income-statement/components/Footer.d.ts +3 -0
- package/dist/templates/income-statement/components/Footer.d.ts.map +1 -0
- package/dist/templates/income-statement/components/Home.d.ts +9 -0
- package/dist/templates/income-statement/components/Home.d.ts.map +1 -0
- package/dist/templates/income-statement/components/account-info.d.ts +14 -0
- package/dist/templates/income-statement/components/account-info.d.ts.map +1 -0
- package/dist/templates/income-statement/components/darf-table.d.ts +12 -0
- package/dist/templates/income-statement/components/darf-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/depent-transfers.d.ts +11 -0
- package/dist/templates/income-statement/components/depent-transfers.d.ts.map +1 -0
- package/dist/templates/income-statement/components/fiis-table.d.ts +28 -0
- package/dist/templates/income-statement/components/fiis-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/fiis-transactions-table.d.ts +18 -0
- package/dist/templates/income-statement/components/fiis-transactions-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/fixed-income-table.d.ts +14 -0
- package/dist/templates/income-statement/components/fixed-income-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/page-footer.d.ts +5 -0
- package/dist/templates/income-statement/components/page-footer.d.ts.map +1 -0
- package/dist/templates/income-statement/components/stock-dividend-table.d.ts +15 -0
- package/dist/templates/income-statement/components/stock-dividend-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/stock-jcp-table.d.ts +15 -0
- package/dist/templates/income-statement/components/stock-jcp-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/stock-position-table.d.ts +21 -0
- package/dist/templates/income-statement/components/stock-position-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/stock-transactions.d.ts +15 -0
- package/dist/templates/income-statement/components/stock-transactions.d.ts.map +1 -0
- package/dist/templates/income-statement/components/stocks-table.d.ts +22 -0
- package/dist/templates/income-statement/components/stocks-table.d.ts.map +1 -0
- package/dist/templates/income-statement/components/title.d.ts +7 -0
- package/dist/templates/income-statement/components/title.d.ts.map +1 -0
- package/dist/templates/income-statement/context.d.ts +255 -0
- package/dist/templates/income-statement/context.d.ts.map +1 -0
- package/dist/templates/income-statement/index.d.ts +6 -0
- package/dist/templates/income-statement/index.d.ts.map +1 -0
- package/dist/templates/income-statement/mappers.d.ts +122 -0
- package/dist/templates/income-statement/mappers.d.ts.map +1 -0
- package/dist/templates/income-statement/schema.d.ts +127 -0
- package/dist/templates/income-statement/schema.d.ts.map +1 -0
- package/dist/templates/income-statement/styles.d.ts +46 -0
- package/dist/templates/income-statement/styles.d.ts.map +1 -0
- package/dist/theme.d.ts +269 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/types/templates.d.ts +14 -0
- package/dist/types/templates.d.ts.map +1 -0
- package/dist/utils/fonts.d.ts +2 -0
- package/dist/utils/fonts.d.ts.map +1 -0
- package/dist/utils/format-currency.d.ts +2 -0
- package/dist/utils/format-currency.d.ts.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/theme.d.ts +2 -0
- package/dist/utils/theme.d.ts.map +1 -0
- package/package.json +85 -0
- package/scripts/generate-icon-map.ts +83 -0
- package/scripts/patch-textkit.js +57 -0
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "trix-app",
|
|
3
|
+
"version": "0.16.1",
|
|
4
|
+
"description": "Biblioteca para geração de PDFs personalizados utilizando React e TailwindCSS.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.mjs",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"private": false,
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+ssh://git@bitbucket.org/trix_investimentos/trix_pdf_builder.git"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.mjs",
|
|
18
|
+
"require": "./dist/index.cjs",
|
|
19
|
+
"default": "./dist/index.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"scripts",
|
|
26
|
+
"README.md",
|
|
27
|
+
"LICENSE"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "bun run build.ts && bun run build:types",
|
|
31
|
+
"build:node": "node build-node.mjs && npm run build:types",
|
|
32
|
+
"prepare": "npm run build",
|
|
33
|
+
"build:types": "tsc --project tsconfig.types.json",
|
|
34
|
+
"verify:dist": "node ./scripts/verify-dist.js",
|
|
35
|
+
"prepublishOnly": "npm run build",
|
|
36
|
+
"lint": "biome lint .",
|
|
37
|
+
"lint:fix": "biome lint --write .",
|
|
38
|
+
"postinstall": "test -f scripts/patch-textkit.js && node scripts/patch-textkit.js || true"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"class-variance-authority": "0.7.0",
|
|
42
|
+
"clsx": "2.0.0",
|
|
43
|
+
"d3-geo": "3.1.1",
|
|
44
|
+
"fetch-blob": "3.2.0",
|
|
45
|
+
"pdf-lib": "1.17.1",
|
|
46
|
+
"react-pdf-tailwind": "3.0.0",
|
|
47
|
+
"tailwind-merge": "2.0.0",
|
|
48
|
+
"tailwindcss": "3.0.0",
|
|
49
|
+
"zod": "4.1.12"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"react": ">=18",
|
|
53
|
+
"@react-pdf/renderer": ">=4"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@biomejs/biome": "2.3.5",
|
|
57
|
+
"@types/bun": "latest",
|
|
58
|
+
"@types/d3-geo": "^3.1.0",
|
|
59
|
+
"@types/react": "^18.3.18",
|
|
60
|
+
"esbuild": "0.27.2",
|
|
61
|
+
"lefthook": "^2.0.13",
|
|
62
|
+
"patch-package": "8.0.1",
|
|
63
|
+
"typescript": "^5.6.0",
|
|
64
|
+
"react": "^18.0.0",
|
|
65
|
+
"@react-pdf/renderer": "^4.0.0"
|
|
66
|
+
},
|
|
67
|
+
"keywords": [
|
|
68
|
+
"pdf",
|
|
69
|
+
"react",
|
|
70
|
+
"tailwindcss",
|
|
71
|
+
"pdf-generation",
|
|
72
|
+
"react-pdf",
|
|
73
|
+
"trix",
|
|
74
|
+
"investment-memo",
|
|
75
|
+
"report-builder"
|
|
76
|
+
],
|
|
77
|
+
"author": "Trx Investimentos",
|
|
78
|
+
"license": "MIT",
|
|
79
|
+
"publishConfig": {
|
|
80
|
+
"access": "public"
|
|
81
|
+
},
|
|
82
|
+
"engines": {
|
|
83
|
+
"node": ">=16.0.0"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
|
|
6
|
+
interface IconSelection {
|
|
7
|
+
IcoMoonType: string;
|
|
8
|
+
icons: Array<{
|
|
9
|
+
properties: {
|
|
10
|
+
name: string;
|
|
11
|
+
code: number;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async function generateIconMap() {
|
|
17
|
+
const selectionPath = resolve(__dirname, "../assets/selection.json");
|
|
18
|
+
const outputPath = resolve(__dirname, "../src/constants/phosphor-icons.ts");
|
|
19
|
+
|
|
20
|
+
console.log("📖 Reading selection file...");
|
|
21
|
+
const selectionData: IconSelection = JSON.parse(readFileSync(selectionPath, "utf-8"));
|
|
22
|
+
|
|
23
|
+
console.log(`✨ Found ${selectionData.icons.length} icons`);
|
|
24
|
+
|
|
25
|
+
// Criar mapeamento de nome para código hexadecimal
|
|
26
|
+
const iconMap: Record<string, string> = {};
|
|
27
|
+
|
|
28
|
+
for (const icon of selectionData.icons) {
|
|
29
|
+
const name = icon.properties.name;
|
|
30
|
+
const code = icon.properties.code;
|
|
31
|
+
// Converter código decimal para hexadecimal
|
|
32
|
+
const hexCode = code.toString(16);
|
|
33
|
+
iconMap[name] = hexCode;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Gerar conteúdo do arquivo TypeScript
|
|
37
|
+
const fileContent = `// Auto-generated file. Do not edit manually.
|
|
38
|
+
// Generated from assets/selection copy.json
|
|
39
|
+
// Run: bun run scripts/generate-icon-map.ts
|
|
40
|
+
|
|
41
|
+
export const PHOSPHOR_ICONS = ${JSON.stringify(iconMap, null, 2)} as const;
|
|
42
|
+
|
|
43
|
+
export type PhosphorIconName = keyof typeof PHOSPHOR_ICONS;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get the hex code for a Phosphor icon by name
|
|
47
|
+
* @param name - The icon name (e.g., "acorn", "heart", "user")
|
|
48
|
+
* @returns The hex code string (e.g., "eb9a")
|
|
49
|
+
*/
|
|
50
|
+
export function getIconCode(name: PhosphorIconName): string {
|
|
51
|
+
return PHOSPHOR_ICONS[name];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Check if an icon name exists in the Phosphor icon set
|
|
56
|
+
* @param name - The icon name to check
|
|
57
|
+
* @returns True if the icon exists
|
|
58
|
+
*/
|
|
59
|
+
export function hasIcon(name: string): name is PhosphorIconName {
|
|
60
|
+
return name in PHOSPHOR_ICONS;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get all available icon names
|
|
65
|
+
* @returns Array of all icon names
|
|
66
|
+
*/
|
|
67
|
+
export function getAllIconNames(): PhosphorIconName[] {
|
|
68
|
+
return Object.keys(PHOSPHOR_ICONS) as PhosphorIconName[];
|
|
69
|
+
}
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
console.log("💾 Writing icon map file...");
|
|
73
|
+
writeFileSync(outputPath, fileContent, "utf-8");
|
|
74
|
+
|
|
75
|
+
console.log("✅ Icon map generated successfully!");
|
|
76
|
+
console.log(`📄 Output: ${outputPath}`);
|
|
77
|
+
console.log(`🎨 Total icons: ${Object.keys(iconMap).length}`);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
generateIconMap().catch((error) => {
|
|
81
|
+
console.error("❌ Error generating icon map:", error);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aplica patch no @react-pdf/textkit para evitar "lastFont.unitsPerEm" quando
|
|
3
|
+
* lastFont ou font são null/undefined (font stack vazia).
|
|
4
|
+
* Rode após install (postinstall).
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const root = path.resolve(__dirname, "..");
|
|
12
|
+
const textkitPath = path.join(root, "node_modules", "@react-pdf", "textkit", "lib", "textkit.js");
|
|
13
|
+
|
|
14
|
+
const UNPATCHED = ` const font = pickFontFromFontStack(codePoint, run.attributes.font, lastFont);
|
|
15
|
+
const fontSize = getFontSize(run);
|
|
16
|
+
// If anything that would impact res has changed, update it
|
|
17
|
+
if (font !== lastFont ||
|
|
18
|
+
fontSize !== lastFontSize ||
|
|
19
|
+
font.unitsPerEm !== lastFont.unitsPerEm) {`;
|
|
20
|
+
|
|
21
|
+
const PATCHED = ` const font = pickFontFromFontStack(codePoint, run.attributes.font, lastFont);
|
|
22
|
+
const fontSize = getFontSize(run);
|
|
23
|
+
// If anything that would impact res has changed, update it (guard: font/lastFont can be null when font stack is empty)
|
|
24
|
+
const unitsPerEmChanged = font && lastFont && font.unitsPerEm !== lastFont.unitsPerEm;
|
|
25
|
+
if (font !== lastFont ||
|
|
26
|
+
fontSize !== lastFontSize ||
|
|
27
|
+
unitsPerEmChanged) {`;
|
|
28
|
+
|
|
29
|
+
const UNPATCHED_TAIL = ` }
|
|
30
|
+
if (lastIndex < string.length) {
|
|
31
|
+
const fontSize = getFontSize(last(runs));`;
|
|
32
|
+
|
|
33
|
+
const PATCHED_TAIL = ` }
|
|
34
|
+
if (lastFont && lastIndex < string.length) {
|
|
35
|
+
const fontSize = getFontSize(last(runs));`;
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
let content = fs.readFileSync(textkitPath, "utf8");
|
|
39
|
+
if (content.includes("unitsPerEmChanged")) {
|
|
40
|
+
console.log("[patch-textkit] Já aplicado, ignorando.");
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
if (!content.includes(UNPATCHED.trim().slice(0, 80))) {
|
|
44
|
+
console.warn("[patch-textkit] Arquivo textkit.js inesperado; patch não aplicado.");
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
content = content.replace(UNPATCHED, PATCHED).replace(UNPATCHED_TAIL, PATCHED_TAIL);
|
|
48
|
+
fs.writeFileSync(textkitPath, content);
|
|
49
|
+
console.log("[patch-textkit] Patch aplicado em @react-pdf/textkit.");
|
|
50
|
+
} catch (err) {
|
|
51
|
+
if (err.code === "ENOENT") {
|
|
52
|
+
console.log("[patch-textkit] @react-pdf/textkit não encontrado (node_modules não instalado?).");
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
console.error("[patch-textkit] Erro:", err.message);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|