From 6f6fc67eeab07d970060aea7a6aaeceb4bfc3e27 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Sat, 7 Feb 2026 01:49:46 +0100 Subject: [PATCH] chore: bump version to 0.1.3 and update @ciphera-net/ui dependency to 0.0.46; refine feature descriptions for clarity and consistency --- app/features/page.tsx | 338 +++++++++++++++++------------------------- package-lock.json | 12 +- package.json | 4 +- 3 files changed, 147 insertions(+), 207 deletions(-) diff --git a/app/features/page.tsx b/app/features/page.tsx index baa5764..bb96649 100644 --- a/app/features/page.tsx +++ b/app/features/page.tsx @@ -4,8 +4,9 @@ * @file Features / Product Tour page. * * Comprehensive showcase of everything Pulse offers — designed to convert - * visitors who land here from search or internal navigation. Each feature - * section uses consistent glass-morphism cards with staggered animations. + * visitors who land here from search or internal navigation. Uses mixed + * layout styles (cards, inline lists, numbered steps, split sections) to + * avoid visual monotony. */ import Link from 'next/link' @@ -18,115 +19,89 @@ import { ZapIcon, GlobeIcon, Share2Icon, - EyeIcon, ArrowRightIcon, } from '@ciphera-net/ui' -// * Feature definitions grouped by section -const heroFeatures = [ +// * Pillar features (top 3 cards — matches landing page) +const pillars = [ { icon: LockIcon, title: 'Privacy First', description: - 'No cookies, no IP tracking, no fingerprinting. Fully GDPR, CCPA, and PECR compliant out of the box — no cookie banner required.', + 'No cookies, no IP tracking, no fingerprinting. Fully GDPR, CCPA, and PECR compliant — no cookie banner required.', }, { icon: BarChartIcon, title: 'Simple Dashboard', description: - 'One clear dashboard with everything you need. Page views, unique visitors, referral sources, and top pages — no learning curve.', + 'One clear dashboard with everything you need. Page views, visitors, referral sources, and top pages — no learning curve.', }, { icon: ZapIcon, title: 'Lightweight Script', description: - 'Less than 1 KB. Our tracking script loads in milliseconds and has zero impact on your Lighthouse score or Core Web Vitals.', + 'Less than 1 KB. Loads in milliseconds with zero impact on your Lighthouse score or Core Web Vitals.', }, ] -const coreCapabilities = [ +// * Core capabilities — rendered as an icon + text list, NOT cards +const capabilities = [ { icon: ( - + ), title: 'Real-Time Analytics', - description: 'Watch visitors arrive on your site in real time. See active pages, live referrers, and current visitor counts — no delay.', + description: 'Watch visitors arrive live. See active pages, referrers, and current visitor counts with zero delay.', }, { icon: ( - + ), title: 'Conversion Funnels', - description: 'Define multi-step funnels to see where visitors drop off. Track sign-ups, purchases, or any custom flow with precise conversion rates.', + description: 'Define multi-step funnels and see exactly where visitors drop off in your sign-up or checkout flow.', }, { icon: ( - + ), title: 'Goals & Events', - description: 'Set goals for key pages or custom events. Track completions, conversion rates, and revenue attribution — all without cookies.', + description: 'Track custom goals, completions, and conversion rates — all without cookies or complex setup.', }, { icon: ( - + ), title: 'UTM Campaign Tracking', - description: 'Automatically parse UTM parameters to attribute traffic to campaigns, sources, and mediums. Built-in UTM link builder included.', + description: 'Automatically parse UTM parameters. Built-in link builder for campaigns, sources, and mediums.', }, { icon: Share2Icon, title: 'Shared Dashboards', - description: 'Generate a public link to share your analytics with clients, teammates, or the world. No login required for viewers.', + description: 'Generate a public link to share analytics with clients or teammates — no login required.', }, { icon: GlobeIcon, title: 'Geographic Insights', - description: 'See where your visitors are from — country, region, and city level. All derived at request time; IP addresses are never stored.', + description: 'Country, region, and city-level breakdowns. IPs are never stored — derived at request time only.', }, ] -const technicalFeatures = [ - { - title: 'One-Line Installation', - description: 'Add a single
- {heroFeatures.map((feature, i) => ( + {/* * ─── PILLAR CARDS (3 glass cards — matches landing page) ─── */} +
+ {pillars.map((feature, i) => ( - {/* * ─── CORE CAPABILITIES ─── */} + {/* * ─── CORE CAPABILITIES (icon list — NO cards) ─── */} -

- Powerful analytics, simplified -

-

- Everything from real-time dashboards to conversion funnels — without the bloat. -

-
- -
- {coreCapabilities.map((cap, i) => ( - -
- {typeof cap.icon === 'object' ? cap.icon : } -
-

- {cap.title} -

-

- {cap.description} -

-
- ))} -
- - {/* * ─── DEVICE & TECH INSIGHTS ─── */} - -
+

- Know your audience + Powerful analytics, simplified

- Understand which devices, browsers, and screen sizes your visitors use — so you can build for what matters. + Everything from real-time dashboards to conversion funnels — without the bloat.

-
- {deviceInsights.map((item, i) => ( +
+ {capabilities.map((cap, i) => ( -
- +
+ {typeof cap.icon === 'object' ? cap.icon : } +
+
+

+ {cap.title} +

+

+ {cap.description} +

-

{item.label}

-

{item.description}

))}
- {/* * ─── CONTENT ANALYTICS HIGHLIGHT ─── */} + {/* * ─── CONTENT ANALYTICS (split layout — visual variety) ─── */}
@@ -280,7 +222,13 @@ export default function FeaturesPage() { See which pages drive the most traffic, where visitors enter your site, and where they leave. Use data to double down on what works.

    - {['Top pages by views & unique visitors', 'Entry pages — first impressions that work', 'Exit pages — where you lose attention', 'Referral sources — where traffic comes from'].map((item) => ( + {[ + 'Top pages by views & unique visitors', + 'Entry pages — first impressions that work', + 'Exit pages — where you lose attention', + 'Referral sources — where traffic comes from', + 'Browser, OS & device breakdowns', + ].map((item) => (
  • @@ -303,7 +251,7 @@ export default function FeaturesPage() { whileInView={{ opacity: 1, x: 0 }} viewport={{ once: true }} transition={{ duration: 0.4, delay: i * 0.1 }} - className="p-4 bg-neutral-50 dark:bg-neutral-800/50 rounded-xl border border-neutral-200 dark:border-neutral-700" + className="p-4 bg-neutral-50 dark:bg-neutral-800/50 rounded-xl" >
    @@ -328,72 +276,71 @@ export default function FeaturesPage() {
    - {/* * ─── TECHNICAL & TRUST FEATURES ─── */} + {/* * ─── TRUST SIGNALS (compact grid — NO card borders) ─── */} -

    - Built for trust -

    -

    - Open source, Swiss hosted, and designed to keep your visitors' data where it belongs — with them. -

    -
    - -
    - {technicalFeatures.map((feat, i) => ( - -

    - {feat.title} -

    -

    - {feat.description} -

    - {feat.link && ( - feat.link.external ? ( - - {feat.link.label} - - - ) : ( - - {feat.link.label} - - - ) - )} -
    - ))} -
    - - {/* * ─── HOW IT WORKS ─── */} -
    +

    + Built for trust +

    +

    + Open source, Swiss hosted, and designed to keep your visitors' data where it belongs. +

    +
    + +
    + {trustSignals.map((signal, i) => ( + + + + +
    + {signal.label} +

    {signal.detail}

    +
    +
    + ))} +
    + +
    + + View all integrations + + + View on GitHub + +
    +
    + + {/* * ─── HOW IT WORKS (numbered steps — inline, NO card borders) ─── */} + +

    Up and running in 3 minutes

    @@ -402,41 +349,34 @@ export default function FeaturesPage() {

    -
    +
    {[ - { - step: '1', - title: 'Create your site', - description: 'Sign up and add your domain. We verify ownership automatically.', - }, - { - step: '2', - title: 'Add the script', - description: 'Paste one