Commit Graph

1428 Commits

Author SHA1 Message Date
Usman Baig
80ee2fb614 fix: preserve referrer for ciphera.net learn links, keep noreferrer for external 2026-03-27 18:23:40 +01:00
Usman Baig
22295302ee feat: expand learn link URL map to 116 entries — full Lighthouse audit coverage 2026-03-27 18:10:51 +01:00
Usman Baig
9c9066b75f refactor: update learn link URLs to product-based routing (/learn/pulse/...) 2026-03-27 17:51:30 +01:00
Usman Baig
773e91d490 feat: remap PageSpeed audit links to ciphera.net/learn articles 2026-03-27 17:44:40 +01:00
Usman Baig
324ba131d4 chore: bump @ciphera-net/ui to 0.3.4 (session refresh retry fix) 2026-03-27 16:23:58 +01:00
Usman Baig
e206399f9d fix: pause carousel on hidden tab, remove payment tile labels
Carousel: listen to visibilitychange to prevent animation backlog when
tab is backgrounded. Payment tiles: logo-only, no text labels.
2026-03-27 15:53:20 +01:00
Usman Baig
5faa0dec80 fix: pause carousel interval when tab is hidden
Prevents animation backlog from setInterval firing while the browser
throttles rAF in background tabs, which caused a blank carousel on return.
2026-03-27 15:52:17 +01:00
Usman Baig
eca42d56ca fix: use real official payment method logos instead of hand-drawn SVGs
Add official brand SVGs (Visa, Mastercard, Bancontact, iDEAL, Apple Pay,
Google Pay, SEPA) as static assets and render via img tags.
2026-03-27 15:39:30 +01:00
Usman Baig
5c90b15b2e feat: branded payment tiles, add Google Pay, remove Bank Transfer
Replace generic icons with colored brand SVGs (Mastercard, Bancontact,
iDEAL, Apple Pay, Google Pay, SEPA). Compact equal-height tiles.
2026-03-27 15:30:52 +01:00
Usman Baig
9c7afda80d feat: payment method selector with foldable card form
Checkout shows payment method tiles (Card, Bancontact, iDEAL,
Apple Pay, SEPA DD, Bank Transfer). Card selection expands the
embedded form; other methods redirect to Mollie hosted checkout
with the method pre-selected.
2026-03-27 15:12:27 +01:00
Usman Baig
a55f9a91bd fix: hide VAT warning during loading and when VAT is valid
Warning no longer flashes during VIES lookup or shows alongside
company info for Belgian B2B (valid VAT but not exempt).
2026-03-27 12:48:51 +01:00
Usman Baig
3306508bf0 fix: show Verified for valid VAT IDs regardless of exemption
Use company_name presence to determine validity instead of
vat_exempt, so Belgian B2B shows Verified + company info
even though 21% VAT still applies.
2026-03-27 12:43:59 +01:00
Usman Baig
cb7e4c7c98 fix: title-case VIES data, animate company info, no price flash
VIES returns ALL CAPS — now title-cased for display. Company info
slides in with framer-motion. Price breakdown stays visible during
VAT verification instead of flashing to a loading spinner.
2026-03-27 12:42:07 +01:00
Usman Baig
9656225b60 fix: eliminate double VIES call on Verify click
Let the verifiedVatId useEffect handle the fetch instead of
calling fetchVAT directly in handleVerifyVatId. Prevents
VIES MS_MAX_CONCURRENT_REQ rate limiting.
2026-03-27 12:37:08 +01:00
Usman Baig
8db8f65fca fix: show Verified only when VIES confirms valid VAT ID
Split isVatVerified into isVatChecked (user clicked Verify) and
isVatValid (VIES confirmed exempt). Button now shows Verify and
stays enabled after a failed check so the user can retry.
2026-03-27 12:28:10 +01:00
Usman Baig
a495ef8389 fix: only show slider focus ring on keyboard navigation
Replace focus: with focus-visible: on range input so the
orange ring only appears during keyboard nav, not on click.
2026-03-27 12:26:54 +01:00
Usman Baig
c7cf50ef1d fix: prevent price flash on VAT ID keystroke
Only re-fetch VAT when clearing a previously verified VAT ID,
not on every keystroke when nothing was verified yet.
2026-03-27 12:22:33 +01:00
Usman Baig
342d86c26d feat: add VAT ID verify button and company info display
PlanSummary now has a Verify button for VAT ID instead of
auto-verifying on input. Shows company name and address from
VIES on successful verification, with warning on invalid IDs.
2026-03-27 12:16:46 +01:00
Usman Baig
20628fa6ab fix: preserve org_id in auth refresh, fix org switcher navigation 2026-03-27 12:03:56 +01:00
Usman Baig
0ca65a50fb fix: org switcher in sidebar uses SPA navigation instead of hard reload 2026-03-27 11:55:34 +01:00
Usman Baig
ad207dc23f fix: move useState before conditional returns, fix yearly total display 2026-03-27 11:48:00 +01:00
Usman Baig
fc5372ff26 feat: add excl. VAT label to pricing page 2026-03-27 11:44:38 +01:00
Usman Baig
eb52b7fae6 feat: remove country/VAT inputs from PaymentForm, accept as props 2026-03-27 11:43:19 +01:00
Usman Baig
d9e3f90c27 feat: add VAT breakdown to PlanSummary 2026-03-27 11:41:44 +01:00
Usman Baig
0fcc4866fb feat: lift country/vatId state to CheckoutContent 2026-03-27 11:34:29 +01:00
Usman Baig
5ca24f6c9c feat: add calculateVAT API function 2026-03-27 11:33:48 +01:00
Usman Baig
f4ba6c8a2a Revert "docs: add VAT implementation design"
This reverts commit 4e9439770f.
2026-03-27 11:07:45 +01:00
Usman Baig
4e9439770f docs: add VAT implementation design 2026-03-27 11:07:20 +01:00
Usman Baig
ef83176089 fix: replace browser confirm with in-app modal for cancel subscription 2026-03-27 00:25:23 +01:00
Usman Baig
5cff767e32 fix: org switch now updates auth context immediately — no stale org in header 2026-03-26 23:59:30 +01:00
Usman Baig
342ee1fdf3 fix: add top padding to right column on checkout page 2026-03-26 23:54:00 +01:00
Usman Baig
af1d718a18 fix: move logo to left panel, increase slide interval to 8s, keep mobile logo 2026-03-26 23:50:28 +01:00
Usman Baig
0bfde33050 fix: remove funnel and email report slides from checkout slideshow 2026-03-26 23:39:38 +01:00
Usman Baig
088db2a104 fix: escape apostrophe in slideshow headline 2026-03-26 23:35:09 +01:00
Usman Baig
977425fdb9 feat: break visitor carousel into 5 separate slides with unique titles 2026-03-26 23:33:36 +01:00
Usman Baig
7a44787438 fix: center titles, constrain mockups with overflow hidden instead of scale 2026-03-26 23:31:50 +01:00
Usman Baig
b5150e3b7a fix: remove mockup border, scale down mockups to fit viewport 2026-03-26 23:28:03 +01:00
Usman Baig
4896089463 fix: remove dot indicators from checkout slideshow 2026-03-26 23:27:04 +01:00
Usman Baig
fba1f84ce5 fix: replace window.location.reload with router.refresh on org switch to prevent hydration errors 2026-03-26 23:25:49 +01:00
Usman Baig
7c55e5f763 fix: simplify slideshow to titles only, catch mollie unmount errors 2026-03-26 23:18:58 +01:00
Usman Baig
e5ac1893dc fix: lock left panel, only right side scrolls 2026-03-26 23:17:18 +01:00
Usman Baig
75bf071d98 feat: split checkout layout with auto-cycling feature slideshow 2026-03-26 23:10:14 +01:00
Usman Baig
4c6020535a fix: hide mollie spinners with overflow clip, show static placeholder fields while loading 2026-03-26 22:51:54 +01:00
Usman Baig
3a29fb5a09 fix: use visibility hidden instead of opacity to fully hide mollie loading spinners 2026-03-26 22:47:01 +01:00
Usman Baig
9297e20604 fix: increase card field height and font size for larger card brand logos 2026-03-26 22:45:35 +01:00
Usman Baig
497f0f791a fix: hide mollie spinners, add placeholders, errors only on submit, sliding interval toggle 2026-03-26 22:41:51 +01:00
Usman Baig
48f71ee65b fix: checkout UI polish — brand colors, Pulse Select, logo, touched-only errors, no skeletons 2026-03-26 22:33:30 +01:00
Usman Baig
742c24fa6b fix: prevent auth flash on checkout, skip subscription guard on success return 2026-03-26 22:21:59 +01:00
Usman Baig
f72a140ca6 fix: add required cardHolder component for mollie components 2026-03-26 22:16:20 +01:00
Usman Baig
3e7a32dc91 fix: use correct mollie component types (expiryDate, verificationCode) 2026-03-26 22:11:30 +01:00