Commit Graph

151 Commits

Author SHA1 Message Date
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
324ba131d4 chore: bump @ciphera-net/ui to 0.3.4 (session refresh retry fix) 2026-03-27 16:23:58 +01:00
Usman Baig
c99278e7fa chore: bump @ciphera-net/ui to 0.3.3 2026-03-26 11:21:01 +01:00
Usman Baig
538df57d2b fix: glassmorphism dropdowns + bump @ciphera-net/ui to 0.3.2
- NotificationCenter panel matches website header glass effect
- Bump @ciphera-net/ui for UserMenu & AppLauncher glassmorphism
2026-03-24 21:41:45 +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
5008992f59 feat: replace Phosphor brand icons with real SVG logos
Uses @icons-pack/react-simple-icons for available brands (Google,
Facebook, Instagram, GitHub, YouTube, Reddit, etc.) and inline SVGs
for brands missing from the package (X, LinkedIn, OpenAI, Bing).
All icons now show actual brand logos with correct colors.
2026-03-21 23:38:55 +01:00
Usman Baig
830da49c5f feat: add bar chart toggle to dashboard
Added visx bar chart component with rounded corners and grow animation.
Dashboard now has area/bar toggle buttons next to the export icon.
2026-03-21 22:55:19 +01:00
Usman Baig
9c06a845a0 fix: add missing @testing-library/dom dev dependency 2026-03-21 22:46:37 +01:00
Usman Baig
1c7667562c feat: replace Recharts dashboard chart with visx area chart
Integrated 21st.dev AreaChart component with animated crosshair,
spring-based tooltip, and date ticker. Uses brand orange for the
line/fill with dark-only CSS variables.
2026-03-21 22:39:51 +01:00
Usman Baig
911704cff2 feat: port website header with mega-menu, add showcase bg to hero, fix carousel container size 2026-03-21 20:12:01 +01:00
Usman Baig
1e4bb34513 chore: bump @ciphera-net/ui to 0.3.1 2026-03-21 19:54:29 +01:00
Usman Baig
6d253e6d18 chore: bump @ciphera-net/ui to 0.3.0 (dark-only) 2026-03-21 18:54:15 +01:00
Usman Baig
89343caf65 fix: clamp notification dropdown to viewport, bump ui to 0.2.15
Apply viewport clamping to NotificationCenter dropdown positioning
and bump @ciphera-net/ui to 0.2.15 which clamps AppLauncher and
UserMenu dropdowns the same way.
2026-03-19 00:43:58 +01:00
Usman Baig
1755dcb9dc fix: portal sidebar dropdowns to escape backdrop-filter clipping
Bump @ciphera-net/ui to 0.2.14 which portals AppLauncher and UserMenu
dropdowns via createPortal when anchor="right". Apply the same fix to
NotificationCenter. This escapes the sidebar's backdrop-filter
containing block that was clipping all fixed-positioned dropdowns.
2026-03-19 00:35:51 +01:00
Usman Baig
2fa498fb8f feat: sidebar utility items match NavLink styling
Use variant='sidebar' for ThemeToggle, NotificationCenter, and
compact UserMenu so they render with the same icon+label layout
as nav items. Fixed dropdown positioning uses fixed to escape
sidebar overflow:hidden.
2026-03-18 22:48:52 +01:00
Usman Baig
66d63f7a3b chore: bump @ciphera-net/ui to ^0.2.12
Adds anchor/compact props for sidebar layout support.
2026-03-18 21:59:41 +01:00
Usman Baig
9773735d2b chore: bump @ciphera-net/ui to 0.2.11 2026-03-18 16:59:44 +01:00
Usman Baig
db5cd4cbcb feat: replace sidebar with 21st.dev hover-to-expand component
Use framer-motion animated sidebar from 21st.dev — collapses to icons,
expands on hover. Phosphor icons instead of lucide. Remove old manual
collapse/expand and sidebar-context. Top bar has Pulse logo + user
actions, sidebar below with site picker and nav groups.
2026-03-18 16:20:32 +01:00
Usman Baig
80ae8311dc feat: static header + collapsible sidebar navigation
Replace floating pill header with static variant for authenticated
views. Add collapsible sidebar with site picker, grouped navigation
(Analytics/Infrastructure), and mobile overlay drawer. Remove
horizontal SiteNav tab bar.
2026-03-18 15:30:27 +01:00
Usman Baig
3aaf199a19 chore: bump @ciphera-net/ui to ^0.2.8 2026-03-17 19:47:54 +01:00
Usman Baig
17f2bdc9e9 feat: rewrite sankey chart with D3 — thin bars, labels beside nodes, proper hover
Replace @nivo/sankey with custom D3 implementation:
- 30px thin node bars with labels positioned beside them
- Links at 0.3 opacity, 0.6 on hover with full path highlighting
- Colors based on first URL segment for visual grouping
- Dynamic height based on tallest column
- Responsive width via ResizeObserver
- Click nodes to filter, hover for tooltips
- Invisible wider hit areas for easier link hovering
- Remove @nivo/sankey dependency, add d3
2026-03-16 21:56:22 +01:00
Usman Baig
bb1ed9d8b5 chore: add @nivo/sankey dependency 2026-03-16 13:57:06 +01:00
Usman Baig
ed865c9a6f chore: remove unused axios dependency
All HTTP calls use the native fetch-based apiRequest client.
2026-03-16 11:27:31 +01:00
Usman Baig
8287a38b43 chore: add 429 errors 2026-03-16 11:06:41 +01:00
Usman Baig
24c71f7991 fix: mobile responsiveness across all pages
- SiteNav: add horizontal scroll for 8 tabs on mobile
- NotificationCenter: full-width dropdown on mobile
- ContentStats/Locations/TechSpecs: scrollable tab bars
- FrustrationTable: fix selector text overflow
- FrustrationByPageTable: horizontal scroll on mobile
- CDN: better stat card grid breakpoints
- Home: reduce stat card height, prevent button wrap
- Billing: shorter invoice labels on mobile
- Bump @ciphera-net/ui to 0.2.6 (AppLauncher mobile fix)
2026-03-15 18:15:06 +01:00
Usman Baig
e8f00e06ec feat: replace sankey chart with column-based journey visualization 2026-03-15 12:17:48 +01:00
Usman Baig
9fb19c18e8 chore: release 0.15.0-alpha 2026-03-13 00:12:13 +01:00
Usman Baig
54daf14c6a feat: replace MUI X Charts Pro with d3-sankey custom Sankey
Remove paid MUI dependency. Use d3-sankey (MIT, ~5KB) for layout
algorithm + custom SVG rendering. Same visual quality: smooth bezier
ribbon links, proper node spacing via sankeyJustify, label backgrounds,
hover dimming, exit nodes.
2026-03-12 22:17:16 +01:00
Usman Baig
281a9f237a feat: replace custom Sankey SVG with MUI X Charts Pro Sankey 2026-03-12 22:07:20 +01:00
Usman Baig
a22333bbc2 fix: bump @ciphera-net/ui to 0.2.5 2026-03-12 15:25:05 +01:00
Usman Baig
bb9e907a50 chore: bump version to 0.14.0-alpha and finalize changelog
Move all unreleased entries into 0.14.0-alpha. Recategorize
Instagram attribution and OS parsing fixes from Improved to Fixed.
2026-03-12 13:05:40 +01:00
Usman Baig
428a6fd18d chore: bump @ciphera-net/ui to 0.2.4 2026-03-11 23:48:27 +01:00
Usman Baig
8136268988 fix: bump ciphera-ui to 0.2.3 and allow blob: in worker-src CSP
Adds blob: to worker-src so the captcha PoW web worker can run.
2026-03-11 11:53:04 +01:00
Usman Baig
15d41f5bd9 fix: bump @ciphera-net/ui to 0.2.2 (PoW difficulty fix) 2026-03-11 11:39:16 +01:00
Usman Baig
37eb49eb37 feat: action-scoped captcha tokens for share access and org settings
Captcha on shared dashboard and organization settings now passes
action-specific identifiers. Bumps @ciphera-net/ui to 0.2.1.
2026-03-11 11:30:21 +01:00
Usman Baig
3d12f35331 chore: bump @ciphera-net/ui to 0.1.4
PasswordInput now forwards the required attribute to the underlying
input element, enabling HTML5 form validation on password fields.
2026-03-10 23:55:47 +01:00
Usman Baig
f10b903a80 perf: add export loading state and virtual scrolling for large lists
Export modal now shows a loading indicator and doesn't freeze the UI.
Large list modals use virtual scrolling for smooth performance.
2026-03-10 20:45:49 +01:00
Usman Baig
00d8656ad2 Fix modal titles, hover rounding, search focus, and page filter dimension
- Remove redundant prefixes from modal titles
- Remove -mx-2 from modal rows so hover rounds evenly on both sides
- Fix page filter using wrong dimension name (path -> page)
- Bump @ciphera-net/ui to 0.1.3 (fixes search input losing focus)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 01:46:31 +01:00
Usman Baig
9f2032fc32 Replace custom FunnelChart with 21st.dev funnel-chart component
Drops in the exact 21st.dev FunnelChart component with motion/react,
curved bezier segments, layered rings, and spring hover animations.
Removes the previous custom SVG implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:06:31 +01:00
Usman Baig
033d735c3a Replace dashboard BarChart with 21st.dev LineChart component
Swap the main site dashboard chart from a bar chart to a line chart
using 21st.dev's line-charts-6 component with dot grid background,
glow shadow, and animated active dots. Add Badge trend indicators
on metric cards using Phosphor icons. All existing features preserved
(annotations, comparison, export, live indicator, interval controls).

New UI primitives: line-charts-6, badge-2, card, button-1, avatar.
Added shadcn-compatible CSS variables and Tailwind color mappings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:53:35 +01:00
Usman Baig
efd647d856 Add interactive 3D Globe tab to Locations using cobe WebGL
- Magic UI Globe component with auto-rotation and drag interaction
- Dark/light mode reactive (base color, glow, brightness)
- Country markers from visitor data using existing centroids
- Brand orange (#FD5E0F) marker color matching DottedMap

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 15:46:29 +01:00
Usman Baig
f58154f18d Bump @ciphera-net/ui to ^0.1.2 2026-03-09 14:43:35 +01:00
Usman Baig
6ccc26ab48 Replace WorldMap with Magic UI DottedMap for visitor locations
- New DottedMap component using svg-dotted-map with country centroid markers
- Marker size scales by pageview proportion (brand orange)
- Static country-centroids.ts lookup (~200 ISO codes)
- Remove react-simple-maps, i18n-iso-countries, world-atlas CDN dependency
2026-03-09 14:17:35 +01:00
Usman Baig
874ff61a46 Bump @ciphera-net/ui to ^0.1.1 2026-03-09 13:58:30 +01:00
Usman Baig
86c11dc16f chore: bump @ciphera-net/ui to ^0.1.0
ShadCN-quality restyle of shared UI components.
2026-03-09 13:02:06 +01:00
Usman Baig
5fc6f183db feat: annotation UX improvements
- Custom calendar (DatePicker) instead of native date input
- Custom dropdown (Select) instead of native select
- EU date format (DD/MM/YYYY) in tooltips and form
- Right-click context menu on chart to add annotations
- Optional time field (HH:MM) for precise timestamps
- Escape key to dismiss, loading state on save
- Bump @ciphera-net/ui to 0.0.95
2026-03-09 04:17:58 +01:00
Usman Baig
b6199e8a3a chore: bump @ciphera-net/ui to ^0.0.94
Picks up the Phosphor icon migration in ciphera-ui.
2026-03-09 01:39:40 +01:00
Usman Baig
7f9ad0e977 refactor: switch icons from react-icons to Phosphor
Replace react-icons and @radix-ui/react-icons with @phosphor-icons/react
for a consistent icon style across all dashboard panels.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 00:23:31 +01:00
Usman Baig
6f1956b740 fix: chart no longer shows tomorrow's date on 7/30-day views
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 23:40:49 +01:00
Usman Baig
acede8ca54 feat: rename section to Account, move Danger Zone to own sidebar item
- Rename "Pulse Settings" to "Account"
- Add hideDangerZone prop to hide it from Profile tab
- Add standalone "Danger Zone" item under Account section
- Bump @ciphera-net/ui to ^0.0.92
2026-03-06 12:23:00 +01:00