mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2026-09-03 05:10:16 +03:00
## What The procurement flow's **Schedule a call** action (deal-status hero → side modal) was a mock: a fake "SE" avatar and four hardcoded time-slot buttons that just closed the dialog. This wires it up to the real Calendly booking widget the admin provided. ## How - **New `CalendlyInline` component** (`portal/components/procurement/CalendlyInline.tsx`) - Lazily loads `assets.calendly.com/assets/external/widget.js` via the existing `@app/utils/scriptLoader` — only when the modal actually opens, deduped across reopens. - Calls `Calendly.initInlineWidget()` explicitly so it rebuilds on reopen / theme change. - Colours track the portal's light/dark theme (`useTheme`) via Calendly's `background_color` / `text_color` / `primary_color` params, mapped to the portal design tokens (surface / text-1 / primary), plus `hide_event_type_details=1`. - Graceful fallback to an "open in a new tab" link if the script fails to load. - Base URL overridable via `VITE_CALENDLY_URL` (defaults to the group-discussion link). - **`ScheduleCallModal`** now renders `<CalendlyInline />` instead of the mock; copy moved into i18n (`portal.procurement.schedule.*`). - `SideModal` gains a `wide` variant so the embed has room; removed the now-dead `.portal-se*` / `.portal-slots*` CSS and `SLOTS` constant. ## Notes / follow-ups - No app-level CSP blocks `calendly.com`, so the embed loads without config changes. - Verified with the portal typecheck (`tsc -p src/portal/tsconfig.json`) and ESLint on the changed files; only pre-existing Storybook/msw dev-dep type errors remain. <img width="1160" height="642" alt="image" src="https://github.com/user-attachments/assets/d9b5d92d-ea7e-4862-9f35-a71f65392a2c" /> <img width="3744" height="1990" alt="image" src="https://github.com/user-attachments/assets/0b8002c6-dd3e-41e6-8e8b-6faf6090314c" /> <img width="2620" height="1928" alt="image" src="https://github.com/user-attachments/assets/781b7a60-7065-4a7a-b9f7-1cdb0dece7b3" />
32 lines
1.3 KiB
Bash
32 lines
1.3 KiB
Bash
###############################################################################
|
|
# Frontend environment variables for core and proprietary builds.
|
|
# Values can be overridden in the uncommitted sibling `.env.local` file.
|
|
# Note: This file is committed to Git, so should not contain any private keys.
|
|
###############################################################################
|
|
|
|
# API base URL — use / for same-origin (default for web builds)
|
|
VITE_API_BASE_URL=/
|
|
|
|
# Include the admin portal's lazy route/chunk in the build (set true by
|
|
# -PbuildWithPortal in the JAR). Off by default; always on in dev.
|
|
VITE_INCLUDE_PORTAL=false
|
|
|
|
# Google Drive integration
|
|
VITE_GOOGLE_DRIVE_CLIENT_ID=
|
|
VITE_GOOGLE_DRIVE_API_KEY=
|
|
VITE_GOOGLE_DRIVE_APP_ID=
|
|
|
|
# Supabase configuration
|
|
VITE_SUPABASE_URL=https://rficokptxxxxtyzcvgmx.supabase.co
|
|
VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY=sb_publishable_UHz2SVRF5mvdrPHWkRteyA_yNlZTkYb
|
|
|
|
# Stripe checkout
|
|
VITE_STRIPE_PUBLISHABLE_KEY=pk_live_51Q56W2P9mY5IAnSnp3kcxG50uyFMLuhM4fFs774DAP3t88KmlwUrUo31CecpnAZ9FHsNp8xJyOnYNYNVVP6z4oi500q5sFYPEp
|
|
|
|
# PostHog analytics
|
|
VITE_PUBLIC_POSTHOG_KEY=phc_VOdeYnlevc2T63m3myFGjeBlRcIusRgmhfx6XL5a1iz
|
|
VITE_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com
|
|
|
|
# Calendly scheduling link (portal "Schedule a call")
|
|
VITE_CALENDLY_URL=https://calendly.com/d/cm4p-zz5-yy8/stirling-pdf-15-minute-group-discussion
|