@fayz-ai/plugin-linkinbio 0.9.0 → 0.9.1

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/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
  }
@@ -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":"AAYA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EACJ,WAAW,GACX,SAAS,GACT,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,aAAa,GACb,QAAQ,GACR,UAAU,GACV,SAAS,GACT,OAAO,GACP,QAAQ,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;IAC3D,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE;QACN,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,cAAc,CAAC;CACjD;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;CACzC;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;QAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAID;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gFAAgF;IAChF,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClD;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+FAA+F;IAC/F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6FAA6F;AAC7F,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,oBAAoB,GACpB,YAAY,GACZ,oBAAoB,GACpB,gBAAgB,GAChB,eAAe,CAAC;AAIpB,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,yFAAyF;IACzF,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;SAAE,EAAE,CAAC;KAC/F,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "preview"
5
5
  },
6
- "version": "0.9.0",
6
+ "version": "0.9.1",
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
  "main": "./dist/index.cjs",
@@ -44,7 +44,8 @@
44
44
  "react-router-dom": "^6.30.0",
45
45
  "tsup": "^8.2.0",
46
46
  "typescript": "^5.5.0",
47
- "vitest": "^2.1.9"
47
+ "vitest": "^2.1.9",
48
+ "@types/react-dom": "^18.3.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
- {socials.length > 0 && (
134
- <div className="flex flex-wrap justify-center gap-3 mt-4 px-4">
135
- {socials.map((link) => (
136
- <a
137
- key={link.platform + link.url}
138
- href={link.url}
139
- target="_blank"
140
- rel="noopener noreferrer"
141
- aria-label={link.label ?? platformLabels[link.platform] ?? 'Link'}
142
- className="flex items-center justify-center w-11 h-11 rounded-full transition-transform hover:scale-110"
143
- style={{ backgroundColor: 'rgba(255,255,255,0.07)', color: 'var(--pk-text)' }}
144
- >
145
- <PlatformIcon platform={link.platform} size={19} />
146
- </a>
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
  }