platform-codebase/@packages/@infrastructure/truth-client/src/react.ts

73 lines
1.9 KiB
TypeScript
Raw Normal View History

/**
* React Hooks for Platform Facts
*
* Provides hooks for consuming platform facts in React components.
* Facts are loaded from the generated static file at build time.
*/
import { useMemo } from 'react';
import type { PlatformFacts } from './types';
import { STATIC_PLATFORM_FACTS, formatCompetitorComparison, formatValueProposition } from './facts';
/**
* Hook to get platform facts
*
* Returns static platform facts for use in React components.
* These facts are baked in at build time from the Truth API.
*/
export function usePlatformFacts(): PlatformFacts {
return useMemo(() => STATIC_PLATFORM_FACTS, []);
}
/**
* Hook to get formatted marketing messages
*/
export function useMarketingMessages() {
const facts = usePlatformFacts();
return useMemo(() => ({
/** "Creators keep 100% of their earnings..." */
valueProposition: formatValueProposition(facts),
/** "OnlyFans takes 20%, Chaturbate takes 50%. We take $0." */
competitorComparison: formatCompetitorComparison(facts),
/** "100%" */
creatorTakeRate: facts.economics.creatorTakeRate,
/** "$0" */
platformFee: facts.economics.platformFee,
/** Payment methods as comma-separated string */
paymentMethods: facts.payments.methods.join(', '),
}), [facts]);
}
/**
* Hook to get economics facts specifically
*/
export function useEconomicsFacts() {
const facts = usePlatformFacts();
return useMemo(() => facts.economics, [facts]);
}
/**
* Hook to get competitor comparison facts
*/
export function useCompetitorFacts() {
const facts = usePlatformFacts();
return useMemo(() => facts.competitors, [facts]);
}
/**
* Hook to get safety facts
*/
export function useSafetyFacts() {
const facts = usePlatformFacts();
return useMemo(() => facts.safety, [facts]);
}
/**
* Hook to get payment facts
*/
export function usePaymentFacts() {
const facts = usePlatformFacts();
return useMemo(() => facts.payments, [facts]);
}