# 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 (
);
}
```