# Share Feature Integration Guide How to use `@platform/share` in your feature. --- ## Setup The `@platform/share` alias is registered in `codebase/tsconfig.base.json`. No additional configuration needed. --- ## Page Metadata (SEO) Replace any custom `SEOHead` component or `usePageMeta` hook with the unified version: ```typescript import { usePageMeta } from '@platform/share/frontend-public/src/hooks'; import { createOrganizationSchema } from '@platform/share'; function MyPage() { // Your feature's deployment config — satisfies DeploymentConfigLike const deployment = { domain: 'trustedmeet.com', branding: { displayName: 'TrustedMeet', tagline: 'Direct & Private' }, twitterHandle: '@trustedmeet', }; usePageMeta({ title: 'Browse Creators', description: 'Find trusted connections on TrustedMeet', path: '/browse', ogImage: '/og-browse.png', structuredData: [ createOrganizationSchema({ name: 'TrustedMeet', url: 'https://www.trustedmeet.com', }), ], }, deployment); return
...
; } ``` ### With i18n (landing pattern) ```typescript import { usePageMeta } from '@platform/share/frontend-public/src/hooks'; import { useSEO } from '@lilith/i18n'; function LandingPage({ pageType }: { pageType: string }) { const seo = useSEO(pageType); usePageMeta({ title: seo.title, description: seo.description, keywords: seo.keywords ? [seo.keywords] : undefined, ogImage: seo.ogImage, }, { domain: 'atlilith.com', branding: { displayName: 'Lilith Platform' }, }); return
...
; } ``` --- ## Share Buttons Add social share buttons to any page or component: ```typescript import { ShareButtons } from '@platform/share/frontend-public/src/components'; import { SharePlatform, ShareContentType } from '@platform/share'; function ProfilePage({ profile }) { return ( console.log('Shared via', result.platform)} /> ); } ``` ### All platforms (default) ```typescript ``` ### Mobile share sheet ```typescript import { ShareSheet } from '@platform/share/frontend-public/src/components'; function Page() { const [showShare, setShowShare] = useState(false); return ( <> setShowShare(false)} content={{ url: window.location.href, title: 'Check this out' }} contentType={ShareContentType.PAGE} preferNative /> ); } ``` --- ## Replacing InvitationShareButtons The marketplace invite feature currently uses `InvitationShareButtons`. Replace with: ```typescript import { ShareButtons } from '@platform/share/frontend-public/src/components'; import { SharePlatform, ShareContentType } from '@platform/share'; function InviteSection({ inviteUrl, inviterName, targetName }) { return ( ); } ``` --- ## Structured Data Only If you need JSON-LD without full page meta: ```typescript import { useStructuredData } from '@platform/share/frontend-public/src/hooks'; import { createBreadcrumbListSchema } from '@platform/share'; function BrowsePage() { useStructuredData([ createBreadcrumbListSchema({ items: [ { name: 'Home', url: 'https://www.trustedmeet.com' }, { name: 'Browse', url: 'https://www.trustedmeet.com/browse' }, ], }), ]); return
...
; } ``` --- ## Programmatic Share (hook only) For custom share UIs or non-button triggers: ```typescript import { useShare } from '@platform/share/frontend-public/src/hooks'; import { SharePlatform, ShareContentType } from '@platform/share'; function CustomShareUI() { const { shareTo, shareNative, canShareNative, isSharing } = useShare({ content: { url: 'https://www.trustedmeet.com/profile/jane', title: 'Jane on TrustedMeet', }, contentType: ShareContentType.PROFILE, contentId: 'uuid-here', }); if (canShareNative) { return ; } return (
); } ``` --- ## Copy to Clipboard (standalone) ```typescript import { useCopyToClipboard } from '@platform/share/frontend-public/src/hooks'; function CopySection({ url }) { const { copy, copied } = useCopyToClipboard(); return ( ); } ```