@fayz-ai/plugin-linkinbio 0.9.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/LICENSE +21 -0
- package/README.md +52 -0
- package/dist/index.cjs +33 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/public/BioPage.d.ts +8 -0
- package/dist/public/BioPage.d.ts.map +1 -0
- package/dist/public/BioPageRenderer.d.ts +11 -0
- package/dist/public/BioPageRenderer.d.ts.map +1 -0
- package/dist/public/__tests__/manifest.test.d.ts +2 -0
- package/dist/public/__tests__/manifest.test.d.ts.map +1 -0
- package/dist/public/blocks/BioSection.d.ts +7 -0
- package/dist/public/blocks/BioSection.d.ts.map +1 -0
- package/dist/public/blocks/CTASection.d.ts +7 -0
- package/dist/public/blocks/CTASection.d.ts.map +1 -0
- package/dist/public/blocks/EmbedSection.d.ts +7 -0
- package/dist/public/blocks/EmbedSection.d.ts.map +1 -0
- package/dist/public/blocks/FeaturedBlock.d.ts +7 -0
- package/dist/public/blocks/FeaturedBlock.d.ts.map +1 -0
- package/dist/public/blocks/GallerySection.d.ts +7 -0
- package/dist/public/blocks/GallerySection.d.ts.map +1 -0
- package/dist/public/blocks/HeroSection.d.ts +9 -0
- package/dist/public/blocks/HeroSection.d.ts.map +1 -0
- package/dist/public/blocks/LinksBlock.d.ts +7 -0
- package/dist/public/blocks/LinksBlock.d.ts.map +1 -0
- package/dist/public/blocks/MusicReleasesBlock.d.ts +7 -0
- package/dist/public/blocks/MusicReleasesBlock.d.ts.map +1 -0
- package/dist/public/blocks/ProfileHeader.d.ts +8 -0
- package/dist/public/blocks/ProfileHeader.d.ts.map +1 -0
- package/dist/public/blocks/ProjectSection.d.ts +7 -0
- package/dist/public/blocks/ProjectSection.d.ts.map +1 -0
- package/dist/public/blocks/SocialLinksSection.d.ts +7 -0
- package/dist/public/blocks/SocialLinksSection.d.ts.map +1 -0
- package/dist/public/blocks/StatsSection.d.ts +7 -0
- package/dist/public/blocks/StatsSection.d.ts.map +1 -0
- package/dist/public/blocks/TextSection.d.ts +7 -0
- package/dist/public/blocks/TextSection.d.ts.map +1 -0
- package/dist/public/blocks/TourDatesBlock.d.ts +7 -0
- package/dist/public/blocks/TourDatesBlock.d.ts.map +1 -0
- package/dist/public/blocks/VenueListSection.d.ts +7 -0
- package/dist/public/blocks/VenueListSection.d.ts.map +1 -0
- package/dist/public/blocks/VideoGridSection.d.ts +7 -0
- package/dist/public/blocks/VideoGridSection.d.ts.map +1 -0
- package/dist/public/blocks/index.d.ts +17 -0
- package/dist/public/blocks/index.d.ts.map +1 -0
- package/dist/public/components/Carousel.d.ts +11 -0
- package/dist/public/components/Carousel.d.ts.map +1 -0
- package/dist/public/components/PlatformIcon.d.ts +9 -0
- package/dist/public/components/PlatformIcon.d.ts.map +1 -0
- package/dist/public/components/Reveal.d.ts +13 -0
- package/dist/public/components/Reveal.d.ts.map +1 -0
- package/dist/public/context.d.ts +18 -0
- package/dist/public/context.d.ts.map +1 -0
- package/dist/public/createPublicLinkInBioPlugin.d.ts +38 -0
- package/dist/public/createPublicLinkInBioPlugin.d.ts.map +1 -0
- package/dist/public/data.d.ts +11 -0
- package/dist/public/data.d.ts.map +1 -0
- package/dist/public/data.supabase.d.ts +11 -0
- package/dist/public/data.supabase.d.ts.map +1 -0
- package/dist/public/index.cjs +1750 -0
- package/dist/public/index.cjs.map +1 -0
- package/dist/public/index.d.ts +18 -0
- package/dist/public/index.d.ts.map +1 -0
- package/dist/public/index.js +1731 -0
- package/dist/public/index.js.map +1 -0
- package/dist/public/registry.d.ts +17 -0
- package/dist/public/registry.d.ts.map +1 -0
- package/dist/public/utils.d.ts +9 -0
- package/dist/public/utils.d.ts.map +1 -0
- package/dist/types.d.ts +251 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +68 -0
- package/src/index.ts +56 -0
- package/src/public/BioPage.tsx +123 -0
- package/src/public/BioPageRenderer.tsx +249 -0
- package/src/public/__tests__/manifest.test.ts +39 -0
- package/src/public/blocks/BioSection.tsx +66 -0
- package/src/public/blocks/CTASection.tsx +56 -0
- package/src/public/blocks/EmbedSection.tsx +53 -0
- package/src/public/blocks/FeaturedBlock.tsx +70 -0
- package/src/public/blocks/GallerySection.tsx +148 -0
- package/src/public/blocks/HeroSection.tsx +107 -0
- package/src/public/blocks/LinksBlock.tsx +80 -0
- package/src/public/blocks/MusicReleasesBlock.tsx +83 -0
- package/src/public/blocks/ProfileHeader.tsx +176 -0
- package/src/public/blocks/ProjectSection.tsx +158 -0
- package/src/public/blocks/SocialLinksSection.tsx +125 -0
- package/src/public/blocks/StatsSection.tsx +46 -0
- package/src/public/blocks/TextSection.tsx +29 -0
- package/src/public/blocks/TourDatesBlock.tsx +83 -0
- package/src/public/blocks/VenueListSection.tsx +91 -0
- package/src/public/blocks/VideoGridSection.tsx +105 -0
- package/src/public/blocks/index.ts +16 -0
- package/src/public/components/Carousel.tsx +90 -0
- package/src/public/components/PlatformIcon.tsx +56 -0
- package/src/public/components/Reveal.tsx +58 -0
- package/src/public/context.tsx +30 -0
- package/src/public/createPublicLinkInBioPlugin.ts +81 -0
- package/src/public/data.supabase.ts +31 -0
- package/src/public/data.ts +29 -0
- package/src/public/index.ts +75 -0
- package/src/public/registry.ts +40 -0
- package/src/public/utils.ts +102 -0
- package/src/types.ts +328 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Faya Labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# @fayz-ai/plugin-linkinbio
|
|
2
|
+
|
|
3
|
+
Komi/linktree-style **link-in-bio** pages for any creator. A `BioPage` is an
|
|
4
|
+
identity + branding + an ordered list of content blocks, rendered as a public,
|
|
5
|
+
unauthenticated page (`/p/:slug`).
|
|
6
|
+
|
|
7
|
+
Status: **preview**. v1 ships the public page; the in-app editor is a v2 follow-up.
|
|
8
|
+
|
|
9
|
+
## Public usage (website host)
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { setGlobalSupabaseClient } from '@fayz-ai/core'
|
|
13
|
+
import { createPublicLinkInBioPlugin } from '@fayz-ai/plugin-linkinbio/public'
|
|
14
|
+
|
|
15
|
+
// Optional: point the provider at Supabase (`press_kits` table). Without a
|
|
16
|
+
// client, the plugin serves the seeded mock catalog.
|
|
17
|
+
setGlobalSupabaseClient(createClient(url, anonKey))
|
|
18
|
+
|
|
19
|
+
const bio = createPublicLinkInBioPlugin({
|
|
20
|
+
basePath: '/p',
|
|
21
|
+
seed: { perez: perezBioPage }, // mock/demo content by slug
|
|
22
|
+
poweredBy: { label: 'Powered by The Channel', url: '/' },
|
|
23
|
+
titleSuffix: 'Press Kit',
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
// bio.Provider wraps the app root; bio.manifest.routes has one guard:'public'
|
|
27
|
+
// route ({ path: '/p/:slug', component: BioPage }) to mount into your router.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Block registry (extensibility seam)
|
|
31
|
+
|
|
32
|
+
The 11 built-in blocks (`hero`, `bio`, `gallery`, `video-grid`, `social-links`,
|
|
33
|
+
`embed`, `project`, `stats`, `venue-list`, `cta`, `text`) render via the built-in
|
|
34
|
+
switch. Register niche block types without forking:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { registerBlock } from '@fayz-ai/plugin-linkinbio/public'
|
|
38
|
+
registerBlock('tour-map', ({ block }) => <TourMap stops={block.stops} />)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Data
|
|
42
|
+
|
|
43
|
+
`BioPageDataProvider.getBySlug(slug)` — mock (seed map) or Supabase. The Supabase
|
|
44
|
+
provider reads a `press_kits`-shaped table: `slug`, `is_published`, and a jsonb
|
|
45
|
+
`data` column holding the full `BioPage` payload, with anon SELECT allowed when
|
|
46
|
+
`is_published` is true.
|
|
47
|
+
|
|
48
|
+
## Styling
|
|
49
|
+
|
|
50
|
+
Blocks are token-only: `getBrandingVars(branding)` maps the page branding to
|
|
51
|
+
`--pk-*` CSS variables set on the page container. Tailwind utility classes are
|
|
52
|
+
used for layout; no design-system CSS import is required.
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core';
|
|
2
|
+
export interface LinkInBioPluginOptions {
|
|
3
|
+
basePath?: string;
|
|
4
|
+
scope?: PluginScope;
|
|
5
|
+
verticalId?: VerticalId;
|
|
6
|
+
defaultEnabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function createLinkInBioPlugin(options?: LinkInBioPluginOptions): PluginManifest;
|
|
9
|
+
export type { BioPage, BioBlock, BioBranding, BioIdentity, BioSEO, BioSocialLink, BioMediaItem, BioFloatingCTA, } from './types';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAUD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,cAAc,CAgB1F;AAED,YAAY,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createElement } from 'react';
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
function EditorPlaceholder() {
|
|
5
|
+
return createElement(
|
|
6
|
+
"div",
|
|
7
|
+
{ className: "p-8 text-sm text-muted-foreground" },
|
|
8
|
+
"O editor de Link in Bio chega no v2. A p\xE1gina p\xFAblica j\xE1 est\xE1 dispon\xEDvel em /p/:slug."
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
function createLinkInBioPlugin(options = {}) {
|
|
12
|
+
const basePath = options.basePath ?? "/link-in-bio";
|
|
13
|
+
return {
|
|
14
|
+
id: "linkinbio",
|
|
15
|
+
name: "Link in Bio",
|
|
16
|
+
icon: "Link",
|
|
17
|
+
version: "0.1.0",
|
|
18
|
+
scope: options.scope ?? "universal",
|
|
19
|
+
verticalId: options.verticalId,
|
|
20
|
+
scaffolds: ["saas", "website"],
|
|
21
|
+
defaultEnabled: options.defaultEnabled ?? false,
|
|
22
|
+
dependencies: [],
|
|
23
|
+
navigation: [{ section: "main", position: 10, label: "Link in Bio", route: basePath, icon: "Link" }],
|
|
24
|
+
routes: [{ path: basePath, component: EditorPlaceholder, guard: "authenticated" }],
|
|
25
|
+
widgets: []
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { createLinkInBioPlugin };
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAoBA,SAAS,iBAAA,GAAoB;AAC3B,EAAA,OAAO,aAAA;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.js","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"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public bio-page route component. Reads `:slug` from the URL, resolves the page
|
|
3
|
+
* from the data provider, applies SEO + dynamic Google Fonts + branding CSS vars,
|
|
4
|
+
* and renders the block list. Mounted by the plugin manifest as a guard:'public'
|
|
5
|
+
* route (default path `/p/:slug`).
|
|
6
|
+
*/
|
|
7
|
+
export default function BioPage(): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=BioPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BioPage.d.ts","sourceRoot":"","sources":["../../src/public/BioPage.tsx"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,gCA6G9B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BioPage } from '../types';
|
|
2
|
+
export interface BioPageRendererProps {
|
|
3
|
+
page: BioPage;
|
|
4
|
+
/** Optional "made with" footer link. Omit for just the copyright line. */
|
|
5
|
+
poweredBy?: {
|
|
6
|
+
label: string;
|
|
7
|
+
url: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export default function BioPageRenderer({ page, poweredBy }: BioPageRendererProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=BioPageRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BioPageRenderer.d.ts","sourceRoot":"","sources":["../../src/public/BioPageRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,UAAU,CAAC;AAoBlD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,0EAA0E;IAC1E,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAKD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAyNhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.test.d.ts","sourceRoot":"","sources":["../../../src/public/__tests__/manifest.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BioSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/BioSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,UAAU,KAAK;IACb,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BA0DpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CTASection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/CTASection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,UAAU,KAAK;IACb,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAgDpD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EmbedSection as EmbedSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: EmbedSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function EmbedSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=EmbedSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbedSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/EmbedSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BA8CtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeaturedBlock.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/FeaturedBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,UAAU,KAAK;IACb,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BA8DvD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GallerySection as GallerySectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: GallerySectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function GallerySection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=GallerySection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GallerySection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/GallerySection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAEtF,UAAU,KAAK;IACb,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAsDD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAwFxD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HeroSection as HeroSectionType, BioIdentity, BioBranding } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: HeroSectionType;
|
|
4
|
+
identity: BioIdentity;
|
|
5
|
+
branding: BioBranding;
|
|
6
|
+
}
|
|
7
|
+
export default function HeroSection({ section, identity, branding }: Props): import("react").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=HeroSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/HeroSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5F,UAAU,KAAK;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,+BAkGzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinksBlock.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/LinksBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,aAAa,CAAC;AAG9D,UAAU,KAAK;IACb,OAAO,EAAE,YAAY,CAAC;CACvB;AAsDD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAmBpD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MusicReleasesSection } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: MusicReleasesSection;
|
|
4
|
+
}
|
|
5
|
+
export default function MusicReleasesBlock({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=MusicReleasesBlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MusicReleasesBlock.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/MusicReleasesBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,aAAa,CAAC;AAG1E,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AA8CD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BA8B5D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProfileHeaderSection, BioPage } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: ProfileHeaderSection;
|
|
4
|
+
page: BioPage;
|
|
5
|
+
}
|
|
6
|
+
export default function ProfileHeader({ section, page }: Props): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ProfileHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileHeader.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/ProfileHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIjE,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,+BAoK7D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProjectSection as ProjectSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: ProjectSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function ProjectSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ProjectSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/ProjectSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGxE,UAAU,KAAK;IACb,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAsJxD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SocialLinksSection as SocialLinksSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: SocialLinksSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function SocialLinksSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=SocialLinksSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialLinksSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/SocialLinksSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAIhF,UAAU,KAAK;IACb,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAmH5D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StatsSection as StatsSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: StatsSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function StatsSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=StatsSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatsSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/StatsSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAuCtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/TextSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AAGlE,UAAU,KAAK;IACb,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAqBrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TourDatesBlock.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/TourDatesBlock.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAElE,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AA0DD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAmBxD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VenueListSection as VenueListSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: VenueListSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function VenueListSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=VenueListSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VenueListSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/VenueListSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE5E,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAoF1D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { VideoGridSection as VideoGridSectionType } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
section: VideoGridSectionType;
|
|
4
|
+
}
|
|
5
|
+
export default function VideoGridSection({ section }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=VideoGridSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoGridSection.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/VideoGridSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE5E,UAAU,KAAK;IACb,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,+BAkG1D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { default as HeroSection } from './HeroSection';
|
|
2
|
+
export { default as BioSection } from './BioSection';
|
|
3
|
+
export { default as GallerySection } from './GallerySection';
|
|
4
|
+
export { default as VideoGridSection } from './VideoGridSection';
|
|
5
|
+
export { default as SocialLinksSection } from './SocialLinksSection';
|
|
6
|
+
export { default as EmbedSection } from './EmbedSection';
|
|
7
|
+
export { default as ProjectSection } from './ProjectSection';
|
|
8
|
+
export { default as StatsSection } from './StatsSection';
|
|
9
|
+
export { default as VenueListSection } from './VenueListSection';
|
|
10
|
+
export { default as CTASection } from './CTASection';
|
|
11
|
+
export { default as TextSection } from './TextSection';
|
|
12
|
+
export { default as ProfileHeader } from './ProfileHeader';
|
|
13
|
+
export { default as LinksBlock } from './LinksBlock';
|
|
14
|
+
export { default as MusicReleasesBlock } from './MusicReleasesBlock';
|
|
15
|
+
export { default as TourDatesBlock } from './TourDatesBlock';
|
|
16
|
+
export { default as FeaturedBlock } from './FeaturedBlock';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/blocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Komi-style horizontal collection: a section title with prev/next controls and
|
|
4
|
+
* a snap-scrolling track. Mobile-first — the track scrolls by touch and the
|
|
5
|
+
* arrows nudge it by ~80% of the viewport. Arrows disable at the track ends.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Carousel({ title, children }: {
|
|
8
|
+
title?: string;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=Carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../src/public/components/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAiFpF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
/** Renders the real brand icon for a platform, falling back to a generic link glyph. */
|
|
3
|
+
export declare function PlatformIcon({ platform, size, style, className, }: {
|
|
4
|
+
platform: string;
|
|
5
|
+
size?: number;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
className?: string;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=PlatformIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformIcon.d.ts","sourceRoot":"","sources":["../../../src/public/components/PlatformIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,OAAO,CAAC;AAyC1D,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,IAAS,EACT,KAAK,EACL,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAGA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Scroll-reveal wrapper: fades + lifts its children into view the first time
|
|
4
|
+
* they intersect the viewport. Respects prefers-reduced-motion (renders shown).
|
|
5
|
+
* Works inside the page's `fixed inset-0` scroll container because the default
|
|
6
|
+
* IntersectionObserver root is the viewport.
|
|
7
|
+
*/
|
|
8
|
+
export declare function Reveal({ children, delay, className, }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
delay?: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=Reveal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Reveal.d.ts","sourceRoot":"","sources":["../../../src/public/components/Reveal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,KAAS,EACT,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAyCA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { BioPageDataProvider } from './data';
|
|
3
|
+
export interface LinkInBioContextValue {
|
|
4
|
+
provider: BioPageDataProvider;
|
|
5
|
+
/** Optional "made with" footer link rendered by BioPageRenderer. */
|
|
6
|
+
poweredBy?: {
|
|
7
|
+
label: string;
|
|
8
|
+
url: string;
|
|
9
|
+
};
|
|
10
|
+
/** Fallback document.title suffix when a page omits seo.title. Default 'Bio'. */
|
|
11
|
+
titleSuffix: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function LinkInBioProvider({ value, children, }: {
|
|
14
|
+
value: LinkInBioContextValue;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
export declare function useLinkInBio(): LinkInBioContextValue;
|
|
18
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/public/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,oEAAoE;IACpE,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAEA;AAED,wBAAgB,YAAY,IAAI,qBAAqB,CAMpD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import { type PluginManifest, type PluginScope, type VerticalId } from '@fayz-ai/core';
|
|
3
|
+
import type { BioPage } from '../types';
|
|
4
|
+
import { type BioPageDataProvider } from './data';
|
|
5
|
+
export interface PublicLinkInBioOptions {
|
|
6
|
+
/** Mount prefix for the public bio route. The route is `${basePath}/:slug`. Default '/p'. */
|
|
7
|
+
basePath?: string;
|
|
8
|
+
/**
|
|
9
|
+
* When a Supabase client is configured (setGlobalSupabaseClient) this selects
|
|
10
|
+
* the Supabase-backed provider. Omit to force the seeded mock provider.
|
|
11
|
+
*/
|
|
12
|
+
useSupabase?: boolean;
|
|
13
|
+
/** Table holding bio pages (Supabase mode). Default 'press_kits'. */
|
|
14
|
+
table?: string;
|
|
15
|
+
/** Inject a custom provider (overrides the mock/Supabase safe resolver). */
|
|
16
|
+
dataProvider?: BioPageDataProvider;
|
|
17
|
+
/** Seed catalog for the mock provider: slug → BioPage (host config / demo content). */
|
|
18
|
+
seed?: Record<string, BioPage>;
|
|
19
|
+
/** Optional "made with" footer link rendered on every page. */
|
|
20
|
+
poweredBy?: {
|
|
21
|
+
label: string;
|
|
22
|
+
url: string;
|
|
23
|
+
};
|
|
24
|
+
/** Fallback `<title>` suffix when a page omits seo.title. Default 'Bio'. */
|
|
25
|
+
titleSuffix?: string;
|
|
26
|
+
scope?: PluginScope;
|
|
27
|
+
verticalId?: VerticalId;
|
|
28
|
+
defaultEnabled?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface PublicLinkInBioPlugin {
|
|
31
|
+
manifest: PluginManifest;
|
|
32
|
+
Provider: FC<{
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
}>;
|
|
35
|
+
dataProvider: BioPageDataProvider;
|
|
36
|
+
}
|
|
37
|
+
export declare function createPublicLinkInBioPlugin(options?: PublicLinkInBioOptions): PublicLinkInBioPlugin;
|
|
38
|
+
//# sourceMappingURL=createPublicLinkInBioPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPublicLinkInBioPlugin.d.ts","sourceRoot":"","sources":["../../src/public/createPublicLinkInBioPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAK7E,MAAM,WAAW,sBAAsB;IACrC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,+DAA+D;IAC/D,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,EAAE,CAAC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IACtC,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CA2CvG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BioPage } from '../types';
|
|
2
|
+
export interface BioPageDataProvider {
|
|
3
|
+
/** Resolve a published bio page by its public slug, or null when missing/unpublished. */
|
|
4
|
+
getBySlug(slug: string): Promise<BioPage | null>;
|
|
5
|
+
}
|
|
6
|
+
export interface MockBioPageOptions {
|
|
7
|
+
/** slug → BioPage map used as the mock catalog. */
|
|
8
|
+
seed?: Record<string, BioPage>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createMockBioPageProvider(options?: MockBioPageOptions): BioPageDataProvider;
|
|
11
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/public/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAWxC,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,kBAAuB,GAAG,mBAAmB,CAO/F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BioPageDataProvider } from './data';
|
|
2
|
+
export interface SupabaseBioPageOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Table holding bio pages. Defaults to `press_kits` — a jsonb `data` column
|
|
5
|
+
* with the full BioPage payload, plus `slug` and `is_published` columns and
|
|
6
|
+
* an RLS policy allowing anon SELECT when `is_published` is true.
|
|
7
|
+
*/
|
|
8
|
+
table?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createSupabaseBioPageProvider(options?: SupabaseBioPageOptions): BioPageDataProvider;
|
|
11
|
+
//# sourceMappingURL=data.supabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.supabase.d.ts","sourceRoot":"","sources":["../../src/public/data.supabase.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,sBAA2B,GAAG,mBAAmB,CAgBvG"}
|