Full brand identity management for contractor companies. Logo, colors, typography, email templates, invoice branding, and exportable brand assets — all white-labeled to your company identity.
BrandingOverviewScreen
useQuery(api.branding.queries.getBrandProfile), score ring with conic-gradient, checklist maps brand fields to completion status
LogoUploadScreen
expo-image-picker, useMutation(api.branding.mutations.uploadLogo), auto-crop via sharp/canvas, bg toggle previews logo on light/dark/colored surfaces
ColorThemeScreen
useMutation(api.branding.mutations.updateColors), color presets from COLOR_PRESETS array, live preview renders mock card/button/header with selected palette
TypographyScreen
useMutation(api.branding.mutations.updateTypography), Google Fonts API for family selection, weight chips toggle included weights, live scale preview renders heading/body/caption samples
EmailTemplatesScreen
useQuery(api.branding.queries.getEmailTemplates), tab selector for template type, merge tag chips insert at cursor, SendGrid integration for test sends
InvoiceBrandingScreen
useQuery(api.branding.queries.getInvoiceSettings), live preview applies brand colors to invoice mock, custom footer/terms fields persist to invoice generation
BrandPreviewScreen
useQuery(api.branding.queries.getBrandProfile), three preview tabs (profile/bid/portfolio), renders live brand colors + logo into homeowner-facing mock components
BrandAssetsScreen
useQuery(api.branding.queries.getExportableAssets), QR code via react-native-qrcode-svg with brand overlay, asset generation via Convex action + Puppeteer server-side rendering
contractorProfile — Extended with brandConfig: { logoStorageId, logoUrl, primaryColor, secondaryColor, accentColor, fontFamily, fontWeights[], emailHeaderHtml, emailFooterHtml, invoiceFooter, invoiceTerms }
brandTemplates — Per-contractor email templates by type (estimate, invoice, follow_up, receipt). Fields: type, subject, bodyHtml, headerStyle, footerStyle, mergeTagDefaults
brandAssets — Generated export files. Fields: contractorId, assetType (business_card | email_sig | social_kit | letterhead | door_hanger | vehicle_wrap | qr_code), storageId, format, generatedAt, version
brandFonts — Available font families. Fields: name, source (google | system | custom), weights[], previewUrl, category (sans-serif | serif | monospace)
api.branding.queries
.getBrandProfile — Full brand config + completeness score
.getEmailTemplates — All templates by type
.getInvoiceSettings — Invoice brand config + preview data
.getExportableAssets — Generated assets with download URLs
.getPublicBrandProfile — Public-facing brand (used by poster views)
api.branding.mutations
.uploadLogo — Upload + auto-crop via sharp
.updateColors — Save primary/secondary/accent
.updateTypography — Font family + weights
.saveEmailTemplate — Upsert template by type
.saveInvoiceSettings — Footer text + terms
.generateAsset — Trigger server-side asset generation
.resetToDefaults — Clear custom brand, revert to platform defaults
api.branding.actions
.renderAssetPDF — Puppeteer server-side render for print assets
.generateQRCode — QR with brand logo overlay
.sendTestEmail — SendGrid test send with brand template
.exportBrandKit — ZIP all assets for bulk download
BrandScoreRing — Conic-gradient progress ring with completeness %
ColorSwatchPicker — Swatch + hex input + preset grid
FontFamilySelector — Font list with live preview samples
EmailTemplateMock — Branded email header/body/footer preview
InvoiceTemplateMock — Invoice with live brand application
BrandedProfileCard — Public profile with custom colors/logo
BrandedBidCard — Bid card with contractor brand applied
BrandAssetRow — Downloadable asset with icon/meta/dl button
LogoPreviewToggle — Light/dark/colored bg preview switcher
MergeTagChip — Inline merge tag reference chip