@fayz-ai/plugin-linkinbio 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/BioPageRenderer.d.ts.map +1 -1
- package/dist/public/blocks/ProfileHeader.d.ts.map +1 -1
- package/dist/public/components/MediaKit.d.ts +6 -0
- package/dist/public/components/MediaKit.d.ts.map +1 -0
- package/dist/public/index.js +238 -4
- package/dist/public/index.js.map +1 -1
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/public/BioPageRenderer.tsx +2 -0
- package/src/public/blocks/ProfileHeader.tsx +16 -18
- package/src/public/components/MediaKit.tsx +249 -0
- package/src/types.ts +9 -0
- package/dist/index.cjs +0 -33
- package/dist/index.cjs.map +0 -1
- package/dist/public/index.cjs +0 -1750
- package/dist/public/index.cjs.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -244,6 +244,19 @@ export interface BioPage {
|
|
|
244
244
|
* alternating section backgrounds).
|
|
245
245
|
*/
|
|
246
246
|
layout?: 'scroll' | 'hub';
|
|
247
|
+
/**
|
|
248
|
+
* Press/media kit — a downloadable-assets modal for bookers. Photos, logo and
|
|
249
|
+
* bio are auto-derived from the page; add `driveUrl` (full kit) and extra
|
|
250
|
+
* `assets` (rider, tech sheet, etc.) here.
|
|
251
|
+
*/
|
|
252
|
+
mediaKit?: {
|
|
253
|
+
driveUrl?: string;
|
|
254
|
+
assets?: {
|
|
255
|
+
label: string;
|
|
256
|
+
url: string;
|
|
257
|
+
kind?: 'image' | 'logo' | 'doc' | 'audio' | 'link';
|
|
258
|
+
}[];
|
|
259
|
+
};
|
|
247
260
|
template?: string;
|
|
248
261
|
updatedAt?: string;
|
|
249
262
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,24 +3,23 @@
|
|
|
3
3
|
"fayz": {
|
|
4
4
|
"status": "preview"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.10.0",
|
|
7
7
|
"description": "Fayz SDK — plugin-linkinbio: komi/linktree-style link-in-bio pages for any creator (public bio page + modular block registry)",
|
|
8
8
|
"type": "module",
|
|
9
|
-
"
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"main": "./dist/index.js",
|
|
10
11
|
"module": "./dist/index.js",
|
|
11
12
|
"types": "./dist/index.d.ts",
|
|
12
13
|
"exports": {
|
|
13
14
|
".": {
|
|
14
15
|
"source": "./src/index.ts",
|
|
15
16
|
"types": "./dist/index.d.ts",
|
|
16
|
-
"import": "./dist/index.js"
|
|
17
|
-
"require": "./dist/index.cjs"
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
18
|
},
|
|
19
19
|
"./public": {
|
|
20
20
|
"source": "./src/public/index.ts",
|
|
21
21
|
"types": "./dist/public/index.d.ts",
|
|
22
|
-
"import": "./dist/public/index.js"
|
|
23
|
-
"require": "./dist/public/index.cjs"
|
|
22
|
+
"import": "./dist/public/index.js"
|
|
24
23
|
}
|
|
25
24
|
},
|
|
26
25
|
"files": [
|
|
@@ -30,12 +29,12 @@
|
|
|
30
29
|
"peerDependencies": {
|
|
31
30
|
"react": "^18.0.0 || ^19.0.0",
|
|
32
31
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
33
|
-
"react-router-dom": "^6.0.0 || ^7.0.0"
|
|
32
|
+
"react-router-dom": "^6.0.0 || ^7.0.0",
|
|
33
|
+
"lucide-react": ">=0.400.0 <1.0.0"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"lucide-react": "^0.400.0",
|
|
37
36
|
"react-icons": "^5.3.0",
|
|
38
|
-
"@fayz-ai/core": "^0.
|
|
37
|
+
"@fayz-ai/core": "^0.9.0"
|
|
39
38
|
},
|
|
40
39
|
"devDependencies": {
|
|
41
40
|
"@types/react": "^18.3.0",
|
|
@@ -44,7 +43,9 @@
|
|
|
44
43
|
"react-router-dom": "^6.30.0",
|
|
45
44
|
"tsup": "^8.2.0",
|
|
46
45
|
"typescript": "^5.5.0",
|
|
47
|
-
"vitest": "^
|
|
46
|
+
"vitest": "^4.1.5",
|
|
47
|
+
"@types/react-dom": "^18.3.0",
|
|
48
|
+
"lucide-react": "^0.400.0"
|
|
48
49
|
},
|
|
49
50
|
"license": "MIT",
|
|
50
51
|
"keywords": [
|
|
@@ -3,6 +3,7 @@ import { ChevronUp, MessageCircle } from 'lucide-react';
|
|
|
3
3
|
import type { BioPage, BioBlock } from '../types';
|
|
4
4
|
import { getBlock } from './registry';
|
|
5
5
|
import { Reveal } from './components/Reveal';
|
|
6
|
+
import { MediaKit } from './components/MediaKit';
|
|
6
7
|
import HeroSection from './blocks/HeroSection';
|
|
7
8
|
import BioSection from './blocks/BioSection';
|
|
8
9
|
import GallerySection from './blocks/GallerySection';
|
|
@@ -200,6 +201,7 @@ export default function BioPageRenderer({ page, poweredBy }: BioPageRendererProp
|
|
|
200
201
|
>
|
|
201
202
|
<ChevronUp size={20} />
|
|
202
203
|
</button>
|
|
204
|
+
<MediaKit page={page} variant="fab" />
|
|
203
205
|
{floatingCta && (
|
|
204
206
|
<a
|
|
205
207
|
href={floatingCta.url}
|
|
@@ -129,24 +129,22 @@ export default function ProfileHeader({ section, page }: Props) {
|
|
|
129
129
|
</div>
|
|
130
130
|
)}
|
|
131
131
|
|
|
132
|
-
{/* Social icon row */}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
</div>
|
|
149
|
-
)}
|
|
132
|
+
{/* Social + media-kit icon row */}
|
|
133
|
+
<div className="flex flex-wrap items-center justify-center gap-3 mt-4 px-4">
|
|
134
|
+
{socials.map((link) => (
|
|
135
|
+
<a
|
|
136
|
+
key={link.platform + link.url}
|
|
137
|
+
href={link.url}
|
|
138
|
+
target="_blank"
|
|
139
|
+
rel="noopener noreferrer"
|
|
140
|
+
aria-label={link.label ?? platformLabels[link.platform] ?? 'Link'}
|
|
141
|
+
className="flex items-center justify-center w-11 h-11 rounded-full transition-transform hover:scale-110"
|
|
142
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.07)', color: 'var(--pk-text)' }}
|
|
143
|
+
>
|
|
144
|
+
<PlatformIcon platform={link.platform} size={19} />
|
|
145
|
+
</a>
|
|
146
|
+
))}
|
|
147
|
+
</div>
|
|
150
148
|
|
|
151
149
|
{/* Quick-nav pills */}
|
|
152
150
|
{section.navPills && section.navPills.length > 0 && (
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { useMemo, useState, type CSSProperties } from 'react';
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
3
|
+
import { Download, X, Copy, Check, FileText, ExternalLink } from 'lucide-react';
|
|
4
|
+
import type { BioPage, BioMediaItem } from '../../types';
|
|
5
|
+
import { getBrandingVars } from '../utils';
|
|
6
|
+
|
|
7
|
+
interface Asset {
|
|
8
|
+
label: string;
|
|
9
|
+
url: string;
|
|
10
|
+
kind: 'image' | 'logo' | 'doc' | 'audio' | 'link';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Derive downloadable assets from the page (logo, photos, bio text) + explicit mediaKit. */
|
|
14
|
+
function derive(page: BioPage): { images: Asset[]; bioText: string; extras: Asset[]; driveUrl?: string } {
|
|
15
|
+
const seen = new Set<string>();
|
|
16
|
+
const images: Asset[] = [];
|
|
17
|
+
const pushImg = (label: string, url: string, kind: Asset['kind'] = 'image') => {
|
|
18
|
+
if (!url || seen.has(url) || !url.startsWith('/')) return; // only local (own) assets
|
|
19
|
+
seen.add(url);
|
|
20
|
+
images.push({ label, url, kind });
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
if (page.branding.logoUrl) pushImg('Logo', page.branding.logoUrl, 'logo');
|
|
24
|
+
|
|
25
|
+
let bioText = '';
|
|
26
|
+
for (const s of page.sections) {
|
|
27
|
+
if (s.type === 'profile-header' && s.imageUrl) pushImg('Foto de capa', s.imageUrl);
|
|
28
|
+
if (s.type === 'hero' && s.backgroundImageUrl) pushImg('Foto de capa', s.backgroundImageUrl);
|
|
29
|
+
if (s.type === 'gallery') s.media.forEach((m: BioMediaItem, i: number) => m.type === 'image' && pushImg(`Foto ${i + 1}`, m.url));
|
|
30
|
+
if (s.type === 'bio' || s.type === 'text') {
|
|
31
|
+
if (s.content) bioText += `${s.title ? `## ${s.title}\n\n` : ''}${s.content}\n\n`;
|
|
32
|
+
if (s.type === 'bio' && s.imageUrl) pushImg('Foto', s.imageUrl);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const extras = (page.mediaKit?.assets ?? []).map(
|
|
37
|
+
(a: { label: string; url: string; kind?: Asset['kind'] }): Asset => ({ label: a.label, url: a.url, kind: a.kind ?? 'link' }),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
return { images, bioText: bioText.trim(), extras, driveUrl: page.mediaKit?.driveUrl };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function fileName(url: string, fallback: string): string {
|
|
44
|
+
const base = url.split('/').pop()?.split('?')[0];
|
|
45
|
+
return base && base.includes('.') ? base : fallback;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function MediaKit({ page, variant = 'inline' }: { page: BioPage; variant?: 'inline' | 'fab' }) {
|
|
49
|
+
const [open, setOpen] = useState(false);
|
|
50
|
+
const [copied, setCopied] = useState(false);
|
|
51
|
+
const { images, bioText, extras, driveUrl } = useMemo(() => derive(page), [page]);
|
|
52
|
+
|
|
53
|
+
if (!images.length && !bioText && !extras.length && !driveUrl) return null;
|
|
54
|
+
|
|
55
|
+
const copyBio = async () => {
|
|
56
|
+
try {
|
|
57
|
+
await navigator.clipboard.writeText(bioText);
|
|
58
|
+
setCopied(true);
|
|
59
|
+
setTimeout(() => setCopied(false), 1800);
|
|
60
|
+
} catch {
|
|
61
|
+
/* clipboard unavailable */
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const downloadBio = () => {
|
|
66
|
+
const blob = new Blob([bioText], { type: 'text/plain;charset=utf-8' });
|
|
67
|
+
const url = URL.createObjectURL(blob);
|
|
68
|
+
const a = document.createElement('a');
|
|
69
|
+
a.href = url;
|
|
70
|
+
a.download = `${page.identity.slug || 'bio'}-bio.txt`;
|
|
71
|
+
a.click();
|
|
72
|
+
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const modal = (
|
|
76
|
+
<div
|
|
77
|
+
className="fixed inset-0 z-[100] flex items-end sm:items-center justify-center p-0 sm:p-4"
|
|
78
|
+
style={{
|
|
79
|
+
...(getBrandingVars(page.branding) as CSSProperties),
|
|
80
|
+
background: 'rgba(0,0,0,0.6)',
|
|
81
|
+
backdropFilter: 'blur(4px)',
|
|
82
|
+
fontFamily: 'var(--pk-font-body)',
|
|
83
|
+
}}
|
|
84
|
+
onClick={() => setOpen(false)}
|
|
85
|
+
>
|
|
86
|
+
<div
|
|
87
|
+
className="w-full sm:max-w-lg max-h-[88vh] overflow-y-auto rounded-t-3xl sm:rounded-3xl"
|
|
88
|
+
style={{ backgroundColor: 'var(--pk-bg)', border: '1px solid rgba(255,255,255,0.1)' }}
|
|
89
|
+
onClick={(e) => e.stopPropagation()}
|
|
90
|
+
>
|
|
91
|
+
{/* Header */}
|
|
92
|
+
<div
|
|
93
|
+
className="sticky top-0 flex items-center justify-between px-5 py-4 z-10"
|
|
94
|
+
style={{ backgroundColor: 'var(--pk-bg)', borderBottom: '1px solid rgba(255,255,255,0.08)' }}
|
|
95
|
+
>
|
|
96
|
+
<div className="flex items-center gap-2">
|
|
97
|
+
<Download size={18} style={{ color: 'var(--pk-primary)' }} />
|
|
98
|
+
<h3 className="text-base font-bold" style={{ color: 'var(--pk-text)', fontFamily: 'var(--pk-font-heading)' }}>
|
|
99
|
+
Mídia Kit
|
|
100
|
+
</h3>
|
|
101
|
+
</div>
|
|
102
|
+
<button
|
|
103
|
+
type="button"
|
|
104
|
+
aria-label="Fechar"
|
|
105
|
+
onClick={() => setOpen(false)}
|
|
106
|
+
className="flex items-center justify-center w-8 h-8 rounded-full"
|
|
107
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.08)', color: 'var(--pk-text)' }}
|
|
108
|
+
>
|
|
109
|
+
<X size={16} />
|
|
110
|
+
</button>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<div className="px-5 py-5 space-y-6">
|
|
114
|
+
{/* Full kit (Drive) */}
|
|
115
|
+
{driveUrl && (
|
|
116
|
+
<a
|
|
117
|
+
href={driveUrl}
|
|
118
|
+
target="_blank"
|
|
119
|
+
rel="noopener noreferrer"
|
|
120
|
+
className="flex items-center gap-3 p-3 rounded-xl transition-transform hover:scale-[1.01]"
|
|
121
|
+
style={{ backgroundColor: 'var(--pk-primary)', color: 'var(--pk-bg)' }}
|
|
122
|
+
>
|
|
123
|
+
<ExternalLink size={18} />
|
|
124
|
+
<span className="text-sm font-semibold">Abrir kit completo (Drive)</span>
|
|
125
|
+
</a>
|
|
126
|
+
)}
|
|
127
|
+
|
|
128
|
+
{/* Bio */}
|
|
129
|
+
{bioText && (
|
|
130
|
+
<section>
|
|
131
|
+
<h4 className="text-xs font-bold uppercase tracking-wider mb-2 opacity-60" style={{ color: 'var(--pk-muted)' }}>
|
|
132
|
+
Bio / Release
|
|
133
|
+
</h4>
|
|
134
|
+
<p
|
|
135
|
+
className="text-sm leading-relaxed max-h-32 overflow-y-auto p-3 rounded-xl"
|
|
136
|
+
style={{ color: 'var(--pk-muted)', backgroundColor: 'rgba(255,255,255,0.04)' }}
|
|
137
|
+
>
|
|
138
|
+
{bioText.replace(/[*#]/g, '')}
|
|
139
|
+
</p>
|
|
140
|
+
<div className="flex gap-2 mt-2">
|
|
141
|
+
<button
|
|
142
|
+
type="button"
|
|
143
|
+
onClick={copyBio}
|
|
144
|
+
className="flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold rounded-full"
|
|
145
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.08)', color: 'var(--pk-text)' }}
|
|
146
|
+
>
|
|
147
|
+
{copied ? <Check size={13} /> : <Copy size={13} />} {copied ? 'Copiado' : 'Copiar'}
|
|
148
|
+
</button>
|
|
149
|
+
<button
|
|
150
|
+
type="button"
|
|
151
|
+
onClick={downloadBio}
|
|
152
|
+
className="flex items-center gap-1.5 px-3 py-1.5 text-xs font-semibold rounded-full"
|
|
153
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.08)', color: 'var(--pk-text)' }}
|
|
154
|
+
>
|
|
155
|
+
<FileText size={13} /> .txt
|
|
156
|
+
</button>
|
|
157
|
+
</div>
|
|
158
|
+
</section>
|
|
159
|
+
)}
|
|
160
|
+
|
|
161
|
+
{/* Photos + logo */}
|
|
162
|
+
{images.length > 0 && (
|
|
163
|
+
<section>
|
|
164
|
+
<h4 className="text-xs font-bold uppercase tracking-wider mb-2 opacity-60" style={{ color: 'var(--pk-muted)' }}>
|
|
165
|
+
Fotos & Logo
|
|
166
|
+
</h4>
|
|
167
|
+
<div className="grid grid-cols-3 gap-2">
|
|
168
|
+
{images.map((img) => (
|
|
169
|
+
<a
|
|
170
|
+
key={img.url}
|
|
171
|
+
href={img.url}
|
|
172
|
+
download={fileName(img.url, `${page.identity.slug}-${img.label}`)}
|
|
173
|
+
className="group relative aspect-square overflow-hidden rounded-xl"
|
|
174
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.06)' }}
|
|
175
|
+
title={`Baixar ${img.label}`}
|
|
176
|
+
>
|
|
177
|
+
<img
|
|
178
|
+
src={img.url}
|
|
179
|
+
alt={img.label}
|
|
180
|
+
className={`w-full h-full ${img.kind === 'logo' ? 'object-contain p-3' : 'object-cover'}`}
|
|
181
|
+
loading="lazy"
|
|
182
|
+
/>
|
|
183
|
+
<div className="absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity"
|
|
184
|
+
style={{ background: 'rgba(0,0,0,0.45)' }}
|
|
185
|
+
>
|
|
186
|
+
<Download size={20} style={{ color: '#fff' }} />
|
|
187
|
+
</div>
|
|
188
|
+
</a>
|
|
189
|
+
))}
|
|
190
|
+
</div>
|
|
191
|
+
</section>
|
|
192
|
+
)}
|
|
193
|
+
|
|
194
|
+
{/* Extra resources */}
|
|
195
|
+
{extras.length > 0 && (
|
|
196
|
+
<section>
|
|
197
|
+
<h4 className="text-xs font-bold uppercase tracking-wider mb-2 opacity-60" style={{ color: 'var(--pk-muted)' }}>
|
|
198
|
+
Recursos
|
|
199
|
+
</h4>
|
|
200
|
+
<div className="flex flex-col gap-2">
|
|
201
|
+
{extras.map((a) => (
|
|
202
|
+
<a
|
|
203
|
+
key={a.url}
|
|
204
|
+
href={a.url}
|
|
205
|
+
target="_blank"
|
|
206
|
+
rel="noopener noreferrer"
|
|
207
|
+
download={a.kind !== 'link' ? fileName(a.url, a.label) : undefined}
|
|
208
|
+
className="flex items-center gap-3 p-3 rounded-xl"
|
|
209
|
+
style={{ backgroundColor: 'rgba(255,255,255,0.05)', color: 'var(--pk-text)' }}
|
|
210
|
+
>
|
|
211
|
+
{a.kind === 'link' ? <ExternalLink size={16} /> : <FileText size={16} />}
|
|
212
|
+
<span className="text-sm font-medium">{a.label}</span>
|
|
213
|
+
<Download size={15} className="ml-auto opacity-50" />
|
|
214
|
+
</a>
|
|
215
|
+
))}
|
|
216
|
+
</div>
|
|
217
|
+
</section>
|
|
218
|
+
)}
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
const isFab = variant === 'fab';
|
|
225
|
+
return (
|
|
226
|
+
<>
|
|
227
|
+
<button
|
|
228
|
+
type="button"
|
|
229
|
+
onClick={() => setOpen(true)}
|
|
230
|
+
aria-label="Baixar mídia kit"
|
|
231
|
+
title="Mídia Kit"
|
|
232
|
+
className={`flex items-center justify-center rounded-full transition-transform hover:scale-110 ${isFab ? 'w-12 h-12' : 'w-11 h-11'}`}
|
|
233
|
+
style={
|
|
234
|
+
isFab
|
|
235
|
+
? {
|
|
236
|
+
color: 'var(--pk-primary)',
|
|
237
|
+
border: '1.5px solid var(--pk-primary)',
|
|
238
|
+
backgroundColor: 'color-mix(in srgb, var(--pk-bg) 70%, transparent)',
|
|
239
|
+
backdropFilter: 'blur(6px)',
|
|
240
|
+
}
|
|
241
|
+
: { backgroundColor: 'rgba(255,255,255,0.07)', color: 'var(--pk-text)' }
|
|
242
|
+
}
|
|
243
|
+
>
|
|
244
|
+
<Download size={isFab ? 20 : 19} />
|
|
245
|
+
</button>
|
|
246
|
+
{open && typeof document !== 'undefined' && createPortal(modal, document.body)}
|
|
247
|
+
</>
|
|
248
|
+
);
|
|
249
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -323,6 +323,15 @@ export interface BioPage {
|
|
|
323
323
|
* alternating section backgrounds).
|
|
324
324
|
*/
|
|
325
325
|
layout?: 'scroll' | 'hub';
|
|
326
|
+
/**
|
|
327
|
+
* Press/media kit — a downloadable-assets modal for bookers. Photos, logo and
|
|
328
|
+
* bio are auto-derived from the page; add `driveUrl` (full kit) and extra
|
|
329
|
+
* `assets` (rider, tech sheet, etc.) here.
|
|
330
|
+
*/
|
|
331
|
+
mediaKit?: {
|
|
332
|
+
driveUrl?: string;
|
|
333
|
+
assets?: { label: string; url: string; kind?: 'image' | 'logo' | 'doc' | 'audio' | 'link' }[];
|
|
334
|
+
};
|
|
326
335
|
template?: string;
|
|
327
336
|
updatedAt?: string;
|
|
328
337
|
}
|
package/dist/index.cjs
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var react = require('react');
|
|
4
|
-
|
|
5
|
-
// src/index.ts
|
|
6
|
-
function EditorPlaceholder() {
|
|
7
|
-
return react.createElement(
|
|
8
|
-
"div",
|
|
9
|
-
{ className: "p-8 text-sm text-muted-foreground" },
|
|
10
|
-
"O editor de Link in Bio chega no v2. A p\xE1gina p\xFAblica j\xE1 est\xE1 dispon\xEDvel em /p/:slug."
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
function createLinkInBioPlugin(options = {}) {
|
|
14
|
-
const basePath = options.basePath ?? "/link-in-bio";
|
|
15
|
-
return {
|
|
16
|
-
id: "linkinbio",
|
|
17
|
-
name: "Link in Bio",
|
|
18
|
-
icon: "Link",
|
|
19
|
-
version: "0.1.0",
|
|
20
|
-
scope: options.scope ?? "universal",
|
|
21
|
-
verticalId: options.verticalId,
|
|
22
|
-
scaffolds: ["saas", "website"],
|
|
23
|
-
defaultEnabled: options.defaultEnabled ?? false,
|
|
24
|
-
dependencies: [],
|
|
25
|
-
navigation: [{ section: "main", position: 10, label: "Link in Bio", route: basePath, icon: "Link" }],
|
|
26
|
-
routes: [{ path: basePath, component: EditorPlaceholder, guard: "authenticated" }],
|
|
27
|
-
widgets: []
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
exports.createLinkInBioPlugin = createLinkInBioPlugin;
|
|
32
|
-
//# sourceMappingURL=index.cjs.map
|
|
33
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["createElement"],"mappings":";;;;;AAoBA,SAAS,iBAAA,GAAoB;AAC3B,EAAA,OAAOA,mBAAA;AAAA,IACL,KAAA;AAAA,IACA,EAAE,WAAW,mCAAA,EAAoC;AAAA,IACjD;AAAA,GACF;AACF;AAEO,SAAS,qBAAA,CAAsB,OAAA,GAAkC,EAAC,EAAmB;AAC1F,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,cAAA;AACrC,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,WAAA;AAAA,IACJ,IAAA,EAAM,aAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,QAAQ,KAAA,IAAS,WAAA;AAAA,IACxB,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,SAAA,EAAW,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,IAC7B,cAAA,EAAgB,QAAQ,cAAA,IAAkB,KAAA;AAAA,IAC1C,cAAc,EAAC;AAAA,IACf,UAAA,EAAY,CAAC,EAAE,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,EAAA,EAAI,KAAA,EAAO,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM,QAAQ,CAAA;AAAA,IACnG,MAAA,EAAQ,CAAC,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,iBAAA,EAAmB,KAAA,EAAO,eAAA,EAAiB,CAAA;AAAA,IACjF,SAAS;AAAC,GACZ;AACF","file":"index.cjs","sourcesContent":["// ---------------------------------------------------------------------------\n// @fayz-ai/plugin-linkinbio — admin entry (v1 stub).\n//\n// The public bio page ships today via the `/public` entry\n// (createPublicLinkInBioPlugin). The in-app editor / settings surface is a v2\n// follow-up: this factory returns a minimal manifest with a placeholder view so\n// the plugin can be listed in an admin shell without shipping the editor yet.\n//\n// For the customer-facing page, import from '@fayz-ai/plugin-linkinbio/public'.\n// ---------------------------------------------------------------------------\nimport { createElement } from 'react';\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core';\n\nexport interface LinkInBioPluginOptions {\n basePath?: string;\n scope?: PluginScope;\n verticalId?: VerticalId;\n defaultEnabled?: boolean;\n}\n\nfunction EditorPlaceholder() {\n return createElement(\n 'div',\n { className: 'p-8 text-sm text-muted-foreground' },\n 'O editor de Link in Bio chega no v2. A página pública já está disponível em /p/:slug.',\n );\n}\n\nexport function createLinkInBioPlugin(options: LinkInBioPluginOptions = {}): PluginManifest {\n const basePath = options.basePath ?? '/link-in-bio';\n return {\n id: 'linkinbio',\n name: 'Link in Bio',\n icon: 'Link',\n version: '0.1.0',\n scope: options.scope ?? 'universal',\n verticalId: options.verticalId,\n scaffolds: ['saas', 'website'],\n defaultEnabled: options.defaultEnabled ?? false,\n dependencies: [],\n navigation: [{ section: 'main', position: 10, label: 'Link in Bio', route: basePath, icon: 'Link' }],\n routes: [{ path: basePath, component: EditorPlaceholder, guard: 'authenticated' }],\n widgets: [],\n };\n}\n\nexport type {\n BioPage,\n BioBlock,\n BioBranding,\n BioIdentity,\n BioSEO,\n BioSocialLink,\n BioMediaItem,\n BioFloatingCTA,\n} from './types';\n"]}
|