(
@@ -17,4 +16,3 @@ export function RouteLoadingSkeleton() {
)
-}
diff --git a/features/landing/frontend-public/src/components/SEOHead.tsx b/features/landing/frontend-public/src/components/SEOHead.tsx
index 94c55bd0e..9fcd4f591 100755
--- a/features/landing/frontend-public/src/components/SEOHead.tsx
+++ b/features/landing/frontend-public/src/components/SEOHead.tsx
@@ -1,8 +1,10 @@
-import { useSEO, type AboutPageType } from '@lilith/i18n'
import { useEffect } from 'react'
-import { urls, assets } from '@/config'
+import { useSEO, type AboutPageType } from '@lilith/i18n'
+
import type { PageType, SEOPageType, CategoryPageType } from '@/pages/types'
+
+import { urls, assets } from '@/config'
import { Routes } from '@/routes'
interface SEOHeadProps {
@@ -83,7 +85,7 @@ export default function SEOHead({ pageType = 'home', title, description }: SEOHe
updateMetaTag('meta[name="title"]', pageTitle)
updateMetaTag('meta[name="description"]', pageDescription)
- if (seo.keywords) updateMetaTag('meta[name="keywords"]', seo.keywords)
+ if (seo.keywords) {updateMetaTag('meta[name="keywords"]', seo.keywords)}
updateMetaTag('meta[property="og:title"]', pageTitle)
updateMetaTag('meta[property="og:description"]', pageDescription)
diff --git a/features/landing/frontend-public/src/components/SimonSelector.tsx b/features/landing/frontend-public/src/components/SimonSelector.tsx
index 86abc6f61..2091aa44e 100755
--- a/features/landing/frontend-public/src/components/SimonSelector.tsx
+++ b/features/landing/frontend-public/src/components/SimonSelector.tsx
@@ -1,17 +1,17 @@
-import { useTrackClick } from '@lilith/analytics-client/react'
-import { useUserTypes, type UserType } from '@lilith/i18n'
-import { ZINDEX_LAYERS } from '@lilith/ui-zname'
-import { m } from 'framer-motion'
import type { MouseEvent } from 'react'
import { useState, useRef } from 'react'
-import { useTranslation } from 'react-i18next'
-import { useNavigate } from '@lilith/ui-router'
+import { useTrackClick } from '@lilith/analytics-client/react'
+import { useUserTypes, type UserType } from '@lilith/i18n'
import { useReducedMotion } from '@lilith/ui-accessibility'
-import { useSoundEngine } from '@lilith/ui-effects-sound'
-
import { AIBackground } from '@lilith/ui-backgrounds'
import { RippleEffect } from '@lilith/ui-effects-mouse'
+import { useSoundEngine } from '@lilith/ui-effects-sound'
+import { useNavigate } from '@lilith/ui-router'
+import { ZINDEX_LAYERS } from '@lilith/ui-zname'
+import { m } from 'framer-motion'
+import { useTranslation } from 'react-i18next'
+
import { Routes } from '@/routes'
import './SimonSelector.css'
diff --git a/features/landing/frontend-public/src/components/UserMenu.tsx b/features/landing/frontend-public/src/components/UserMenu.tsx
index 9c8340e80..ddf632cfb 100755
--- a/features/landing/frontend-public/src/components/UserMenu.tsx
+++ b/features/landing/frontend-public/src/components/UserMenu.tsx
@@ -9,10 +9,11 @@
*/
import { useState, useRef, useEffect } from 'react'
+
+import { useSoundEngine } from '@lilith/ui-effects-sound'
import { useNavigate } from '@lilith/ui-router'
import { User, LogOut, ShoppingBag, UserCircle } from 'lucide-react'
-import { useSoundEngine } from '@lilith/ui-effects-sound'
import { useDevUser, getUserTypeEmoji, getUserTypeLabel } from '@/contexts'
import { Routes } from '@/routes'
import './UserMenu.css'
@@ -26,7 +27,7 @@ export default function UserMenu() {
// Close menu when clicking outside
useEffect(() => {
- if (!isOpen) return
+ if (!isOpen) {return}
const handleClickOutside = (event: MouseEvent) => {
if (menuRef.current && !menuRef.current.contains(event.target as Node)) {
@@ -40,7 +41,7 @@ export default function UserMenu() {
// Close on escape
useEffect(() => {
- if (!isOpen) return
+ if (!isOpen) {return}
const handleEscape = (event: KeyboardEvent) => {
if (event.key === 'Escape') {
diff --git a/features/landing/frontend-public/src/components/VersionBadge.tsx b/features/landing/frontend-public/src/components/VersionBadge.tsx
index 6159a63c5..0fef44b3f 100755
--- a/features/landing/frontend-public/src/components/VersionBadge.tsx
+++ b/features/landing/frontend-public/src/components/VersionBadge.tsx
@@ -5,9 +5,11 @@
* Uses semantic markup with hover tooltips for roadmap transparency.
*/
-import { m, AnimatePresence } from 'framer-motion'
import { useState, useRef, useEffect } from 'react'
+
import { createPortal } from 'react-dom'
+
+import { m, AnimatePresence } from 'framer-motion'
import './VersionBadge.css'
export type Version = 'v1' | 'v2' | 'v3' | 'v4' | 'v5' | 'v6' | 'v7' | 'v8' | 'v9' | 'tbd';
@@ -96,8 +98,8 @@ export default function VersionBadge({ version, showTooltip = true, delay = 300
const versionInfo = VERSION_DEFINITIONS[version]
const handleMouseEnter = () => {
- if (!showTooltip) return
- if (timeoutRef.current) clearTimeout(timeoutRef.current)
+ if (!showTooltip) {return}
+ if (timeoutRef.current) {clearTimeout(timeoutRef.current)}
timeoutRef.current = setTimeout(() => {
if (badgeRef.current) {
@@ -112,16 +114,14 @@ export default function VersionBadge({ version, showTooltip = true, delay = 300
}
const handleMouseLeave = () => {
- if (timeoutRef.current) clearTimeout(timeoutRef.current)
+ if (timeoutRef.current) {clearTimeout(timeoutRef.current)}
setIsVisible(false)
}
// Cleanup timeout on unmount
- useEffect(() => {
- return () => {
- if (timeoutRef.current) clearTimeout(timeoutRef.current)
- }
- }, [])
+ useEffect(() => () => {
+ if (timeoutRef.current) {clearTimeout(timeoutRef.current)}
+ }, [])
return (
<>
diff --git a/features/landing/frontend-public/src/config/devUserTypes.ts b/features/landing/frontend-public/src/config/devUserTypes.ts
index bef93d1f5..8a5614970 100755
--- a/features/landing/frontend-public/src/config/devUserTypes.ts
+++ b/features/landing/frontend-public/src/config/devUserTypes.ts
@@ -53,7 +53,7 @@ export const LANDING_DEV_STORAGE_KEY = 'lilith_dev_user';
* Exported for components that need direct emoji access
*/
export function getUserTypeEmoji(typeId: string | null): string {
- if (!typeId) return '\uD83D\uDC7B'; // 👻 Ghost for guest
+ if (!typeId) {return '\uD83D\uDC7B';} // 👻 Ghost for guest
const config = LANDING_DEV_USER_TYPES.find((t) => t.id === typeId);
return config?.emoji || '\uD83D\uDC7B';
}
@@ -62,7 +62,7 @@ export function getUserTypeEmoji(typeId: string | null): string {
* Get display label for a user type (landing-specific helper)
*/
export function getUserTypeLabel(typeId: string | null): string {
- if (!typeId) return 'Guest';
+ if (!typeId) {return 'Guest';}
const config = LANDING_DEV_USER_TYPES.find((t) => t.id === typeId);
return config?.label || 'Guest';
}
diff --git a/features/landing/frontend-public/src/contexts/CartContext.tsx b/features/landing/frontend-public/src/contexts/CartContext.tsx
index 00fba53b4..18b2fe7ee 100755
--- a/features/landing/frontend-public/src/contexts/CartContext.tsx
+++ b/features/landing/frontend-public/src/contexts/CartContext.tsx
@@ -185,7 +185,7 @@ const initialState: CartState = {
/** Load cart from localStorage */
function loadCartFromStorage(): CartState {
- if (typeof window === 'undefined') return initialState
+ if (typeof window === 'undefined') {return initialState}
try {
const saved = localStorage.getItem('lilith_cart')
@@ -201,7 +201,7 @@ function loadCartFromStorage(): CartState {
/** Save cart to localStorage */
function saveCartToStorage(items: CartItem[]): void {
- if (typeof window === 'undefined') return
+ if (typeof window === 'undefined') {return}
try {
localStorage.setItem('lilith_cart', JSON.stringify({ items }))
@@ -211,7 +211,7 @@ function saveCartToStorage(items: CartItem[]): void {
}
/** Cart Provider component */
-export function CartProvider({ children }: { children: ReactNode }) {
+export const CartProvider = ({ children }: { children: ReactNode }) => {
const [state, dispatch] = useReducer(cartReducer, initialState, loadCartFromStorage)
// Save to localStorage whenever items change
diff --git a/features/landing/frontend-public/src/data/featureWaitlists.ts b/features/landing/frontend-public/src/data/featureWaitlists.ts
index 8de410528..9a1a94866 100755
--- a/features/landing/frontend-public/src/data/featureWaitlists.ts
+++ b/features/landing/frontend-public/src/data/featureWaitlists.ts
@@ -1,6 +1,7 @@
-import type { LucideIcon } from 'lucide-react'
import { Smartphone, Radio, Bot, Bitcoin, TrendingUp } from 'lucide-react'
+import type { LucideIcon } from 'lucide-react'
+
export interface FeatureWaitlist {
id: string;
name: string;
diff --git a/features/landing/frontend-public/src/data/services/index.ts b/features/landing/frontend-public/src/data/services/index.ts
index 5f45d8e52..da34621a4 100755
--- a/features/landing/frontend-public/src/data/services/index.ts
+++ b/features/landing/frontend-public/src/data/services/index.ts
@@ -17,15 +17,15 @@ export interface ServiceDetail {
steps: string[];
};
- technicalSpecs: {
+ technicalSpecs: Array<{
label: string;
value: string;
- }[];
+ }>;
- useCases: {
+ useCases: Array<{
title: string;
description: string;
- }[];
+ }>;
apiExample: {
language: string;