60 Commits

Author SHA1 Message Date
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
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
5cff767e32 fix: org switch now updates auth context immediately — no stale org in header 2026-03-26 23:59:30 +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
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
6b33483c81 fix: remove SettingsModalProvider import and wrapper from layout 2026-03-26 10:53:48 +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
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
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
6fcb6df295 fix: widen collapsed sidebar to 64px, prevent header flash on refresh
Collapsed width 56px→64px to stop clipping site picker badge and icons.
Return null while auth is loading on site pages to prevent brief flash
of the public floating header before the sidebar layout renders.
2026-03-18 16:51:01 +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
1d25368292 feat: Dokploy-style sidebar layout for site pages
Sidebar takes full viewport height with Pulse logo at top. No Header
on site pages — UtilityBar in content area provides theme toggle, app
launcher, notifications, and user menu. Non-site authenticated pages
keep static Header. No footer on dashboard pages.
2026-03-18 15:58:06 +01:00
Usman Baig
7ae5facd0c fix: proper dashboard layout — header + sidebar + content fill viewport
Use h-screen overflow-hidden on the root container for authenticated
views. Sidebar and content fill the remaining height below the header.
Remove footer from dashboard pages. Content scrolls inside its own
container, sidebar stays fixed in place.
2026-03-18 15:38:58 +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
48cf9a1f62 feat: replace settings page with SettingsModal
- Add SettingsModalProvider context and SettingsModalWrapper
- Wire Header onOpenSettings callback via LayoutInner pattern
- Remove old /settings page and SettingsPageClient
- Bump @ciphera-net/ui to ^0.0.88
2026-03-05 22:16:36 +01:00
Usman Baig
8a7076ee1b refactor: migrate dashboard to SWR hooks, eliminate all any[] state
Replace 22 manual useState + useEffect + setInterval polling with 11
focused SWR hooks. Removes ~85 lines of polling/visibility logic that
SWR handles natively. All any[] types replaced with proper interfaces
(TopPage, CountryStat, BrowserStat, etc.). Organization state in layout
typed as OrganizationMember[].

Resolves F-7, F-8, F-15 from audit report.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:42:14 +01:00
Usman Baig
f933c2fb71 chore: update @ciphera-net/ui dependency to version 0.0.68 and update icon URLs in layout-content.tsx for improved asset management 2026-02-27 13:02:30 +01:00
Usman Baig
908b8c0900 chore: update CHANGELOG.md to include the addition of an App Switcher in the User Menu for easier navigation between Ciphera products, along with dependency updates for @ciphera-net/ui 2026-02-27 12:50:05 +01:00
Usman Baig
2d0307d328 fix: enhance error logging by replacing console.error with a centralized logger across the application to improve security and maintainability 2026-02-22 20:57:21 +01:00
Usman Baig
c73c300620 feat: improve organization switching experience with a branded loading overlay and session management for smoother transitions 2026-02-22 20:48:09 +01:00
Usman Baig
4add41293b fix: ensure safe handling of organizations and notifications data in LayoutContent and NotificationCenter components 2026-02-13 10:01:32 +01:00
Usman Baig
18a54401ef chore: update CHANGELOG for version 0.6.0-alpha, add in-app notification center, and update package dependencies 2026-02-13 09:36:18 +01:00
Usman
48a27acebc Merge branch 'main' into staging 2026-02-09 09:58:56 +01:00
Usman Baig
d35ef6e55a refactor: update terminology in layout content and welcome page to replace 'workspace' with 'organization' for consistency 2026-02-09 09:54:20 +01:00
Usman Baig
03fcfba180 chore: update @ciphera-net/ui dependency to version 0.0.49 and refactor terminology in layout content for consistency 2026-02-09 09:51:19 +01:00
Usman Baig
ff456ef4d6 refactor: remove Tools page and associated link from layout, streamlining navigation 2026-02-08 21:27:42 +01:00
Usman Baig
34c854ed7c chore: rename workspaces to organizations, bump ciphera-ui to 0.0.49
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-08 21:07:33 +01:00
Usman Baig
f734252fb1 feat: update navigation links to include 'Features' for unauthenticated users and maintain 'Tools' for authenticated users 2026-02-07 01:33:31 +01:00
Usman Baig
e9476219b1 Phase 2: Enhance footer with conditional comprehensive layout 2026-02-05 16:41:31 +01:00
Usman Baig
210ea7b754 feat: update version to 0.1.2 and upgrade @ciphera-net/ui to 0.0.44; refactor layout-content for improved navigation handling 2026-02-04 20:34:30 +01:00
Usman Baig
f2927098ac feat: update version to 0.1.1, upgrade @ciphera-net/ui to 0.0.43, and enhance Campaigns component with URL builder modal 2026-02-04 20:18:58 +01:00
Usman Baig
0d16f3ba55 refactor: derive main padding from bar/header height constants
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-04 12:41:13 +01:00
Usman Baig
4d477110c8 refactor: enhance OfflineBanner to accept online status as a prop and update layout-content to pass isOnline state 2026-02-04 12:34:24 +01:00
Usman Baig
19f75b2f45 chore: update @ciphera-net/ui dependency to version 0.0.42 in package.json and package-lock.json; enhance OfflineBanner styling and layout in layout-content.tsx 2026-02-04 11:41:38 +01:00
Usman Baig
223c00a382 fix: conditionally render OfflineBanner and adjust main padding based on user authentication and online status 2026-02-04 11:32:14 +01:00
Usman Baig
cbd3c38f38 chore: update @ciphera-net/ui dependency to version 0.0.40 in package.json and package-lock.json; add useOnlineStatus hook to LayoutContent for dynamic padding adjustment 2026-02-04 11:17:18 +01:00
Usman Baig
a5f1d51f51 style: wrap OfflineBanner in a div with padding for improved layout spacing in LayoutContent 2026-02-04 11:07:56 +01:00
Usman Baig
2a0380189d feat: add OfflineBanner component to LayoutContent for offline notifications and update styles in OfflineBanner 2026-02-04 11:00:21 +01:00
Usman Baig
e17c95b940 chore: update @ciphera-net/ui dependency to version 0.0.38; modify LayoutContent to include showSecurity prop 2026-01-31 22:52:20 +01:00
Usman Baig
c0adc7fd63 chore: update @ciphera-net/ui dependency to version 0.0.37 in package.json and package-lock.json; add showPricing prop to LayoutContent and Footer components 2026-01-30 20:27:50 +01:00
Usman Baig
6ffd5afc65 chore: update @ciphera-net/ui dependency to version 0.0.36 in package.json and package-lock.json; add showFaq and showSecurity props to LayoutContent component 2026-01-30 20:15:43 +01:00
Usman Baig
0263d85e50 chore: update @ciphera-net/ui dependency to version 0.0.34 in package.json and package-lock.json; refactor Footer component to simplify layout and remove WebsiteFooter 2026-01-30 19:47:48 +01:00
Usman Baig
6d69070f73 feat: conditionally render footer based on user authentication, displaying WebsiteFooter for unauthenticated users 2026-01-30 16:11:31 +01:00
Usman Baig
b3cafe77d9 fix: update footer year range from dynamic to fixed 2024-2026 for consistency 2026-01-30 15:40:32 +01:00
Usman Baig
bb1cfe44fe fix: update footer year dynamically and refactor dashboard preview layout for improved responsiveness 2026-01-30 15:36:22 +01:00
Usman Baig
e6b66e7f97 fix: update handleSwitchWorkspace signature to accept null 2026-01-23 18:52:36 +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
794523fa81 refactor(layout): consolidate Footer component import into Header/Footer from '@ciphera-net/ui' and remove redundant Footer file 2026-01-23 17:33:38 +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