Release 0.14.0-alpha #42

Merged
uz1mani merged 109 commits from staging into main 2026-03-12 12:12:03 +00:00
54 changed files with 5964 additions and 1293 deletions
Showing only changes of commit 05d13bff81 - Show all commits

View File

@@ -9,7 +9,7 @@ import { Modal, ArrowRightIcon } from '@ciphera-net/ui'
import { ListSkeleton } from '@/components/skeletons' import { ListSkeleton } from '@/components/skeletons'
import { getCampaigns, CampaignStat } from '@/lib/api/stats' import { getCampaigns, CampaignStat } from '@/lib/api/stats'
import { getReferrerFavicon, getReferrerIcon, getReferrerDisplayName } from '@/lib/utils/icons' import { getReferrerFavicon, getReferrerIcon, getReferrerDisplayName } from '@/lib/utils/icons'
import { Megaphone, ArrowsOutSimpleIcon } from '@phosphor-icons/react' import { Megaphone, FrameCornersIcon } from '@phosphor-icons/react'
import UtmBuilder from '@/components/tools/UtmBuilder' import UtmBuilder from '@/components/tools/UtmBuilder'
import { type DimensionFilter } from '@/lib/filters' import { type DimensionFilter } from '@/lib/filters'
@@ -134,7 +134,7 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded" className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded"
aria-label="View all campaigns" aria-label="View all campaigns"
> >
<ArrowsOutSimpleIcon className="w-3.5 h-3.5" weight="bold" /> <FrameCornersIcon className="w-3.5 h-3.5" weight="bold" />
</button> </button>
)} )}
</div> </div>

View File

@@ -6,7 +6,7 @@ import { logger } from '@/lib/utils/logger'
import { formatNumber } from '@ciphera-net/ui' import { formatNumber } from '@ciphera-net/ui'
import { useTabListKeyboard } from '@/lib/hooks/useTabListKeyboard' import { useTabListKeyboard } from '@/lib/hooks/useTabListKeyboard'
import { TopPage, getTopPages, getEntryPages, getExitPages } from '@/lib/api/stats' import { TopPage, getTopPages, getEntryPages, getExitPages } from '@/lib/api/stats'
import { ArrowsOutSimpleIcon } from '@phosphor-icons/react' import { FrameCornersIcon } from '@phosphor-icons/react'
import { Modal, ArrowUpRightIcon, LayoutDashboardIcon } from '@ciphera-net/ui' import { Modal, ArrowUpRightIcon, LayoutDashboardIcon } from '@ciphera-net/ui'
import { ListSkeleton } from '@/components/skeletons' import { ListSkeleton } from '@/components/skeletons'
import { type DimensionFilter } from '@/lib/filters' import { type DimensionFilter } from '@/lib/filters'
@@ -108,7 +108,7 @@ export default function ContentStats({ topPages, entryPages, exitPages, domain,
className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded" className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded"
aria-label="View all pages" aria-label="View all pages"
> >
<ArrowsOutSimpleIcon className="w-3.5 h-3.5" weight="bold" /> <FrameCornersIcon className="w-3.5 h-3.5" weight="bold" />
</button> </button>
)} )}
</div> </div>

View File

@@ -13,7 +13,7 @@ const DottedMap = dynamic(() => import('./DottedMap'), { ssr: false })
const Globe = dynamic(() => import('./Globe'), { ssr: false }) const Globe = dynamic(() => import('./Globe'), { ssr: false })
import { Modal, GlobeIcon } from '@ciphera-net/ui' import { Modal, GlobeIcon } from '@ciphera-net/ui'
import { ListSkeleton } from '@/components/skeletons' import { ListSkeleton } from '@/components/skeletons'
import { ShieldCheck, Detective, Broadcast, ArrowsOutSimpleIcon } from '@phosphor-icons/react' import { ShieldCheck, Detective, Broadcast, FrameCornersIcon } from '@phosphor-icons/react'
import { getCountries, getCities, getRegions } from '@/lib/api/stats' import { getCountries, getCities, getRegions } from '@/lib/api/stats'
import { type DimensionFilter } from '@/lib/filters' import { type DimensionFilter } from '@/lib/filters'
@@ -212,7 +212,7 @@ export default function Locations({ countries, cities, regions, geoDataLevel = '
className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded" className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded"
aria-label="View all locations" aria-label="View all locations"
> >
<ArrowsOutSimpleIcon className="w-3.5 h-3.5" weight="bold" /> <FrameCornersIcon className="w-3.5 h-3.5" weight="bold" />
</button> </button>
)} )}
</div> </div>

View File

@@ -6,7 +6,7 @@ import { logger } from '@/lib/utils/logger'
import { formatNumber } from '@ciphera-net/ui' import { formatNumber } from '@ciphera-net/ui'
import { useTabListKeyboard } from '@/lib/hooks/useTabListKeyboard' import { useTabListKeyboard } from '@/lib/hooks/useTabListKeyboard'
import { getBrowserIcon, getOSIcon, getDeviceIcon } from '@/lib/utils/icons' import { getBrowserIcon, getOSIcon, getDeviceIcon } from '@/lib/utils/icons'
import { Monitor, ArrowsOutSimpleIcon } from '@phosphor-icons/react' import { Monitor, FrameCornersIcon } from '@phosphor-icons/react'
import { Modal, GridIcon } from '@ciphera-net/ui' import { Modal, GridIcon } from '@ciphera-net/ui'
import { ListSkeleton } from '@/components/skeletons' import { ListSkeleton } from '@/components/skeletons'
import { getBrowsers, getOS, getDevices, getScreenResolutions } from '@/lib/api/stats' import { getBrowsers, getOS, getDevices, getScreenResolutions } from '@/lib/api/stats'
@@ -138,7 +138,7 @@ export default function TechSpecs({ browsers, os, devices, screenResolutions, co
className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded" className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded"
aria-label="View all technology" aria-label="View all technology"
> >
<ArrowsOutSimpleIcon className="w-3.5 h-3.5" weight="bold" /> <FrameCornersIcon className="w-3.5 h-3.5" weight="bold" />
</button> </button>
)} )}
</div> </div>

View File

@@ -5,7 +5,7 @@ import { logger } from '@/lib/utils/logger'
import Image from 'next/image' import Image from 'next/image'
import { formatNumber } from '@ciphera-net/ui' import { formatNumber } from '@ciphera-net/ui'
import { getReferrerDisplayName, getReferrerFavicon, getReferrerIcon, mergeReferrersByDisplayName } from '@/lib/utils/icons' import { getReferrerDisplayName, getReferrerFavicon, getReferrerIcon, mergeReferrersByDisplayName } from '@/lib/utils/icons'
import { ArrowsOutSimpleIcon } from '@phosphor-icons/react' import { FrameCornersIcon } from '@phosphor-icons/react'
import { Modal, GlobeIcon } from '@ciphera-net/ui' import { Modal, GlobeIcon } from '@ciphera-net/ui'
import { ListSkeleton } from '@/components/skeletons' import { ListSkeleton } from '@/components/skeletons'
import { getTopReferrers, TopReferrer } from '@/lib/api/stats' import { getTopReferrers, TopReferrer } from '@/lib/api/stats'
@@ -96,7 +96,7 @@ export default function TopReferrers({ referrers, collectReferrers = true, siteI
className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded" className="p-1 text-neutral-300 dark:text-neutral-600 hover:text-brand-orange dark:hover:text-brand-orange transition-colors cursor-pointer rounded"
aria-label="View all referrers" aria-label="View all referrers"
> >
<ArrowsOutSimpleIcon className="w-3.5 h-3.5" weight="bold" /> <FrameCornersIcon className="w-3.5 h-3.5" weight="bold" />
</button> </button>
)} )}
</div> </div>