Add contract templates and onboarding functionality#330
Conversation
- Implemented contract templates management with CRUD operations. - Added contract variables and context for dynamic contract generation. - Created onboarding process for sponsors, including token generation and validation. - Enhanced sponsor data model to include onboarding status and contract template references. - Introduced new schemas for contract templates and onboarding submissions. - Updated sponsor router to handle contract template operations and onboarding processes.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
… indicator with grouped missing fields
…em examples - Introduced HeroSections.stories.tsx with various hero section examples including Brand Gradient, Dark Slate, and Light Hero with Border. - Added SpeakerComponents.stories.tsx showcasing SpeakerAvatars, SpeakerAvatarsWithNames, and ClickableSpeakerNames components with mock data. - Updated TRPC client configuration to log errors only when they occur in the down direction. - Enhanced Tailwind CSS styles by adding a new font class for Atkinson font.
…hance documentation structure
…SpeakerComponents stories
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||||||||
There was a problem hiding this comment.
Pull request overview
Adds sponsor contract template management, dynamic contract readiness/onboarding tooling, and sets up Storybook documentation/testing infrastructure to support these workflows.
Changes:
- Introduces Sanity schema + migration fields for contract templates, signature tracking, and sponsor onboarding.
- Adds admin UI for contract template listing plus sponsor onboarding link generation and contract readiness indicator.
- Adds Storybook (config, stories, CI workflows, scripts) to document and test UI components.
Reviewed changes
Copilot reviewed 122 out of 147 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| src/lib/dashboard/README.md | Removes dashboard library README content |
| src/lib/conference/types.ts | Extends Conference type with organizer org/address fields |
| src/docs/design-system/brand/ColorPalette.stories.tsx | Adds brand color palette documentation story |
| src/docs/design-system/brand/Buttons.stories.tsx | Adds brand button system story |
| src/docs/design-system/Spacing.stories.tsx | Adds spacing scale documentation story |
| src/docs/design-system/Shadows.stories.tsx | Adds shadows documentation story |
| src/docs/design-system/Colors.stories.tsx | Adds foundation colors story |
| src/docs/components/index.ts | Exports shared docs components |
| src/docs/components/TypographyShowcase.tsx | Repoints typography types to design-system data |
| src/docs/components/ColorSwatch.tsx | Repoints color types to design-system data |
| src/docs/DeveloperGuide.stories.tsx | Adds developer guide Storybook page |
| src/components/icons/OSIcons.stories.tsx | Adds Storybook docs for OS icons |
| src/components/common/MissingAvatar.stories.tsx | Adds Storybook docs for MissingAvatar |
| src/components/common/DownloadableImage.tsx | Renames/introduces generic downloadable wrapper |
| src/components/common/ContactRoleSelect.stories.tsx | Adds Storybook docs for contact role selector demo |
| src/components/cfp/SpeakerShareWrapper.tsx | Updates import path for sharing actions component |
| src/components/branding/index.ts | Removes branding barrel export |
| src/components/branding/PatternExample.tsx | Removes branding example component |
| src/components/branding/IconShowcase.tsx | Removes branding icon showcase component |
| src/components/branding/ExpandableEmailTemplate.tsx | Removes expandable email template component |
| src/components/branding/BrandingHeroSection.tsx | Removes branding hero section component |
| src/components/branding/BrandingExampleHeroSection.tsx | Removes branding example hero section component |
| src/components/admin/sponsor/SponsorContactActions.stories.tsx | Adds Storybook docs for sponsor contact actions UI |
| src/components/admin/sponsor/ContractTemplateListPage.tsx | Adds admin page for listing/deleting contract templates |
| src/components/admin/sponsor-crm/utils.ts | Adds new activity/action item icons & colors |
| src/components/admin/sponsor-crm/form/TierRadioGroup.stories.tsx | Adds TierRadioGroup stories |
| src/components/admin/sponsor-crm/form/TagCombobox.stories.tsx | Adds TagCombobox stories |
| src/components/admin/sponsor-crm/form/StatusListbox.stories.tsx | Adds StatusListbox stories |
| src/components/admin/sponsor-crm/form/ContractValueInput.stories.tsx | Adds ContractValueInput stories |
| src/components/admin/sponsor-crm/form/AddonsCheckboxGroup.stories.tsx | Adds AddonsCheckboxGroup stories |
| src/components/admin/sponsor-crm/SponsorCard.stories.tsx | Adds SponsorCard stories |
| src/components/admin/sponsor-crm/SponsorCRMForm.tsx | Adds onboarding link + contract readiness UI to CRM form |
| src/components/admin/sponsor-crm/SponsorBulkActions.stories.tsx | Adds SponsorBulkActions stories with MSW mocking |
| src/components/admin/sponsor-crm/SponsorBoardColumn.stories.tsx | Adds SponsorBoardColumn stories |
| src/components/admin/sponsor-crm/OnboardingLinkButton.tsx | Adds onboarding link generation/copy UI |
| src/components/admin/sponsor-crm/OnboardingLinkButton.stories.tsx | Adds stories for onboarding link button with MSW |
| src/components/admin/sponsor-crm/ContractReadinessIndicator.tsx | Adds contract readiness indicator component |
| src/components/admin/sponsor-crm/ContractReadinessIndicator.stories.tsx | Adds stories for readiness indicator with MSW |
| src/components/admin/sponsor-crm/BoardViewSwitcher.stories.tsx | Adds BoardViewSwitcher stories |
| src/components/admin/ProposalStatistics.stories.tsx | Adds ProposalStatistics stories |
| src/components/admin/PhotoGalleryWithDownload.tsx | Switches to DownloadableImage wrapper |
| src/components/admin/MemeGeneratorWithDownload.tsx | Switches to DownloadableImage wrapper |
| src/components/admin/EmailModal.tsx | Tweaks Tailwind min-height classes in email UI |
| src/components/VideoEmbed.stories.tsx | Adds VideoEmbed stories |
| src/components/ThemeToggle.stories.tsx | Adds ThemeToggle stories |
| src/components/Sponsors.stories.tsx | Adds Sponsors system component stories |
| src/components/SponsorLogo.stories.tsx | Adds SponsorLogo stories |
| src/components/SpeakerAvatars.stories.tsx | Adds SpeakerAvatars stories |
| src/components/ShowMore.tsx | Adds explicit text color classes to content container |
| src/components/ShowMore.stories.tsx | Adds ShowMore stories + interaction tests |
| src/components/Logo.stories.tsx | Adds Logo/Logomark stories |
| src/components/Container.stories.tsx | Adds Container stories |
| src/components/CollapsibleDescription.stories.tsx | Adds CollapsibleDescription stories |
| src/components/Button.stories.tsx | Adds Button stories + interaction tests |
| src/components/BackLink.stories.tsx | Adds BackLink stories |
| src/app/(main)/sponsor/terms/page.tsx | Adds public sponsor terms page fetching terms content |
| src/app/(main)/sponsor/onboarding/[token]/page.tsx | Adds sponsor onboarding token page |
| src/app/(admin)/admin/sponsors/contracts/page.tsx | Adds admin route for contract templates list |
| src/app/(admin)/admin/sponsors/contracts/new/page.tsx | Adds admin route for creating contract templates |
| src/app/(admin)/admin/sponsors/contracts/[id]/page.tsx | Adds admin route for editing contract templates |
| src/app/(admin)/admin/marketing/page.tsx | Switches marketing download wrapper to DownloadableImage |
| src/mocks/sponsor-data.ts | Adds Storybook mock factories for sponsor CRM components |
| scripts/validate-stories.ts | Adds script to import/validate all story files |
| scripts/test-storybook.sh | Adds script to run Storybook server + test runner |
| sanity/schemaTypes/sponsorForConference.ts | Adds signature/onboarding/contract template fields |
| sanity/schemaTypes/sponsor.ts | Adds sponsor address field |
| sanity/schemaTypes/contractTemplate.ts | Adds new contract template document schema |
| sanity/schemaTypes/conference.ts | Adds organizer org number/address fields |
| sanity/schema.ts | Registers contractTemplate schema type |
| public/og/README.md | Removes legacy static OG image README |
| package.json | Adds Storybook scripts and dependencies |
| migrations/033-add-signature-onboarding-fields/index.ts | Backfills defaults for new sponsorForConference fields |
| knip.json | Updates knip entries/ignores for Storybook files/output |
| eslint.config.js | Adds Storybook ESLint plugin and ignores |
| docs/STORYBOOK_STRUCTURE.md | Adds Storybook structure/best practices doc |
| tests/lib/sponsor-crm/onboarding.test.ts | Adds unit tests for onboarding URL builder |
| AGENTS.md | Updates contributor guidance to reference Storybook + scripts |
| .storybook/preview.tsx | Adds Storybook preview config (sorting, themes, MSW loader) |
| .storybook/preview-head.html | Adds Storybook font loading + CSS variables |
| .storybook/main.ts | Adds Storybook main config using Next.js Vite framework |
| .storybook/decorators/TRPCDecorator.tsx | Adds tRPC + React Query decorator for stories |
| .storybook/.env | Adds Storybook env file with placeholder values |
| .github/workflows/pr-checks.yml | Adds Storybook tests job |
| .github/workflows/deploy-storybook.yml | Adds GitHub Pages Storybook deployment workflow |
| .github/workflows/chromatic.yml | Adds Chromatic visual regression workflow |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/components/admin/sponsor-crm/SponsorBulkActions.stories.tsx
Outdated
Show resolved
Hide resolved
src/components/admin/sponsor-crm/OnboardingLinkButton.stories.tsx
Outdated
Show resolved
Hide resolved
Adds comprehensive stories showing: - Default form state (new sponsor) - Pre-populated form with existing data - Loading state during token validation - Invalid/expired token error state - Already completed onboarding state - Community partner (no tier) variant Uses MSW to mock tRPC endpoints for isolated testing.
… mock data and stories
…TemplateEditor, SponsorTemplatePicker, and SponsorBanner components
…h mock data for speakers, talks, workshops, and sponsors.
… and speakers - Created stories for ProposalReviewForm, ProposalReviewList, ProposalReviewSummary, and ProposalsList to showcase various states and interactions. - Added SpeakerActions and SpeakerMultiSelect stories to demonstrate speaker management functionalities. - Implemented ProposalCoSpeaker and ProposalGuidanceSidebar stories to illustrate co-speaker management and guidance information for proposals. - Included mock data and handlers for MSW to simulate API interactions in the stories.
…rm components in Storybook
- Removed AdminOverview.stories.tsx to streamline documentation. - Updated SponsorComponentIndex.stories.tsx to reflect new component paths and titles. - Introduced AdminPages.stories.tsx to showcase complete admin page patterns, including list and detail views, loading states, error handling, and best practices.
- Updated ButtonSystem to Buttons in Buttons.stories.tsx - Updated PatternSystem to CloudNativePatterns in Patterns.stories.tsx - Updated TypographySystem to Typography in TypographySystem.stories.tsx - Updated EmailSystem to EmailTemplates in EmailTemplates.stories.tsx - Updated HeroVariants to HeroSections in HeroSections.stories.tsx - Updated SpeakerSystem to Overview in SpeakerComponents.stories.tsx Additionally, added a script to analyze story files for export naming conventions and potential mismatches.
…ation; update tech stack and system descriptions
…ayout consistency
User description
Implement contract templates management, dynamic contract generation, and an onboarding process for sponsors. Enhance the sponsor data model and introduce new schemas to support these features. Update the router and components to facilitate contract template operations and onboarding submissions.
PR Type
Enhancement, Tests, Documentation
Description
Implement comprehensive contract templates management system with CRUD operations, dynamic PDF generation, and template selection logic based on tier, language, and defaults
Add sponsor self-service onboarding workflow with token-based access, form validation, and completion tracking
Extend sponsor data model with signature tracking (
signatureStatus,signatureId,signerEmail), contract document storage, and onboarding fields (onboardingToken,onboardingComplete,onboardingCompletedAt)Create new tRPC routers for contract templates and onboarding with endpoints for validation, submission, token generation, and PDF generation
Add contract readiness validation to check required fields across organizer, sponsor, and pipeline sources
Implement contract variable building and formatting utilities for date, currency, and optional field handling
Add activity logging for signature status changes and onboarding completion events
Create admin UI components for contract template editing and listing, and sponsor onboarding form component
Extend Sanity schemas for
contractTemplatedocument type and organizer details in conference schemaAdd comprehensive test suites for contract variables, contract readiness, and onboarding URL building
Establish Storybook documentation infrastructure with configuration, font setup, and extensive component stories for sponsor system, design system, and admin interfaces
Update ESLint configuration and TRPC client logging for Storybook compatibility
Add migration script to backfill signature and onboarding field defaults
Consolidate and reorganize documentation with updated SPONSOR_SYSTEM.md and new design system documentation
Diagram Walkthrough
File Walkthrough
3 files
contract-variables.test.ts
Contract variables test suite with comprehensive coveragetests/lib/sponsor-crm/contract-variables.test.ts
data
handling
documentation
contract-readiness.test.ts
Contract readiness validation test suitetests/lib/sponsor-crm/contract-readiness.test.ts
pipeline sources
fields
onboarding.test.ts
Onboarding URL builder test suitetests/lib/sponsor-crm/onboarding.test.ts
22 files
sponsor.ts
Contract and signature management router endpointssrc/server/routers/sponsor.ts
updateSignatureStatusmutation to track digital signature statuschanges
contractReadinessquery to check sponsor contract readinessgeneratePdfmutation for dynamic contract PDF generationsignerEmailandcontractTemplatefields
contract-templates.ts
Contract template management and retrieval functionssrc/lib/sponsor-crm/contract-templates.ts
default)
getTermsForConferenceto fetch general terms and conditionssubstitution
contract-variables.ts
Contract variable building and formatting utilitiessrc/lib/sponsor-crm/contract-variables.ts
data
CONTRACT_VARIABLE_DESCRIPTIONSfor UI documentationonboarding.ts
Sponsor self-service onboarding implementationsrc/lib/sponsor-crm/onboarding.ts
access
info
buildOnboardingUrlhelper for generating onboarding portallinks
contract-readiness.ts
Contract readiness validation logicsrc/lib/sponsor-crm/contract-readiness.ts
sources
email
sponsorForConference.ts
Signature, contract, and onboarding fields to sponsor schemasanity/schemaTypes/sponsorForConference.ts
signatureStatus,signatureId,signerEmail)onboardingToken,onboardingComplete,onboardingCompletedAt)types.ts
Type definitions for signatures, contracts, and onboardingsrc/lib/sponsor-crm/types.ts
SignatureStatustype with states: not-started, pending, signed,rejected, expired
ActivityTypewith signature_status_change,onboarding_complete, contract_reminder_sent
SponsorForConferenceinterfaceutils.ts
Activity and action item icon/color utilitiessrc/components/admin/sponsor-crm/utils.ts
onboarding_complete, contract_reminder_sent)
pending onboarding
onboarding.ts
Onboarding router with token and submission endpointssrc/server/routers/onboarding.ts
validateendpoint to check onboarding token validitycompleteendpoint to submit onboarding form datagenerateTokenadmin endpoint to create onboarding tokens with URLssanity.ts
Extended Sanity query fields for sponsor relationshipssrc/lib/sponsor-crm/sanity.ts
SPONSOR_FOR_CONFERENCE_FIELDSquery to include new signatureand onboarding fields
action-items.ts
Action item generation for signature and onboarding eventssrc/lib/sponsor-crm/action-items.ts
2.5)
3.5)
activity.ts
Activity logging for signature and onboarding eventssrc/lib/sponsor-crm/activity.ts
logSignatureStatusChangefunction to track signature statustransitions
logOnboardingCompletefunction to log onboarding completionvalues
conference.ts
Organizer details fields to conference schemasanity/schemaTypes/conference.ts
organizerOrgNumberfield for organizer organization numberorganizerAddressfield for organizer registered addresssponsor.ts
Sponsor address field for contract generationsanity/schemaTypes/sponsor.ts
addressfield for registered company address_app.ts
Register onboarding router in main appsrc/server/_app.ts
onboardingRouterclient.ts
Reduce TRPC client logging verbositysrc/lib/trpc/client.ts
types.ts
Organizer details to conference type definitionsrc/lib/conference/types.ts
organizerOrgNumberoptional field to Conference interfaceorganizerAddressoptional field to Conference interfacetailwind.css
Atkinson Hyperlegible font utility classsrc/styles/tailwind.css
.font-atkinsonutility class for Atkinson Hyperlegible font--font-family-atkinsonContractTemplateEditorPage.tsx
Contract template editor admin page componentsrc/components/admin/sponsor/ContractTemplateEditorPage.tsx
association, header/footer text)
with descriptions
SponsorOnboardingForm.tsx
Sponsor self-service onboarding form componentsrc/components/sponsor/SponsorOnboardingForm.tsx
access
and billing details
submission
contract-pdf.tsx
Contract PDF Generation Implementationsrc/lib/sponsor-crm/contract-pdf.tsx
generateContractPdffunction that builds contract documentsfrom templates and variable context
tables, event details, and package details
terms and conditions
ContractTemplateListPage.tsx
Contract Template List Management Pagesrc/components/admin/sponsor/ContractTemplateListPage.tsx
tier, and status
success/error notifications
4 files
sponsor-data.ts
Mock sponsor data factories for Storybooksrc/mocks/sponsor-data.ts
mockSponsor,mockContactPerson,mockBillingInfofactoriesmockReadinessReadyandmockReadinessMissingfor contractreadiness
mockSponsorsobject with various pipeline stage examplesvalidate-stories.ts
Storybook story validation scriptscripts/validate-stories.ts
index.ts
Documentation components barrel exportsrc/docs/components/index.ts
test-storybook.sh
Storybook testing scriptscripts/test-storybook.sh
9 files
contractTemplate.ts
Sanity schema for contract template documentssanity/schemaTypes/contractTemplate.ts
configuration
contractTemplate.ts
Zod validation schemas for contract templatessrc/server/schemas/contractTemplate.ts
sponsorForConference.ts
Zod schemas for signature and contract fieldssrc/server/schemas/sponsorForConference.ts
SignatureStatusSchemaenum with five status valuesfields
UpdateSignatureStatusSchemafor signature status mutationsonboarding.ts
Zod validation schemas for onboarding workflowsrc/server/schemas/onboarding.ts
OnboardingTokenSchemafor token validationOnboardingSubmissionSchemafor form submission with contact personsand billing
GenerateOnboardingTokenSchemafor admin token generationmain.ts
Storybook configuration for component documentation.storybook/main.ts
index.ts
Migration for signature and onboarding field defaultsmigrations/033-add-signature-onboarding-fields/index.ts
signatureStatusto 'not-started',reminderCountto 0,
onboardingCompleteto falseschema.ts
Register contract template schema typesanity/schema.ts
contractTemplateschema typecontractTemplateto schema types arraypreview-head.html
Storybook font configuration and CSS variables.storybook/preview-head.html
Grotesk, IBM Plex, Bricolage, Atkinson)
eslint.config.js
ESLint configuration for Storybookeslint.config.js
12 files
SponsorSystem.stories.tsx
Sponsor system architecture documentation in Storybooksrc/docs/SponsorSystem.stories.tsx
SpeakerComponents.stories.tsx
Speaker component system Storybook documentationsrc/docs/design-system/examples/SpeakerComponents.stories.tsx
examples
SpeakerAvatars,SpeakerAvatarsWithNames, andClickableSpeakerNamescomponentscomponent variants
SPONSOR_SYSTEM.md
Contract templates and sponsor onboarding system documentationdocs/SPONSOR_SYSTEM.md
addressfield tosponsordocument schema for contract generationcontractTemplatedocument type with sections,variables, and terms support
sponsorForConferencewith signature tracking fields(
signatureStatus,signatureId,signerEmail,contractSentAt,contractDocument,reminderCount,contractTemplate)onboardingToken,onboardingComplete,onboardingCompletedAt)signature_status_change,onboarding_complete,contract_reminder_sentendpoints to tRPC router
sponsor self-service onboarding flow
SponsorTierEditor.stories.tsx
Sponsor tier editor Storybook documentationsrc/components/admin/sponsor/SponsorTierEditor.stories.tsx
component
management
popular)
community, media)
Patterns.stories.tsx
Cloud Native pattern system Storybook documentationsrc/docs/design-system/brand/Patterns.stories.tsx
project icons
effects
presets
AdminOverview.stories.tsx
Admin System Overview Documentation Storysrc/docs/AdminOverview.stories.tsx
ConfirmationModal, NotificationProvider, AdminPageHeader,
FilterDropdown, LoadingSkeleton)
dark mode support, and responsive design
SponsorThankYou.stories.tsx
Sponsor Thank You Card Component Storiessrc/components/SponsorThankYou.stories.tsx
variants
gradients and messaging
cloud-wizards, tech-ninjas, deploy-legends, kubernetes-masters, and
devops-rockstars themes
SponsorCRMPipeline.stories.tsx
Sponsor CRM Pipeline Kanban Board Storiessrc/components/admin/sponsor-crm/SponsorCRMPipeline.stories.tsx
component
columns (Prospect, Contacted, Negotiating, Confirmed, Declined)
Tier, Invoice), and features
SponsorComponentIndex.stories.tsx
Sponsor Components Index and Navigationsrc/docs/SponsorComponentIndex.stories.tsx
components
Pipeline, Forms, Contact Management, Email & Communication, Tier
Management, Onboarding & Contract, and Utilities
availability indicators
SponsorCRMForm.stories.tsx
Sponsor CRM Form Modal Storiessrc/components/admin/sponsor-crm/SponsorCRMForm.stories.tsx
selection, contract value, tags, and notes fields
SponsorTierManagement.stories.tsx
Sponsor Tier Management Component Storiessrc/components/admin/sponsor/SponsorTierManagement.stories.tsx
sponsors grouped by tier
Silver, Bronze)
MobileFilterSheet.stories.tsx
Mobile Filter Sheet Component Storiessrc/components/admin/sponsor-crm/MobileFilterSheet.stories.tsx
sections
filter count badge
mobile-specific features
1 files
PhotoGalleryWithDownload.tsx
Update photo gallery download component importsrc/components/admin/PhotoGalleryWithDownload.tsx
DownloadableImagecomponent instead ofDownloadSpeakerImage95 files