Usman Baig
6c73fd1dbc
fix: type error on pre component children.props access
2026-03-29 01:09:30 +01:00
Usman Baig
b1ed7518b1
fix: code block filename not showing, consistent code block styling
2026-03-29 01:07:21 +01:00
Usman Baig
627613dc13
fix: code blocks rendering + consistent styling with ciphera-website /learn
...
- Convert MDX CodeBlock components to standard markdown code fences
- Add rehype-mdx-code-props to pass filename meta to code components
- Custom pre/code MDX components map fences to CodeBlock
- Add brand color badges (product + category) matching /learn layout
- Match prose styling: orange inline code, orange links, white strong
- Remove brand color background glow (not in /learn)
2026-03-29 01:01:56 +01:00
Usman Baig
066f1288f1
feat: trim integration pages from 75 to 25 + migrate to MDX
...
- Add dedicatedPage flag to integration registry (25 true, 50 false)
- Delete hardcoded nextjs/react/vue/wordpress route pages (wrong metadata)
- Hub page routes non-dedicated integrations to /integrations/script-tag
- Add 301 redirects for 50 removed slugs → /integrations/script-tag
- Migrate guide content from TSX to MDX (content/integrations/*.mdx)
- Add gray-matter, next-mdx-remote, remark-gfm dependencies
- Add content loader (lib/integration-content.ts) matching ciphera-website pattern
- Add prebuild script for integration guide index generation
- Sitemap reduced from 83 to 35 URLs with real lastmod dates
- Remove seoDescription from registry (now in MDX frontmatter)
2026-03-29 00:28:47 +01:00
Usman Baig
9053004e25
fix(search): show skeleton until overview data loads, not just GSC status
2026-03-28 21:26:28 +01:00
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
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
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
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
773e91d490
feat: remap PageSpeed audit links to ciphera.net/learn articles
2026-03-27 17:44:40 +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
0fcc4866fb
feat: lift country/vatId state to CheckoutContent
2026-03-27 11:34:29 +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
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
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
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
0f41eb4df4
fix: allow mollie.js in CSP, hide app header on checkout page
2026-03-26 21:38:47 +01:00
Usman Baig
6be8952fbe
fix: checkout page polish, metadata, and typescript fixes
2026-03-26 21:31:56 +01:00
Usman Baig
58ac7b9cc5
feat: pricing and welcome CTAs now redirect to /checkout page
2026-03-26 21:30:17 +01:00
Usman Baig
89575c9fcb
feat: add checkout page shell with auth guard and success polling
2026-03-26 21:26:32 +01:00
Usman Baig
94d0b3498f
feat: add country and vat id fields to checkout flow
2026-03-26 20:27:07 +01:00
Usman Baig
952cebc59a
perf: lazy-load Chart component — prevents main thread freeze on page load
2026-03-26 11:48:58 +01:00
Usman Baig
97b9486382
fix: org-settings redirect uses router.back() to stay on current page
2026-03-26 11:11:13 +01:00
Usman Baig
4a950f7070
fix: wrap org-settings redirect in Suspense for useSearchParams
2026-03-26 10:55:55 +01:00
Usman Baig
6b33483c81
fix: remove SettingsModalProvider import and wrapper from layout
2026-03-26 10:53:48 +01:00
Usman Baig
cc3047edba
refactor: replace legacy settings pages with redirect handlers + delete unused files
...
- /sites/:id/settings → redirect handler for GSC OAuth callback + deep links
- /org-settings → redirect handler for tab deep links
- Deleted: OrganizationSettings.tsx, SettingsModalWrapper.tsx, settings-modal-context.tsx
2026-03-26 10:50:36 +01:00
Usman Baig
61a106eed6
refactor: replace all legacy settings links with unified modal openers
2026-03-26 10:47:51 +01:00
Usman Baig
0cb13e08fd
refactor(settings): wire all settings entry points to unified modal
2026-03-25 18:10:42 +01:00
Usman Baig
294629edfe
fix: downsize all page h1 headers — top bar now has primary title
2026-03-25 17:17:12 +01:00
Usman Baig
48b404eb37
fix: remove duplicate h1 from uptime page — title now in top bar
2026-03-25 17:11:48 +01:00
Usman Baig
de10fb5daf
fix: use max-w-7xl (1280px) instead of full-width — better readability
2026-03-24 23:21:57 +01:00
Usman Baig
d6627413b8
feat: full-width content — remove max-w-6xl from all site pages and skeletons
2026-03-24 23:16:36 +01:00
Usman Baig
5a03e1f9a5
fix: skeleton loading states match actual page layouts
...
- PageSpeed: show 4 gauge rings, screenshot, legend, metrics grid, trend chart
- Uptime: match real layout with status card, 90-day bar, 4-col detail grid
- Remove duplicate local skeletons in behavior components, use shared library
- Strip light-mode classes from dark-only app
2026-03-24 21:17:21 +01:00
Usman Baig
3c17895d64
feat(settings): unified settings modal with context switcher (Phase 1)
...
New unified settings modal accessible via `,` keyboard shortcut.
Three-context switcher: Site (with site dropdown), Workspace, Account.
Horizontal tabs per context with animated transitions.
Phase 1 tabs implemented:
- Site → General (name, timezone, domain, tracking script with copy)
- Site → Goals (CRUD with inline create/edit)
- Workspace → General (org name, slug, danger zone)
- Workspace → Billing (plan card, usage, cancel/resume, portal)
- Account → Profile (wraps existing ProfileSettings)
Phase 2 tabs show "Coming soon" placeholder:
- Site: Visibility, Privacy, Bot & Spam, Reports, Integrations
- Workspace: Members, Notifications, Audit Log
- Account: Security, Devices
Old settings pages and profile modal remain functional.
2026-03-23 20:57:20 +01:00
Usman Baig
a3c1af7c95
fix: frontend consistency audit — 55 files cleaned up
...
Consistency fixes:
- Extract getThisWeekRange/getThisMonthRange to shared lib/utils/dateRanges.ts
(removed 4 identical copy-pasted definitions)
- Add error boundaries for behavior, cdn, search, pagespeed pages
(4 new error.tsx files — previously fell through to generic parent error)
- Add "View setup guide" CTA to empty states on journeys and behavior pages
(previously showed text with no actionable button)
- Fix non-lazy useState initializer in funnel detail page
- Fix Bot & Spam settings header from text-xl to text-2xl (matches all other sections)
- Add useMinimumLoading to PageSpeed skeleton (consistent with all other pages)
Cleanup:
- Remove 438 redundant dark: class prefixes (app is dark-mode only)
text-neutral-500 dark:text-neutral-400 → text-neutral-400 (206 occurrences)
text-neutral-900 dark:text-white → text-white (232 occurrences)
- Remove dead @stripe/react-stripe-js and @stripe/stripe-js packages
(billing migrated to Polar, no code imports Stripe)
- Remove duplicate motion package (framer-motion is the one actually used)
2026-03-23 19:50:16 +01:00
Usman Baig
eca21bf627
feat(billing): update frontend for polar migration
...
Update billing types, remove invoice preview, replace Stripe invoice
display with Polar orders, update tax ID from array to single object,
remove upcoming invoice amount display.
2026-03-23 16:36:54 +01:00
Usman Baig
cd347ea072
feat: add illustrations to 404, error page, and welcome flow
...
- 404 page: replace large "404" text with page-not-found illustration
- ErrorDisplay: replace warning icon with server-down illustration
- Welcome step 1 (no orgs): welcome illustration
- Welcome step 4 (add site): website-setup illustration
- Welcome step 5 (done): confirmed illustration
All SVGs dark-themed with brand orange accent.
2026-03-23 15:40:01 +01:00
Usman Baig
c07c020015
feat(home): add illustration to home page empty state
...
Replace globe icon with setup-analytics illustration on the home page
when no sites are created.
2026-03-23 15:28:52 +01:00
Usman Baig
645e3e78ef
feat(empty-states): add undraw illustrations to empty state screens
...
Add brand-orange recolored SVG illustrations from undraw to five empty
states: sites list, dashboard chart, funnels, journeys, and behavior.
2026-03-23 15:23:26 +01:00
Usman Baig
cbb7445d74
feat(pagespeed): click score gauges to scroll to diagnostics category
2026-03-23 14:55:05 +01:00
Usman Baig
8c3b77e8e5
Revert "fix(pagespeed): make frequency interactive and show next check time"
...
This reverts commit 01c50ab971 .
2026-03-23 14:46:10 +01:00
Usman Baig
01c50ab971
fix(pagespeed): make frequency interactive and show next check time
...
- Replace dead frequency badge with inline dropdown selector
- Add "Next in Xh" indicator from next_check_at
- Demote "Disable" button to subtle text link (was competing with Run Check)
- Add cursor-pointer to prev/next history arrows
- Narrow filmstrip fade to avoid covering content
2026-03-23 14:43:41 +01:00
Usman Baig
55a08301f4
fix(build): extract FAVICON_SERVICE_URL to prevent server-side createContext error
...
The share/[id] layout is a server component that imported FAVICON_SERVICE_URL
from icons.tsx, pulling in the entire React icon registry and triggering
createContext on the server. Moved the constant to its own favicon.ts module.
2026-03-23 13:29:53 +01:00