@booga/vblocks 0.3.2 → 0.3.3
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/CHANGELOG.md +37 -0
- package/dist/blog/index.cjs +4 -4
- package/dist/blog/index.cjs.map +1 -1
- package/dist/blog/index.js +4 -4
- package/dist/blog/index.js.map +1 -1
- package/dist/business/index.cjs +1 -1
- package/dist/business/index.cjs.map +1 -1
- package/dist/business/index.js +1 -1
- package/dist/business/index.js.map +1 -1
- package/dist/cta/index.cjs +2 -2
- package/dist/cta/index.cjs.map +1 -1
- package/dist/cta/index.js +2 -2
- package/dist/cta/index.js.map +1 -1
- package/dist/features/index.cjs +1 -1
- package/dist/features/index.cjs.map +1 -1
- package/dist/features/index.js +1 -1
- package/dist/features/index.js.map +1 -1
- package/dist/gallery/index.cjs +1 -1
- package/dist/gallery/index.cjs.map +1 -1
- package/dist/gallery/index.js +1 -1
- package/dist/gallery/index.js.map +1 -1
- package/dist/hero/index.cjs +2 -2
- package/dist/hero/index.cjs.map +1 -1
- package/dist/hero/index.js +2 -2
- package/dist/hero/index.js.map +1 -1
- package/dist/index.cjs +16 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -22
- package/dist/index.js.map +1 -1
- package/dist/portfolio/index.cjs +1 -1
- package/dist/portfolio/index.cjs.map +1 -1
- package/dist/portfolio/index.js +1 -1
- package/dist/portfolio/index.js.map +1 -1
- package/dist/post/index.cjs +1 -1
- package/dist/post/index.cjs.map +1 -1
- package/dist/post/index.js +1 -1
- package/dist/post/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/team/index.cjs +1 -1
- package/dist/team/index.cjs.map +1 -1
- package/dist/team/index.js +1 -1
- package/dist/team/index.js.map +1 -1
- package/dist/testimonial/index.cjs +2 -7
- package/dist/testimonial/index.cjs.map +1 -1
- package/dist/testimonial/index.js +3 -8
- package/dist/testimonial/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Box, Stack, Grid, Inline, cn, Button, Card, CardHeader, CardTitle, CardContent, Separator, Badge, Avatar, AvatarImage, AvatarFallback } from '@booga/vui';
|
|
2
2
|
import { dsl } from '@booga/vdsl';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { jsx, jsxs
|
|
4
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
// src/hero/HeroSplit/index.tsx
|
|
7
7
|
var DBox = dsl(Box);
|
|
@@ -41,7 +41,7 @@ var HeroSplitContentSchema = z.object({
|
|
|
41
41
|
function HeroSplit({ content, theme }) {
|
|
42
42
|
HeroSplitContentSchema.parse(content);
|
|
43
43
|
const { eyebrow, heading, description, primaryCta, secondaryCta, image } = content;
|
|
44
|
-
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DGrid, { columns: 2, px: 6, py:
|
|
44
|
+
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DGrid, { columns: 2, px: 6, py: 24, gap: 12, align: "center", className: cn("max-w-6xl mx-auto"), children: [
|
|
45
45
|
/* @__PURE__ */ jsxs(DStack, { gap: 6, children: [
|
|
46
46
|
eyebrow && /* @__PURE__ */ jsx(DBox, { as: "p", color: "accent", className: cn("text-sm font-semibold uppercase tracking-widest"), children: eyebrow }),
|
|
47
47
|
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-5xl font-bold tracking-tight leading-tight"), children: heading }),
|
|
@@ -84,7 +84,7 @@ function HeroCentered({ content, theme }) {
|
|
|
84
84
|
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DStack, { px: 6, py: 24, gap: 8, align: "center", className: cn("max-w-3xl mx-auto text-center"), children: [
|
|
85
85
|
eyebrow && /* @__PURE__ */ jsx(DBox, { as: "p", color: "accent", className: cn("text-sm font-semibold uppercase tracking-widest"), children: eyebrow }),
|
|
86
86
|
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-5xl font-bold tracking-tight leading-tight"), children: heading }),
|
|
87
|
-
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-
|
|
87
|
+
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-lg"), children: description }),
|
|
88
88
|
/* @__PURE__ */ jsxs(DInline, { wrap: true, gap: 3, justify: "center", children: [
|
|
89
89
|
/* @__PURE__ */ jsx(Button, { as: "a", href: primaryCta.href, children: primaryCta.label }),
|
|
90
90
|
secondaryCta && /* @__PURE__ */ jsx(Button, { as: "a", href: secondaryCta.href, variant: "outline", children: secondaryCta.label })
|
|
@@ -110,7 +110,7 @@ function CtaSplit({ content, theme }) {
|
|
|
110
110
|
const { heading, description, primaryCta, image } = content;
|
|
111
111
|
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DGrid, { columns: 2, px: 6, py: 16, gap: 12, align: "center", className: cn("max-w-6xl mx-auto"), children: [
|
|
112
112
|
/* @__PURE__ */ jsxs(DStack, { gap: 6, children: [
|
|
113
|
-
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-
|
|
113
|
+
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-3xl font-bold tracking-tight"), children: heading }),
|
|
114
114
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-lg"), children: description }),
|
|
115
115
|
/* @__PURE__ */ jsx(Button, { as: "a", href: primaryCta.href, size: "lg", children: primaryCta.label })
|
|
116
116
|
] }),
|
|
@@ -143,7 +143,7 @@ function CtaCentered({ content, theme }) {
|
|
|
143
143
|
CtaCenteredContentSchema.parse(content);
|
|
144
144
|
const { heading, description, primaryCta, secondaryCta } = content;
|
|
145
145
|
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DStack, { px: 6, gap: 8, align: "center", className: cn("max-w-2xl mx-auto text-center py-20"), children: [
|
|
146
|
-
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-
|
|
146
|
+
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-3xl font-bold tracking-tight"), children: heading }),
|
|
147
147
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-lg"), children: description }),
|
|
148
148
|
/* @__PURE__ */ jsxs(DInline, { wrap: true, gap: 3, justify: "center", children: [
|
|
149
149
|
/* @__PURE__ */ jsx(Button, { as: "a", href: primaryCta.href, size: "lg", children: primaryCta.label }),
|
|
@@ -352,7 +352,7 @@ var GalleryGridContentSchema = z.object({
|
|
|
352
352
|
function GalleryGrid({ content, theme }) {
|
|
353
353
|
GalleryGridContentSchema.parse(content);
|
|
354
354
|
const { items } = content;
|
|
355
|
-
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": "Gallery", style: themeStyle(theme), children: /* @__PURE__ */ jsx(DGrid, { columns: 3, px: 6, py:
|
|
355
|
+
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": "Gallery", style: themeStyle(theme), children: /* @__PURE__ */ jsx(DGrid, { columns: 3, px: 6, py: 16, gap: 4, className: cn("max-w-6xl mx-auto"), children: items.map((item, i) => /* @__PURE__ */ jsxs(DBox, { as: "figure", m: 0, children: [
|
|
356
356
|
/* @__PURE__ */ jsx(
|
|
357
357
|
DBox,
|
|
358
358
|
{
|
|
@@ -432,7 +432,7 @@ var PortfolioGridContentSchema = z.object({
|
|
|
432
432
|
function PortfolioGrid({ content, theme }) {
|
|
433
433
|
PortfolioGridContentSchema.parse(content);
|
|
434
434
|
const { items } = content;
|
|
435
|
-
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": "Portfolio", style: themeStyle(theme), children: /* @__PURE__ */ jsx(DGrid, { columns: 2, px: 6, py:
|
|
435
|
+
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": "Portfolio", style: themeStyle(theme), children: /* @__PURE__ */ jsx(DGrid, { columns: 2, px: 6, py: 16, gap: 6, className: cn("max-w-6xl mx-auto"), children: items.map((item, i) => /* @__PURE__ */ jsxs(Card, { children: [
|
|
436
436
|
/* @__PURE__ */ jsx(
|
|
437
437
|
DBox,
|
|
438
438
|
{
|
|
@@ -472,7 +472,7 @@ function PostSplit({ content, theme }) {
|
|
|
472
472
|
return /* @__PURE__ */ jsx(DBox, { as: "article", style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DGrid, { columns: 2, px: 6, py: 16, gap: 16, align: "start", className: cn("max-w-6xl mx-auto"), children: [
|
|
473
473
|
/* @__PURE__ */ jsxs(DStack, { gap: 6, className: cn("sticky top-16"), children: [
|
|
474
474
|
category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: category }),
|
|
475
|
-
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-
|
|
475
|
+
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-4xl font-bold tracking-tight leading-snug"), children: title }),
|
|
476
476
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
477
477
|
/* @__PURE__ */ jsxs(DInline, { gap: 2, color: "muted", className: cn("text-sm"), children: [
|
|
478
478
|
/* @__PURE__ */ jsx(DBox, { as: "span", children: author }),
|
|
@@ -592,7 +592,7 @@ function TeamGrid({ content, theme }) {
|
|
|
592
592
|
const { heading, members } = content;
|
|
593
593
|
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DStack, { px: 6, py: 16, className: cn("max-w-6xl mx-auto gap-10"), children: [
|
|
594
594
|
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-3xl font-bold tracking-tight text-center"), children: heading }),
|
|
595
|
-
/* @__PURE__ */ jsx(DGrid, { columns: 3, gap: 6, children: members.map((member, i) => /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap:
|
|
595
|
+
/* @__PURE__ */ jsx(DGrid, { columns: 3, gap: 6, children: members.map((member, i) => /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap: 4, align: "center", py: 6, className: cn("text-center"), children: [
|
|
596
596
|
/* @__PURE__ */ jsxs(Avatar, { className: cn("w-16 h-16"), children: [
|
|
597
597
|
/* @__PURE__ */ jsx(AvatarImage, { src: member.avatar.src, alt: member.avatar.alt }),
|
|
598
598
|
/* @__PURE__ */ jsx(AvatarFallback, { children: member.name.slice(0, 2).toUpperCase() })
|
|
@@ -640,14 +640,9 @@ function TestimonialSplit({ content, theme }) {
|
|
|
640
640
|
/* @__PURE__ */ jsx(AvatarImage, { src: avatar.src, alt: avatar.alt }),
|
|
641
641
|
/* @__PURE__ */ jsx(AvatarFallback, { children: author.slice(0, 2).toUpperCase() })
|
|
642
642
|
] }),
|
|
643
|
-
/* @__PURE__ */ jsxs(DInline, { gap:
|
|
643
|
+
/* @__PURE__ */ jsxs(DInline, { gap: 0, color: "muted", className: cn("text-sm"), children: [
|
|
644
644
|
/* @__PURE__ */ jsx(DBox, { as: "cite", color: "fg", className: cn("font-semibold not-italic"), children: author }),
|
|
645
|
-
/* @__PURE__ */ jsx(DBox, { as: "span", children:
|
|
646
|
-
/* @__PURE__ */ jsx(DBox, { as: "span", children: role }),
|
|
647
|
-
company && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
648
|
-
/* @__PURE__ */ jsx(DBox, { as: "span", children: "at" }),
|
|
649
|
-
/* @__PURE__ */ jsx(DBox, { as: "span", children: company })
|
|
650
|
-
] })
|
|
645
|
+
/* @__PURE__ */ jsx(DBox, { as: "span", children: `, ${company ? `${role} at ${company}` : role}` })
|
|
651
646
|
] })
|
|
652
647
|
] })
|
|
653
648
|
] }) });
|
|
@@ -735,7 +730,7 @@ function BlogSplit({ content, theme }) {
|
|
|
735
730
|
),
|
|
736
731
|
/* @__PURE__ */ jsxs(DStack, { gap: 2, children: [
|
|
737
732
|
featured.category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: featured.category }),
|
|
738
|
-
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("text-
|
|
733
|
+
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("text-lg font-semibold"), children: featured.title }),
|
|
739
734
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", children: featured.excerpt }),
|
|
740
735
|
/* @__PURE__ */ jsx(DBox, { as: "time", dateTime: featured.date, color: "muted", className: cn("text-xs"), children: featured.date })
|
|
741
736
|
] })
|
|
@@ -752,7 +747,7 @@ function BlogSplit({ content, theme }) {
|
|
|
752
747
|
),
|
|
753
748
|
/* @__PURE__ */ jsxs(DStack, { gap: 1, children: [
|
|
754
749
|
post.category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: post.category }),
|
|
755
|
-
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("font-semibold leading-snug"), children: post.title }),
|
|
750
|
+
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("text-lg font-semibold leading-snug"), children: post.title }),
|
|
756
751
|
/* @__PURE__ */ jsx(DBox, { as: "time", dateTime: post.date, color: "muted", className: cn("text-xs"), children: post.date })
|
|
757
752
|
] })
|
|
758
753
|
] }) }) }, i)) })
|
|
@@ -765,7 +760,7 @@ var BlogSplitDefaultContent = {
|
|
|
765
760
|
heading: "Latest posts",
|
|
766
761
|
posts: [
|
|
767
762
|
{ title: "Designing for composability", excerpt: "How modular thinking unlocks maintainable systems at scale.", date: "2026-05-01", category: "Design", image: { src: "https://placehold.co/600x400", alt: "Design systems post" } },
|
|
768
|
-
{ title: "Type-safe content at runtime", excerpt: "Zod schemas as the single source of truth for block content.", date: "2026-04-18", image: { src: "https://placehold.co/400x280", alt: "Type safety post" } },
|
|
763
|
+
{ title: "Type-safe content at runtime", excerpt: "Zod schemas as the single source of truth for block content.", date: "2026-04-18", category: "Engineering", image: { src: "https://placehold.co/400x280", alt: "Type safety post" } },
|
|
769
764
|
{ title: "Tree-shaking section blocks", excerpt: "Per-category entry points and how they keep bundles lean.", date: "2026-04-05", category: "Engineering", image: { src: "https://placehold.co/400x280", alt: "Tree-shaking post" } }
|
|
770
765
|
]
|
|
771
766
|
};
|
|
@@ -797,7 +792,7 @@ function BlogGrid({ content, theme }) {
|
|
|
797
792
|
),
|
|
798
793
|
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap: 2, pt: 2, children: [
|
|
799
794
|
post.category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: post.category }),
|
|
800
|
-
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("font-semibold leading-snug"), children: post.title }),
|
|
795
|
+
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("text-lg font-semibold leading-snug"), children: post.title }),
|
|
801
796
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-sm"), children: post.excerpt }),
|
|
802
797
|
/* @__PURE__ */ jsx(DBox, { as: "time", dateTime: post.date, color: "muted", className: cn("text-xs"), children: post.date })
|
|
803
798
|
] }) })
|
|
@@ -832,7 +827,7 @@ function BusinessSplit({ content, theme }) {
|
|
|
832
827
|
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": name, style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DGrid, { columns: 2, px: 6, py: 16, gap: 16, align: "center", className: cn("max-w-6xl mx-auto"), children: [
|
|
833
828
|
/* @__PURE__ */ jsxs(DStack, { gap: 6, children: [
|
|
834
829
|
/* @__PURE__ */ jsxs(DStack, { gap: 2, children: [
|
|
835
|
-
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-
|
|
830
|
+
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-3xl font-bold tracking-tight"), children: name }),
|
|
836
831
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "accent", className: cn("text-xl"), children: tagline })
|
|
837
832
|
] }),
|
|
838
833
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-lg leading-relaxed"), children: description }),
|
|
@@ -917,7 +912,7 @@ function FeaturesSplit({ content, theme }) {
|
|
|
917
912
|
/* @__PURE__ */ jsx(DBox, { as: "ul", m: 0, p: 0, gap: 8, display: "flex", className: cn("list-none flex-col"), children: features.map((feature, i) => /* @__PURE__ */ jsx(DBox, { as: "li", children: /* @__PURE__ */ jsxs(DInline, { gap: 4, align: "start", children: [
|
|
918
913
|
feature.icon && /* @__PURE__ */ jsx(DBox, { as: "span", className: cn("text-xl flex-shrink-0 mt-0.5"), "aria-hidden": "true", children: feature.icon }),
|
|
919
914
|
/* @__PURE__ */ jsxs(DStack, { gap: 1, children: [
|
|
920
|
-
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("font-semibold"), children: feature.title }),
|
|
915
|
+
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("text-lg font-semibold"), children: feature.title }),
|
|
921
916
|
/* @__PURE__ */ jsx(DBox, { as: "p", color: "muted", className: cn("text-sm"), children: feature.description })
|
|
922
917
|
] })
|
|
923
918
|
] }) }, i)) })
|