Usman Baig
663abc9b9e
feat: DashboardShell for all auth pages, site settings modal from home
...
- layout-content wraps integrations/pricing in DashboardShell
- GlassTopBar derives title per page (Integrations, Pricing, etc.)
- Site card gear icon opens settings modal with siteId context
- Removed delete button from site cards (accessible via site settings)
- Extended InitialTab to accept optional siteId for cross-page use
2026-03-28 19:42:42 +01:00
Usman Baig
c36c1b0696
feat: wrap all authenticated pages in DashboardShell, fix site card actions
...
- Move DashboardShell wrapping to layout-content.tsx for all dashboard
pages (home, integrations, pricing) instead of per-page
- GlassTopBar derives page title from pathname (Integrations, Pricing)
- Site card: gear icon now opens site settings, separate trash icon for delete
2026-03-28 19:35:23 +01:00
Usman Baig
45c518b3ba
feat: add home sidebar nav (sites list, workspace, resources)
...
Three nav groups in home mode:
- Your Sites: each site with favicon, Add New Site
- Workspace: Integrations, Pricing, Workspace Settings
- Resources: Documentation (external link)
Same styling as site dashboard sidebar nav items.
2026-03-28 19:24:41 +01:00
Usman Baig
9413fb2a07
fix: match home page max-width to dashboard (max-w-7xl)
2026-03-28 19:15:33 +01:00
Usman Baig
a6054469ee
feat: wrap home page in DashboardShell, remove stat cards
...
Home page now uses the same sidebar layout as dashboard pages.
Sidebar shows simplified home mode (logo, app switcher, profile)
without site-specific nav groups. Stat cards removed — plan info
lives in settings, site count is self-evident from the list.
2026-03-28 19:12:45 +01:00
Usman Baig
07546576c1
fix(pricing): default slider to first tier (10k) instead of third (100k)
2026-03-28 18:57:57 +01:00
Usman
4c5102ced1
Merge pull request #72 from ciphera-net/staging
...
Invoice list with VAT breakdown and PDF download
2026-03-28 16:40:01 +01:00
Usman Baig
05d183fe2c
fix(billing): use full API_URL for PDF download endpoint
2026-03-28 15:53:50 +01:00
Usman Baig
9c5a47ff3a
feat(billing): update invoice list with real data, PDF download, and VAT breakdown
2026-03-28 14:45:02 +01:00
Usman
84edcf9889
Merge pull request #71 from ciphera-net/staging
...
Add Mollie checkout flow, billing UI, and payment UX polish
2026-03-28 11:28:03 +01:00
Usman Baig
07401a4ce2
fix: use accessible button color tokens for WCAG AA contrast
...
Swap bg-brand-orange to bg-brand-orange-button on all interactive
buttons with white text. Decorative uses unchanged. Bumps
@ciphera-net/ui to 0.3.6.
2026-03-28 00:48:05 +01:00
Usman Baig
8c0700f406
fix: filter by all merged referrers when clicking a group (e.g. Pulse covers both prod and staging)
2026-03-28 00:24:04 +01:00
Usman Baig
94f9db9e51
feat: add Pulse to referrer registry — shows 'Pulse' with logo for pulse.ciphera.net and pulse-staging.ciphera.net
2026-03-28 00:05:51 +01:00
Usman Baig
0af290dc0b
feat: add 22 URL map entries for remaining Lighthouse audits
2026-03-27 23:16:57 +01:00
Usman Baig
00423ee599
fix: auto-scroll to submit button when card payment is selected
2026-03-27 22:17:04 +01:00
Usman Baig
23132a5194
fix: hide redirect text when no payment method is selected
2026-03-27 22:12:29 +01:00
Usman Baig
6aea24f018
fix: checkout UX — no auto-select payment method, stable price table during loading, add spacing before submit button
2026-03-27 22:04:09 +01:00
Usman Baig
a9cf1484fd
fix: always show table-style price breakdown on checkout, even without country selected
2026-03-27 21:50:16 +01:00
Usman Baig
c2b448672c
fix: also preserve referrer for pulse and pulse-staging domains
2026-03-27 18:24:15 +01:00
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