48 Commits

Author SHA1 Message Date
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
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
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
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
Usman Baig
b7e92abb40 feat: persist script feature toggles to backend
Features (scroll, 404, outbound, downloads, frustration, storage, ttl)
are saved to site.script_features JSONB column on every toggle change.
Values are read from the site object on load.
2026-03-22 15:31:45 +01:00
Usman Baig
311f546261 fix: improve code quality in soft-delete frontend (loading state, imports, confirm dialog) 2026-03-18 11:15:14 +01:00
Usman Baig
ad1c8c5420 fix: address spec compliance gaps in soft-delete frontend 2026-03-18 11:15:14 +01:00
Usman Baig
7a0f106bc3 feat: add DeleteSiteModal with soft-delete and permanent-delete options 2026-03-18 11:15:14 +01:00
Usman Baig
78fed269db fix: replace developer jargon with user-friendly labels in visitor identity settings
Storage/TTL labels used implementation terms (localStorage, sessionStorage, TTL)
that only make sense to developers. Replaced with plain language and added a
description explaining the privacy trade-off.
2026-03-17 23:07:11 +01:00
Usman Baig
e9ec86b10b fix: polish ScriptSetupBlock — orange accent bar, terminal dots, tighter storage/TTL, framework icons
- Add gradient orange accent bar and macOS-style terminal dots to code block
- Copy button uses brand-orange styling instead of plain gray
- Storage and TTL selects sit side-by-side tightly instead of spread apart
- TTL options shortened (24h, 48h, 7d, 30d)
- Replace framework dropdown with compact icon+label buttons (logos visible)
- Add "All integrations" link in section header
2026-03-16 17:20:27 +01:00
Usman Baig
16020a166c feat: redesign ScriptSetupBlock with feature toggles and dynamic script builder
Replace framework grid + static code block with:
- Dark terminal-style code block that updates in real-time
- Feature toggle switches (scroll depth, 404, outbound, downloads)
- Frustration tracking toggle (visually distinct as add-on)
- Storage mode + TTL dropdowns (TTL hides when per-tab selected)
- Compact framework dropdown replacing 10-button grid
2026-03-16 17:14:13 +01:00
Usman Baig
e444985295 refactor: extract frustration tracking into separate add-on script
Move rage click and dead click detection (35% of script.js) into
script.frustration.js as an optional add-on. Core script drops from
8.1KB to 5.7KB gzipped. Add-on auto-discovers core via window.pulse
polling and supports opt-out via data-no-rage/data-no-dead attributes.

- Expose cleanPath on window.pulse for add-on consumption
- Add script.frustration.js to middleware PUBLIC_ROUTES
- Update integration guides, ScriptSetupBlock, and FrustrationTable
  empty state to reference the add-on script
2026-03-16 16:59:37 +01:00
Usman Baig
e336d2c7e5 feat: show verification status in site settings page 2026-03-13 16:40:37 +01:00
Usman Baig
8f06c9168a feat: show verified/unverified badge on site cards 2026-03-13 16:32:26 +01:00
Usman Baig
2776c803f1 fix: use focus-visible for all button/tab/link focus rings across app
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 00:08:09 +01:00
Usman Baig
39eac4100e feat: update favicon retrieval to use a centralized service URL for consistency across the application 2026-02-22 21:02:11 +01:00
Usman Baig
94fb7c60e0 feat: optimize favicon loading across the application using Next.js image component for better performance and caching 2026-02-22 19:21:28 +01:00
Usman Baig
a2419d681c refactor: simplify site statistics fetching by removing daily stats and updating related components 2026-02-22 00:25:36 +01:00
Usman Baig
2aedc656d7 feat: implement site statistics fetching and display in SiteList component 2026-02-22 00:20:54 +01:00
Usman Baig
23ba5f77a9 refactor: replace button elements with a unified Button component in SiteSettingsPage and VerificationModal for consistency and improved styling 2026-02-21 22:41:43 +01:00
Usman Baig
ae2e48ce4b docs: enhance documentation in ScriptSetupBlock to include optional data-storage-ttl attribute for session expiry configuration 2026-02-11 14:36:46 +01:00
Usman Baig
1454d15142 docs: clarify default and optional data-storage options in ScriptSetupBlock and script.js for improved user understanding 2026-02-11 14:13:05 +01:00
Usman Baig
03bbe84eb0 fix: remove data-storage attributes from script in ScriptSetupBlock for simplified script integration 2026-02-11 13:26:28 +01:00
Usman Baig
f1c27e458a feat: update ScriptSetupBlock and script.js to support new visitor ID storage options 2026-02-11 11:06:27 +01:00
Usman Baig
c827e82376 feat: enhance ScriptSetupBlock and script.js with optional persistent visitor ID storage 2026-02-11 10:57:01 +01:00
Usman Baig
bd2aca7a76 feat: integrate ScriptSetupBlock component for improved site setup instructions and tracking script functionality across pages 2026-02-08 15:18:33 +01:00
Usman Baig
58cfb6210b feat: add setup banner and site addition prompt to homepage; enhance welcome page with tracking and error handling 2026-02-08 14:09:54 +01:00
Usman Baig
9a5a2c5f3c TIER 2 - Design Consistency 2026-02-06 12:35:56 +01:00
Usman Baig
bfe0559a8c TIER 1 - BLOCKING (Accessibility & Usability Failures) 2026-02-06 12:29:12 +01:00
Usman Baig
a1447e98d9 Phase 2: Border Radius & Card Standardization 2026-02-05 17:21:51 +01:00
Usman Baig
9361d0a744 Phase 1: Standardize button styling across Pulse frontend 2026-02-05 16:05:56 +01:00
Usman Baig
bdba3dec58 fix: update user check in HomePage and change documentation link in SiteList to external URL 2026-01-29 21:15:24 +01:00
Usman Baig
1114b0d27a refactor: use custom toast from @ciphera-net/ui 2026-01-27 21:52:11 +01:00
Usman Baig
f43a28f22c feat: enhance HomePage and SiteList components with site management features 2026-01-26 21:53:00 +01:00
Usman Baig
0394fc337c chore: replace CopyIcon and ExternalLinkIcon with SVG implementations in SiteSettingsPage and VerificationModal components 2026-01-24 12:56:27 +01:00
Usman Baig
0e280e4118 chore: replace LightningIcon with ZapIcon across multiple components 2026-01-24 12:53:10 +01:00
Usman Baig
5857a2ea15 chore: upgrade @ciphera-net/ui to v0.0.18 and refactor icon imports across components 2026-01-24 12:50:43 +01:00
Usman Baig
aaf224a278 refactor: migrate UI components to @ciphera-net/ui v0.0.11 2026-01-23 18:35:17 +01:00
Usman Baig
1be2c95046 fix(branding): update logo references from 'ciphera_icon_no_margins.png' to 'pulse_icon_no_margins.png' across the application for consistent branding 2026-01-23 11:38:05 +01:00
Usman Baig
3996c2550e feat(auth): implement role-based access control in SiteDashboard and SiteSettings, enhancing user experience with edit permissions 2026-01-22 20:28:44 +01:00
Usman Baig
035d78175f refactor: update branding from Ciphera Pulse to Pulse across the application for consistency and clarity 2026-01-19 16:58:09 +01:00
Usman Baig
9dbe74fd9f refactor: update references from Ciphera Analytics to Ciphera Pulse across the application for consistent branding and messaging 2026-01-19 16:49:42 +01:00
Usman Baig
d0a13adf36 refactor: replace router navigation with Link component for site creation and improve UI consistency in HomePage and SiteList components 2026-01-19 15:54:54 +01:00
Usman Baig
1c5184988b feat(analytics): add site verification modal 2026-01-18 22:15:34 +01:00
Usman Baig
0fb982a4d9 feat: Enhance HomePage and SiteList with new UI components and improved loading overlay 2026-01-16 17:17:31 +01:00
Usman Baig
8643443300 fix: Add null checks to prevent 'Cannot read properties of null' errors 2026-01-16 14:23:23 +01:00
Usman Baig
8e10a05eb1 Initial commit: Analytics frontend implementation 2026-01-16 13:14:19 +01:00