Files
twenty/packages/twenty-website/.env.example
T
Rashad Karanouh bda6fcfec9 feat(website): book an intro call after partner application (#21343)
## What

After a partner submits the application wizard, the success screen now
offers an inline Cal.com booking widget so they can book an intro call
on the spot — keeping the partner process high-touch.

- Inline Cal.com embed on the application success step, prefilled with
the applicant's name/email (company in the notes)
- Wide `month_view` layout; the success modal widens to ~960px (the
4-step form and mobile are unchanged)
- Event-type-details panel hidden via `cal('ui', { hideEventTypeDetails:
true })` so it's just calendar + times, on its own `partner-intro` Cal
namespace (isolated from the ContactCal embed)
- "I'll book later" escape hatch; backend / submission path untouched

## Why

The warmest moment is right after someone opts in. Today the success
screen only shows a Close button — this turns that moment into a
scheduled conversation.

## How

- `PartnerIntroCalEmbed` — thin wrapper over `@calcom/embed-react`
(already a dependency), reusing the existing `ContactCal` embed pattern
- `buildPartnerIntroPrefill` — pure mapping of applicant fields → Cal
prefill
- `PartnerApplicationSuccess` — presentational success view (heading +
subtitle + embed + dismiss)
- The wizard reports submitted-state up (`onSubmittedChange`) so the
modal widens only on the booking step
- New Lingui copy + regenerated catalogs (en/es/fr)

## Test plan

- `npx jest PartnerApplication` — green (prefill mapping, embed
link/layout/prefill, success view)
- `npx nx typecheck twenty-website` — clean
- `npx oxlint -c .oxlintrc.json` / `npx oxfmt --check` — clean
- Manual: submit the wizard → success step shows the wide booking
calendar, prefilled, dark theme, no event-details panel; "I'll book
later" closes the modal

## Notes

- Frontend only — no backend, schema, or submission-path change
- Cal link `rashad-twenty/partner-intro` lives as a constant in
`config.ts`
- Branch is currently behind `main`; happy to rebase before review
2026-06-09 16:00:48 +02:00

47 lines
2.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
PARTNER_APPLICATION_WEBHOOK_URL=
# Optional GitHub personal-access token (no scopes required) used by the
# community-stats fetcher (`src/lib/community/fetch-github-star-count.ts`).
# When set, requests use the 5000/hr authenticated limit instead of the
# 60/hr unauthenticated per-IP limit. Both responses are also cached for
# one hour via `unstable_cache`, so dev without a token still works.
# GITHUB_TOKEN=
# Public site URL — canonical origin used by `metadataBase`, sitemap, robots,
# OG/Twitter card URLs, Stripe checkout success URL, and billing portal return.
# No trailing slash. Defaults to https://twenty.com when unset.
NEXT_PUBLIC_WEBSITE_URL=
# --- Visual runtime kill switches ---------------------------------------
# Hard kill switch for every WebGL/Three/R3F decorative visual on the site.
# Set to "1" / "true" to ship a build with all heavy visuals statically
# replaced by their fallbacks (e.g. during a GPU-driver-related incident).
# NEXT_PUBLIC_DISABLE_HEAVY_VISUALS=
# Soft cap on the number of concurrent WebGL contexts the page is allowed
# to spin up. The browser's own hard cap is typically 816; we default to 8
# so a single page that mounts every illustration cannot exhaust the GPU
# context pool on integrated graphics.
# NEXT_PUBLIC_MAX_WEBGL_CONTEXTS=8
# Stripe — self-hosted enterprise checkout & subscription APIs
STRIPE_SECRET_KEY=
STRIPE_ENTERPRISE_MONTHLY_PRICE_ID=
STRIPE_ENTERPRISE_YEARLY_PRICE_ID=
# RS256 key pair used to sign enterprise license JWTs (use literal \n in PEM for env)
ENTERPRISE_JWT_PRIVATE_KEY=
ENTERPRISE_JWT_PUBLIC_KEY=
# Optional: short-lived validity token length in days (default 30)
# ENTERPRISE_VALIDITY_TOKEN_DURATION_DAYS=
# Twenty workspace the partners marketplace reads partner data from
# (server-side only) via the /s/partners REST endpoint.
TWENTY_PARTNERS_API_URL=
TWENTY_PARTNERS_API_KEY=
# Cal.com path (no host) the partner application success screen books the intro
# call onto, e.g. acme/partner-intro. Falls back to a built-in default when unset.
NEXT_PUBLIC_PARTNER_INTRO_CAL_LINK=