@frontlit/page-builder 0.1.0-alpha.4 → 0.1.0-alpha.6
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/blocks/index.d.ts +18 -3
- package/dist/blocks/index.js +3 -3
- package/dist/builder/index.d.ts +4 -1
- package/dist/builder/index.js +6 -6
- package/dist/{chunk-BBI7UHOA.js → chunk-BWOGREWJ.js} +3 -3
- package/dist/{chunk-BBI7UHOA.js.map → chunk-BWOGREWJ.js.map} +1 -1
- package/dist/{chunk-K4WCLHMS.js → chunk-FZBLE44D.js} +317 -66
- package/dist/chunk-FZBLE44D.js.map +1 -0
- package/dist/{chunk-J7Z4UW45.js → chunk-OEQJQ4OA.js} +112 -5
- package/dist/chunk-OEQJQ4OA.js.map +1 -0
- package/dist/{chunk-GIKTOAQS.js → chunk-PQTDUFKU.js} +9 -9
- package/dist/chunk-PQTDUFKU.js.map +1 -0
- package/dist/{chunk-36QHCIPM.js → chunk-QMUIISN3.js} +5 -93
- package/dist/chunk-QMUIISN3.js.map +1 -0
- package/dist/{chunk-IU4KATI2.js → chunk-YXLOVEQZ.js} +6 -6
- package/dist/{chunk-IU4KATI2.js.map → chunk-YXLOVEQZ.js.map} +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +3 -3
- package/dist/{image-Bk8kPXwP.d.ts → image-Cv0aSUHD.d.ts} +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.js +1 -1
- package/dist/renderer/index.js +5 -5
- package/dist/server/index.js +151 -53
- package/dist/server/index.js.map +1 -1
- package/dist/server/islands/header-github-stars.d.ts +12 -0
- package/dist/server/islands/header-github-stars.js +31 -0
- package/dist/server/islands/header-github-stars.js.map +1 -0
- package/dist/server/islands/pricing-period-switch.d.ts +20 -0
- package/dist/server/islands/pricing-period-switch.js +151 -0
- package/dist/server/islands/pricing-period-switch.js.map +1 -0
- package/dist/server/primitives.d.ts +2 -0
- package/dist/server/primitives.js +53 -30
- package/dist/server/primitives.js.map +1 -1
- package/dist/server/schema.d.ts +38 -0
- package/dist/server/schema.js +17 -2
- package/dist/server/schema.js.map +1 -1
- package/dist/styles.css +12 -0
- package/package.json +1 -1
- package/schema/page.v1.json +29 -1
- package/schema/site.v1.json +8 -0
- package/dist/chunk-36QHCIPM.js.map +0 -1
- package/dist/chunk-GIKTOAQS.js.map +0 -1
- package/dist/chunk-J7Z4UW45.js.map +0 -1
- package/dist/chunk-K4WCLHMS.js.map +0 -1
package/dist/blocks/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { a as WidgetDefaultSettings, W as Widget } from '../widget-CpE2HdgU.js';
|
|
|
2
2
|
import { M as Media } from '../media-CnLImjVC.js';
|
|
3
3
|
import { T as TitleSettings, A as Alignment, a as HorizontalAlignment } from '../heading-DQCxQt38.js';
|
|
4
4
|
import { TextEditorContent } from '@frontlit/text-editor';
|
|
5
|
-
import { A as AspectRatio, c as ImageObjectFit } from '../image-
|
|
5
|
+
import { A as AspectRatio, c as ImageObjectFit } from '../image-Cv0aSUHD.js';
|
|
6
6
|
import 'react';
|
|
7
7
|
import '../section-background-6V_LCi5e.js';
|
|
8
8
|
import '../theme-style-BVd5tOsc.js';
|
|
@@ -21,6 +21,9 @@ interface HeaderSettings extends WidgetDefaultSettings {
|
|
|
21
21
|
linkAlignment?: "left" | "center" | "right";
|
|
22
22
|
layout?: "fixed" | "floating" | "centered";
|
|
23
23
|
backdropBlur?: boolean;
|
|
24
|
+
/** `owner/repo` (or a github.com URL). Shows a GitHub icon link. */
|
|
25
|
+
githubRepo?: string;
|
|
26
|
+
showGithubStars?: boolean;
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
declare const Header: Widget<HeaderSettings>;
|
|
@@ -90,14 +93,20 @@ interface FaqSettings extends WidgetDefaultSettings, TitleSettings {
|
|
|
90
93
|
|
|
91
94
|
declare const Faq: Widget<FaqSettings>;
|
|
92
95
|
|
|
96
|
+
type PricingPeriod = "monthly" | "yearly";
|
|
93
97
|
interface PricingTier {
|
|
94
98
|
name: string;
|
|
95
|
-
/** Plain display string, e.g. "$29
|
|
99
|
+
/** Plain display string, e.g. "$29". No currency/period logic. With the
|
|
100
|
+
* period switch on, this is the monthly price. */
|
|
96
101
|
price: string;
|
|
102
|
+
/** Shown when the switch is on Yearly. Falls back to `price`. */
|
|
103
|
+
priceYearly?: string;
|
|
97
104
|
description?: string;
|
|
98
105
|
features: string[];
|
|
99
106
|
buttonCaption?: string;
|
|
100
107
|
buttonAction?: string;
|
|
108
|
+
/** Button link when the switch is on Yearly. Falls back to `buttonAction`. */
|
|
109
|
+
buttonActionYearly?: string;
|
|
101
110
|
highlighted?: boolean;
|
|
102
111
|
}
|
|
103
112
|
interface PricingSettings extends WidgetDefaultSettings, TitleSettings {
|
|
@@ -106,6 +115,12 @@ interface PricingSettings extends WidgetDefaultSettings, TitleSettings {
|
|
|
106
115
|
headerAlignment?: Alignment;
|
|
107
116
|
tiers?: PricingTier[];
|
|
108
117
|
layout?: "grid" | "stacked" | "highlight";
|
|
118
|
+
/** Show a Monthly/Yearly switch above the plans. */
|
|
119
|
+
pricingSwitcher?: boolean;
|
|
120
|
+
monthlyPriceCaption?: string;
|
|
121
|
+
yearlyPriceCaption?: string;
|
|
122
|
+
/** Period selected when the page loads. Defaults to yearly. */
|
|
123
|
+
defaultPeriod?: PricingPeriod;
|
|
109
124
|
}
|
|
110
125
|
|
|
111
126
|
declare const Pricing: Widget<PricingSettings>;
|
|
@@ -266,4 +281,4 @@ interface DataSlotSettings extends WidgetDefaultSettings {
|
|
|
266
281
|
|
|
267
282
|
declare const DataSlot: Widget<DataSlotSettings>;
|
|
268
283
|
|
|
269
|
-
export { Banner, type BannerSettings, CodeSnippetBlock, type CodeSnippetSettings, Content, type ContentSettings, DataSlot, type DataSlotSettings, EmailForm, type EmailFormSettings, Embed, type EmbedSettings, Faq, type FaqItem, type FaqSettings, type FeatureItem, Featured, type FeaturedSettings, Footer, type FooterColumn, type FooterLink, type FooterSettings, Grid, type GridItem, type GridSettings, Header, type HeaderNavLink, type HeaderSettings, Hero, type HeroSettings, Marquee, type MarqueeItem, type MarqueeSettings, MediaBlock, type MediaSettings, Pricing, type PricingSettings, type PricingTier, RichText, type RichTextSettings, SupportForm, type SupportFormSettings };
|
|
284
|
+
export { Banner, type BannerSettings, CodeSnippetBlock, type CodeSnippetSettings, Content, type ContentSettings, DataSlot, type DataSlotSettings, EmailForm, type EmailFormSettings, Embed, type EmbedSettings, Faq, type FaqItem, type FaqSettings, type FeatureItem, Featured, type FeaturedSettings, Footer, type FooterColumn, type FooterLink, type FooterSettings, Grid, type GridItem, type GridSettings, Header, type HeaderNavLink, type HeaderSettings, Hero, type HeroSettings, Marquee, type MarqueeItem, type MarqueeSettings, MediaBlock, type MediaSettings, Pricing, type PricingPeriod, type PricingSettings, type PricingTier, RichText, type RichTextSettings, SupportForm, type SupportFormSettings };
|
package/dist/blocks/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { Banner, CodeSnippetBlock, Content, DataSlot, EmailForm, Embed, Faq, Featured, Footer, Grid, Header, Hero, Marquee, MediaBlock, Pricing, RichText, SupportForm } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
2
|
+
export { Banner, CodeSnippetBlock, Content, DataSlot, EmailForm, Embed, Faq, Featured, Footer, Grid, Header, Hero, Marquee, MediaBlock, Pricing, RichText, SupportForm } from '../chunk-FZBLE44D.js';
|
|
3
|
+
import '../chunk-QMUIISN3.js';
|
|
4
|
+
import '../chunk-OEQJQ4OA.js';
|
|
5
5
|
import '../chunk-XU7ALPGQ.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/builder/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { T as Theme, S as SectionBackground } from '../section-background-6V_LCi
|
|
|
3
3
|
import { c as WidgetInstance, P as PageData, W as Widget } from '../widget-CpE2HdgU.js';
|
|
4
4
|
import { a as PageSeo } from '../page-B5Gmm-Ys.js';
|
|
5
5
|
import { P as PageBuilderLinkComponent } from '../nav-link-BfxvQ1s6.js';
|
|
6
|
+
import * as Icons from 'lucide-react';
|
|
6
7
|
import { LucideIcon } from 'lucide-react';
|
|
7
8
|
import { R as ResolvedColorMode } from '../color-mode-DIEEt9WP.js';
|
|
8
9
|
import { T as ThemeStyle } from '../theme-style-BVd5tOsc.js';
|
|
@@ -58,6 +59,8 @@ declare function SettingsPanel({ title, onClose, children, eyebrow, description,
|
|
|
58
59
|
icon?: LucideIcon;
|
|
59
60
|
}): React__default.JSX.Element;
|
|
60
61
|
|
|
62
|
+
/** The block's `metadata.icon` (a lucide-react name), or a generic layout icon. */
|
|
63
|
+
declare function resolveIcon(name?: string): Icons.LucideIcon;
|
|
61
64
|
declare function BlockPicker({ blocks, onPick, onClose, }: {
|
|
62
65
|
blocks: Widget<any>[];
|
|
63
66
|
onPick: (name: string) => void;
|
|
@@ -234,4 +237,4 @@ declare function SeoEditor({ seo, onChange, }: {
|
|
|
234
237
|
onChange: (seo: PageSeo) => void;
|
|
235
238
|
}): React__default.JSX.Element;
|
|
236
239
|
|
|
237
|
-
export { BlockPicker, BuilderTopBar, ColorSelector, ContentPaddingSelector, MaxWidthSelector, PATTERN_PRESETS, PageBuilder, PageBuilderPropertyHeader, type PageBuilderProps, PageBuilderSlider, type PageBuilderState, type PatternPreset, type PatternPresetCategory, type PreviewDevice, SectionBackgroundPanel, SeoEditor, SettingsPanel, ThemeEditor, type ThemeEditorProps, VerticalPaddingSelector, getMaxWidthTWClass, getVerticalPaddingTWClass };
|
|
240
|
+
export { BlockPicker, BuilderTopBar, ColorSelector, ContentPaddingSelector, MaxWidthSelector, PATTERN_PRESETS, PageBuilder, PageBuilderPropertyHeader, type PageBuilderProps, PageBuilderSlider, type PageBuilderState, type PatternPreset, type PatternPresetCategory, type PreviewDevice, SectionBackgroundPanel, SeoEditor, SettingsPanel, ThemeEditor, type ThemeEditorProps, VerticalPaddingSelector, getMaxWidthTWClass, getVerticalPaddingTWClass, resolveIcon };
|
package/dist/builder/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { BlockPicker, BuilderTopBar, ColorSelector, ContentPaddingSelector, MaxWidthSelector, PATTERN_PRESETS, PageBuilder, PageBuilderPropertyHeader, PageBuilderSlider, SectionBackgroundPanel, SeoEditor, SettingsPanel, ThemeEditor, VerticalPaddingSelector, getMaxWidthTWClass, getVerticalPaddingTWClass } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
2
|
+
export { BlockPicker, BuilderTopBar, ColorSelector, ContentPaddingSelector, MaxWidthSelector, PATTERN_PRESETS, PageBuilder, PageBuilderPropertyHeader, PageBuilderSlider, SectionBackgroundPanel, SeoEditor, SettingsPanel, ThemeEditor, VerticalPaddingSelector, getMaxWidthTWClass, getVerticalPaddingTWClass, resolveIcon } from '../chunk-PQTDUFKU.js';
|
|
3
|
+
import '../chunk-YXLOVEQZ.js';
|
|
4
|
+
import '../chunk-BWOGREWJ.js';
|
|
5
|
+
import '../chunk-FZBLE44D.js';
|
|
6
|
+
import '../chunk-QMUIISN3.js';
|
|
7
|
+
import '../chunk-OEQJQ4OA.js';
|
|
8
8
|
import '../chunk-XU7ALPGQ.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Button2, Button } from './chunk-
|
|
2
|
+
import { Button2, Button } from './chunk-OEQJQ4OA.js';
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
4
|
import { Sun, Moon } from 'lucide-react';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -52,5 +52,5 @@ function ThemeModeSwitcher({
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export { ThemeModeSwitcher };
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
55
|
+
//# sourceMappingURL=chunk-BWOGREWJ.js.map
|
|
56
|
+
//# sourceMappingURL=chunk-BWOGREWJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/theme-mode-switcher.tsx"],"names":["Button"],"mappings":";;;;;AAiBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,OAAA,GAAU,UAAU,QAAA,GAAW,OAAA;AACrC,EAAA,MAAM,IAAA,GAAO,OAAA,KAAY,MAAA,GAAS,OAAA,GAAU,MAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,MAAA,GAAS,qBAAA,GAAwB,sBAAA;AACxD,EAAA,MAAM,IAAA,GAAO,OAAA,KAAY,MAAA,GAAS,GAAA,GAAM,IAAA;AAExC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACE,GAAA;AAAA,MAACA,OAAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAS,OAAA,IAAW,SAAA;AAAA,QACpB,MAAM,IAAA,IAAQ,IAAA;AAAA,QACd,KAAA;AAAA,QACA,KAAA,EAAO,KAAA;AAAA,QACP,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA;AAAA,QACA,OAAA,EAAS,QAAA;AAAA,QAET,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,KAC5B;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MAET,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,GAC5B;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/theme-mode-switcher.tsx"],"names":["Button"],"mappings":";;;;;AAiBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,OAAA,GAAU,UAAU,QAAA,GAAW,OAAA;AACrC,EAAA,MAAM,IAAA,GAAO,OAAA,KAAY,MAAA,GAAS,OAAA,GAAU,MAAA;AAC5C,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,MAAA,GAAS,qBAAA,GAAwB,sBAAA;AACxD,EAAA,MAAM,IAAA,GAAO,OAAA,KAAY,MAAA,GAAS,GAAA,GAAM,IAAA;AAExC,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACE,GAAA;AAAA,MAACA,OAAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAS,OAAA,IAAW,SAAA;AAAA,QACpB,MAAM,IAAA,IAAQ,IAAA;AAAA,QACd,KAAA;AAAA,QACA,KAAA,EAAO,KAAA;AAAA,QACP,YAAA,EAAY,KAAA;AAAA,QACZ,SAAA;AAAA,QACA,OAAA,EAAS,QAAA;AAAA,QAET,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,KAC5B;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,YAAA,EAAY,KAAA;AAAA,MACZ,SAAA;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MAET,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,GAC5B;AAEJ","file":"chunk-BWOGREWJ.js","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { Moon, Sun } from \"lucide-react\";\nimport { Button, type ButtonProps } from \"../primitives\";\nimport { Button as ChromeButton } from \"../primitives/components/ui/button\";\nimport type { ThemeStyle } from \"../models\";\nimport type { ResolvedColorMode } from \"../utils\";\n\n/**\n * Light / dark toggle. Public sites pass `theme` so the button uses\n * page-builder primitives; the builder chrome omits it and matches the\n * other icon buttons in the top bar.\n *\n * Preference starts as system (OS). The first click pins an explicit\n * light or dark side; later clicks flip between those two.\n */\nexport function ThemeModeSwitcher({\n resolved,\n onToggle,\n theme,\n className,\n size,\n variant,\n}: {\n resolved: ResolvedColorMode;\n onToggle: () => void;\n theme?: ThemeStyle;\n className?: string;\n size?: ButtonProps[\"size\"];\n variant?: ButtonProps[\"variant\"];\n}) {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n const painted = mounted ? resolved : \"light\";\n const next = painted === \"dark\" ? \"light\" : \"dark\";\n const label = next === \"dark\" ? \"Switch to dark mode\" : \"Switch to light mode\";\n const Icon = painted === \"dark\" ? Sun : Moon;\n\n if (theme) {\n return (\n <Button\n type=\"button\"\n variant={variant ?? \"outline\"}\n size={size ?? \"sm\"}\n theme={theme}\n title={label}\n aria-label={label}\n className={className}\n onClick={onToggle}\n >\n <Icon className=\"h-4 w-4\" />\n </Button>\n );\n }\n\n return (\n <ChromeButton\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n title={label}\n aria-label={label}\n className={className}\n onClick={onToggle}\n >\n <Icon className=\"h-4 w-4\" />\n </ChromeButton>\n );\n}\n"]}
|