@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.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +52 -0
  3. package/dist/index.cjs +33 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.ts +10 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +31 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/public/BioPage.d.ts +8 -0
  10. package/dist/public/BioPage.d.ts.map +1 -0
  11. package/dist/public/BioPageRenderer.d.ts +11 -0
  12. package/dist/public/BioPageRenderer.d.ts.map +1 -0
  13. package/dist/public/__tests__/manifest.test.d.ts +2 -0
  14. package/dist/public/__tests__/manifest.test.d.ts.map +1 -0
  15. package/dist/public/blocks/BioSection.d.ts +7 -0
  16. package/dist/public/blocks/BioSection.d.ts.map +1 -0
  17. package/dist/public/blocks/CTASection.d.ts +7 -0
  18. package/dist/public/blocks/CTASection.d.ts.map +1 -0
  19. package/dist/public/blocks/EmbedSection.d.ts +7 -0
  20. package/dist/public/blocks/EmbedSection.d.ts.map +1 -0
  21. package/dist/public/blocks/FeaturedBlock.d.ts +7 -0
  22. package/dist/public/blocks/FeaturedBlock.d.ts.map +1 -0
  23. package/dist/public/blocks/GallerySection.d.ts +7 -0
  24. package/dist/public/blocks/GallerySection.d.ts.map +1 -0
  25. package/dist/public/blocks/HeroSection.d.ts +9 -0
  26. package/dist/public/blocks/HeroSection.d.ts.map +1 -0
  27. package/dist/public/blocks/LinksBlock.d.ts +7 -0
  28. package/dist/public/blocks/LinksBlock.d.ts.map +1 -0
  29. package/dist/public/blocks/MusicReleasesBlock.d.ts +7 -0
  30. package/dist/public/blocks/MusicReleasesBlock.d.ts.map +1 -0
  31. package/dist/public/blocks/ProfileHeader.d.ts +8 -0
  32. package/dist/public/blocks/ProfileHeader.d.ts.map +1 -0
  33. package/dist/public/blocks/ProjectSection.d.ts +7 -0
  34. package/dist/public/blocks/ProjectSection.d.ts.map +1 -0
  35. package/dist/public/blocks/SocialLinksSection.d.ts +7 -0
  36. package/dist/public/blocks/SocialLinksSection.d.ts.map +1 -0
  37. package/dist/public/blocks/StatsSection.d.ts +7 -0
  38. package/dist/public/blocks/StatsSection.d.ts.map +1 -0
  39. package/dist/public/blocks/TextSection.d.ts +7 -0
  40. package/dist/public/blocks/TextSection.d.ts.map +1 -0
  41. package/dist/public/blocks/TourDatesBlock.d.ts +7 -0
  42. package/dist/public/blocks/TourDatesBlock.d.ts.map +1 -0
  43. package/dist/public/blocks/VenueListSection.d.ts +7 -0
  44. package/dist/public/blocks/VenueListSection.d.ts.map +1 -0
  45. package/dist/public/blocks/VideoGridSection.d.ts +7 -0
  46. package/dist/public/blocks/VideoGridSection.d.ts.map +1 -0
  47. package/dist/public/blocks/index.d.ts +17 -0
  48. package/dist/public/blocks/index.d.ts.map +1 -0
  49. package/dist/public/components/Carousel.d.ts +11 -0
  50. package/dist/public/components/Carousel.d.ts.map +1 -0
  51. package/dist/public/components/PlatformIcon.d.ts +9 -0
  52. package/dist/public/components/PlatformIcon.d.ts.map +1 -0
  53. package/dist/public/components/Reveal.d.ts +13 -0
  54. package/dist/public/components/Reveal.d.ts.map +1 -0
  55. package/dist/public/context.d.ts +18 -0
  56. package/dist/public/context.d.ts.map +1 -0
  57. package/dist/public/createPublicLinkInBioPlugin.d.ts +38 -0
  58. package/dist/public/createPublicLinkInBioPlugin.d.ts.map +1 -0
  59. package/dist/public/data.d.ts +11 -0
  60. package/dist/public/data.d.ts.map +1 -0
  61. package/dist/public/data.supabase.d.ts +11 -0
  62. package/dist/public/data.supabase.d.ts.map +1 -0
  63. package/dist/public/index.cjs +1750 -0
  64. package/dist/public/index.cjs.map +1 -0
  65. package/dist/public/index.d.ts +18 -0
  66. package/dist/public/index.d.ts.map +1 -0
  67. package/dist/public/index.js +1731 -0
  68. package/dist/public/index.js.map +1 -0
  69. package/dist/public/registry.d.ts +17 -0
  70. package/dist/public/registry.d.ts.map +1 -0
  71. package/dist/public/utils.d.ts +9 -0
  72. package/dist/public/utils.d.ts.map +1 -0
  73. package/dist/types.d.ts +251 -0
  74. package/dist/types.d.ts.map +1 -0
  75. package/package.json +68 -0
  76. package/src/index.ts +56 -0
  77. package/src/public/BioPage.tsx +123 -0
  78. package/src/public/BioPageRenderer.tsx +249 -0
  79. package/src/public/__tests__/manifest.test.ts +39 -0
  80. package/src/public/blocks/BioSection.tsx +66 -0
  81. package/src/public/blocks/CTASection.tsx +56 -0
  82. package/src/public/blocks/EmbedSection.tsx +53 -0
  83. package/src/public/blocks/FeaturedBlock.tsx +70 -0
  84. package/src/public/blocks/GallerySection.tsx +148 -0
  85. package/src/public/blocks/HeroSection.tsx +107 -0
  86. package/src/public/blocks/LinksBlock.tsx +80 -0
  87. package/src/public/blocks/MusicReleasesBlock.tsx +83 -0
  88. package/src/public/blocks/ProfileHeader.tsx +176 -0
  89. package/src/public/blocks/ProjectSection.tsx +158 -0
  90. package/src/public/blocks/SocialLinksSection.tsx +125 -0
  91. package/src/public/blocks/StatsSection.tsx +46 -0
  92. package/src/public/blocks/TextSection.tsx +29 -0
  93. package/src/public/blocks/TourDatesBlock.tsx +83 -0
  94. package/src/public/blocks/VenueListSection.tsx +91 -0
  95. package/src/public/blocks/VideoGridSection.tsx +105 -0
  96. package/src/public/blocks/index.ts +16 -0
  97. package/src/public/components/Carousel.tsx +90 -0
  98. package/src/public/components/PlatformIcon.tsx +56 -0
  99. package/src/public/components/Reveal.tsx +58 -0
  100. package/src/public/context.tsx +30 -0
  101. package/src/public/createPublicLinkInBioPlugin.ts +81 -0
  102. package/src/public/data.supabase.ts +31 -0
  103. package/src/public/data.ts +29 -0
  104. package/src/public/index.ts +75 -0
  105. package/src/public/registry.ts +40 -0
  106. package/src/public/utils.ts +102 -0
  107. 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"]}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manifest.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.test.d.ts","sourceRoot":"","sources":["../../../src/public/__tests__/manifest.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { BioSection as BioSectionType } from '../../types';
2
+ interface Props {
3
+ section: BioSectionType;
4
+ }
5
+ export default function BioSection({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=BioSection.d.ts.map
@@ -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,7 @@
1
+ import type { CTASection as CTASectionType } from '../../types';
2
+ interface Props {
3
+ section: CTASectionType;
4
+ }
5
+ export default function CTASection({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=CTASection.d.ts.map
@@ -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,7 @@
1
+ import type { FeaturedSection } from '../../types';
2
+ interface Props {
3
+ section: FeaturedSection;
4
+ }
5
+ export default function FeaturedBlock({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=FeaturedBlock.d.ts.map
@@ -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,7 @@
1
+ import type { LinksSection } from '../../types';
2
+ interface Props {
3
+ section: LinksSection;
4
+ }
5
+ export default function LinksBlock({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=LinksBlock.d.ts.map
@@ -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,7 @@
1
+ import type { TextSection as TextSectionType } from '../../types';
2
+ interface Props {
3
+ section: TextSectionType;
4
+ }
5
+ export default function TextSection({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=TextSection.d.ts.map
@@ -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,7 @@
1
+ import type { TourDatesSection } from '../../types';
2
+ interface Props {
3
+ section: TourDatesSection;
4
+ }
5
+ export default function TourDatesBlock({ section }: Props): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=TourDatesBlock.d.ts.map
@@ -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"}