@booga/vblocks 0.3.1 → 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 +44 -0
- package/dist/blog/index.cjs +8 -8
- package/dist/blog/index.cjs.map +1 -1
- package/dist/blog/index.js +8 -8
- 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 +24 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +25 -30
- package/dist/index.js.map +1 -1
- package/dist/portfolio/index.cjs +3 -3
- package/dist/portfolio/index.cjs.map +1 -1
- package/dist/portfolio/index.js +3 -3
- package/dist/portfolio/index.js.map +1 -1
- package/dist/post/index.cjs +3 -3
- package/dist/post/index.cjs.map +1 -1
- package/dist/post/index.js +3 -3
- 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/portfolio/index.cjs
CHANGED
|
@@ -57,7 +57,7 @@ function PortfolioSplit({ content, theme }) {
|
|
|
57
57
|
}
|
|
58
58
|
),
|
|
59
59
|
/* @__PURE__ */ jsxRuntime.jsx(vui.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { gap: 2, pt: 2, children: [
|
|
60
|
-
/* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", children: item.category }),
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", className: vui.cn("self-start"), children: item.category }),
|
|
61
61
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h3", className: vui.cn("font-semibold text-lg"), children: item.title })
|
|
62
62
|
] }) })
|
|
63
63
|
] }, i)) })
|
|
@@ -85,7 +85,7 @@ var PortfolioGridContentSchema = zod.z.object({
|
|
|
85
85
|
function PortfolioGrid({ content, theme }) {
|
|
86
86
|
PortfolioGridContentSchema.parse(content);
|
|
87
87
|
const { items } = content;
|
|
88
|
-
return /* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "section", "aria-label": "Portfolio", style: themeStyle(theme), children: /* @__PURE__ */ jsxRuntime.jsx(DGrid, { columns: 2, px: 6, py:
|
|
88
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "section", "aria-label": "Portfolio", style: themeStyle(theme), children: /* @__PURE__ */ jsxRuntime.jsx(DGrid, { columns: 2, px: 6, py: 16, gap: 6, className: vui.cn("max-w-6xl mx-auto"), children: items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(vui.Card, { children: [
|
|
89
89
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
90
90
|
DBox,
|
|
91
91
|
{
|
|
@@ -96,7 +96,7 @@ function PortfolioGrid({ content, theme }) {
|
|
|
96
96
|
}
|
|
97
97
|
),
|
|
98
98
|
/* @__PURE__ */ jsxRuntime.jsx(vui.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { gap: 2, pt: 2, children: [
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", children: item.category }),
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", className: vui.cn("self-start"), children: item.category }),
|
|
100
100
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h3", className: vui.cn("font-semibold text-lg"), children: item.title })
|
|
101
101
|
] }) })
|
|
102
102
|
] }, i)) }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/portfolio/PortfolioSplit/schema.ts","../../src/portfolio/PortfolioSplit/index.tsx","../../src/portfolio/PortfolioSplit/default.ts","../../src/portfolio/PortfolioGrid/schema.ts","../../src/portfolio/PortfolioGrid/index.tsx","../../src/portfolio/PortfolioGrid/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Card","CardContent","Badge","PortfolioItemSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioSplitContent = z.infer<typeof PortfolioSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioSplitContentSchema, type PortfolioSplitContent } from \"./schema\";\n\nexport function PortfolioSplit({ content, theme }: BlockProps<PortfolioSplitContent>) {\n PortfolioSplitContentSchema.parse(content);\n const { heading, description, items } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DStack gap={6}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\">{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioSplitContent } from \"./schema\";\n\nexport const PortfolioSplitDefaultContent: PortfolioSplitContent = {\n heading: \"Selected work\",\n description: \"Projects spanning product design, engineering, and research.\",\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioGridContentSchema = z.object({\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioGridContent = z.infer<typeof PortfolioGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioGridContentSchema, type PortfolioGridContent } from \"./schema\";\n\nexport function PortfolioGrid({ content, theme }: BlockProps<PortfolioGridContent>) {\n PortfolioGridContentSchema.parse(content);\n const { items } = content;\n return (\n <DBox as=\"section\" aria-label=\"Portfolio\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={12} gap={6} className={cn(\"max-w-6xl mx-auto\")}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\">{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioGridContent } from \"./schema\";\n\nexport const PortfolioGridDefaultContent: PortfolioGridContent = {\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n { title: \"Mobile app architecture\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Mobile project\" } },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/portfolio/PortfolioSplit/schema.ts","../../src/portfolio/PortfolioSplit/index.tsx","../../src/portfolio/PortfolioSplit/default.ts","../../src/portfolio/PortfolioGrid/schema.ts","../../src/portfolio/PortfolioGrid/index.tsx","../../src/portfolio/PortfolioGrid/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Card","CardContent","Badge","PortfolioItemSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioSplitContent = z.infer<typeof PortfolioSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioSplitContentSchema, type PortfolioSplitContent } from \"./schema\";\n\nexport function PortfolioSplit({ content, theme }: BlockProps<PortfolioSplitContent>) {\n PortfolioSplitContentSchema.parse(content);\n const { heading, description, items } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DStack gap={6}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\" className={cn(\"self-start\")}>{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioSplitContent } from \"./schema\";\n\nexport const PortfolioSplitDefaultContent: PortfolioSplitContent = {\n heading: \"Selected work\",\n description: \"Projects spanning product design, engineering, and research.\",\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioGridContentSchema = z.object({\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioGridContent = z.infer<typeof PortfolioGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioGridContentSchema, type PortfolioGridContent } from \"./schema\";\n\nexport function PortfolioGrid({ content, theme }: BlockProps<PortfolioGridContent>) {\n PortfolioGridContentSchema.parse(content);\n const { items } = content;\n return (\n <DBox as=\"section\" aria-label=\"Portfolio\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={6} className={cn(\"max-w-6xl mx-auto\")}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\" className={cn(\"self-start\")}>{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioGridContent } from \"./schema\";\n\nexport const PortfolioGridDefaultContent: PortfolioGridContent = {\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n { title: \"Mobile app architecture\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Mobile project\" } },\n ],\n};\n"]}
|
package/dist/portfolio/index.js
CHANGED
|
@@ -55,7 +55,7 @@ function PortfolioSplit({ content, theme }) {
|
|
|
55
55
|
}
|
|
56
56
|
),
|
|
57
57
|
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap: 2, pt: 2, children: [
|
|
58
|
-
/* @__PURE__ */ jsx(Badge, { variant: "secondary", children: item.category }),
|
|
58
|
+
/* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: item.category }),
|
|
59
59
|
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("font-semibold text-lg"), children: item.title })
|
|
60
60
|
] }) })
|
|
61
61
|
] }, i)) })
|
|
@@ -83,7 +83,7 @@ var PortfolioGridContentSchema = z.object({
|
|
|
83
83
|
function PortfolioGrid({ content, theme }) {
|
|
84
84
|
PortfolioGridContentSchema.parse(content);
|
|
85
85
|
const { items } = content;
|
|
86
|
-
return /* @__PURE__ */ jsx(DBox, { as: "section", "aria-label": "Portfolio", style: themeStyle(theme), children: /* @__PURE__ */ jsx(DGrid, { columns: 2, px: 6, py:
|
|
86
|
+
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: [
|
|
87
87
|
/* @__PURE__ */ jsx(
|
|
88
88
|
DBox,
|
|
89
89
|
{
|
|
@@ -94,7 +94,7 @@ function PortfolioGrid({ content, theme }) {
|
|
|
94
94
|
}
|
|
95
95
|
),
|
|
96
96
|
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap: 2, pt: 2, children: [
|
|
97
|
-
/* @__PURE__ */ jsx(Badge, { variant: "secondary", children: item.category }),
|
|
97
|
+
/* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: item.category }),
|
|
98
98
|
/* @__PURE__ */ jsx(DBox, { as: "h3", className: cn("font-semibold text-lg"), children: item.title })
|
|
99
99
|
] }) })
|
|
100
100
|
] }, i)) }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/portfolio/PortfolioSplit/schema.ts","../../src/portfolio/PortfolioSplit/index.tsx","../../src/portfolio/PortfolioSplit/default.ts","../../src/portfolio/PortfolioGrid/schema.ts","../../src/portfolio/PortfolioGrid/index.tsx","../../src/portfolio/PortfolioGrid/default.ts"],"names":["z","PortfolioItemSchema","jsx","cn","jsxs","Card","CardContent","Badge"],"mappings":"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","file":"index.js","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioSplitContent = z.infer<typeof PortfolioSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioSplitContentSchema, type PortfolioSplitContent } from \"./schema\";\n\nexport function PortfolioSplit({ content, theme }: BlockProps<PortfolioSplitContent>) {\n PortfolioSplitContentSchema.parse(content);\n const { heading, description, items } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DStack gap={6}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\">{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioSplitContent } from \"./schema\";\n\nexport const PortfolioSplitDefaultContent: PortfolioSplitContent = {\n heading: \"Selected work\",\n description: \"Projects spanning product design, engineering, and research.\",\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioGridContentSchema = z.object({\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioGridContent = z.infer<typeof PortfolioGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioGridContentSchema, type PortfolioGridContent } from \"./schema\";\n\nexport function PortfolioGrid({ content, theme }: BlockProps<PortfolioGridContent>) {\n PortfolioGridContentSchema.parse(content);\n const { items } = content;\n return (\n <DBox as=\"section\" aria-label=\"Portfolio\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={12} gap={6} className={cn(\"max-w-6xl mx-auto\")}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\">{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioGridContent } from \"./schema\";\n\nexport const PortfolioGridDefaultContent: PortfolioGridContent = {\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n { title: \"Mobile app architecture\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Mobile project\" } },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/portfolio/PortfolioSplit/schema.ts","../../src/portfolio/PortfolioSplit/index.tsx","../../src/portfolio/PortfolioSplit/default.ts","../../src/portfolio/PortfolioGrid/schema.ts","../../src/portfolio/PortfolioGrid/index.tsx","../../src/portfolio/PortfolioGrid/default.ts"],"names":["z","PortfolioItemSchema","jsx","cn","jsxs","Card","CardContent","Badge"],"mappings":"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","file":"index.js","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioSplitContent = z.infer<typeof PortfolioSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioSplitContentSchema, type PortfolioSplitContent } from \"./schema\";\n\nexport function PortfolioSplit({ content, theme }: BlockProps<PortfolioSplitContent>) {\n PortfolioSplitContentSchema.parse(content);\n const { heading, description, items } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DStack gap={6}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\" className={cn(\"self-start\")}>{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioSplitContent } from \"./schema\";\n\nexport const PortfolioSplitDefaultContent: PortfolioSplitContent = {\n heading: \"Selected work\",\n description: \"Projects spanning product design, engineering, and research.\",\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nconst PortfolioItemSchema = z.object({\n title: z.string(),\n category: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport const PortfolioGridContentSchema = z.object({\n items: z.array(PortfolioItemSchema).min(1),\n}).strict();\n\nexport type PortfolioGridContent = z.infer<typeof PortfolioGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PortfolioGridContentSchema, type PortfolioGridContent } from \"./schema\";\n\nexport function PortfolioGrid({ content, theme }: BlockProps<PortfolioGridContent>) {\n PortfolioGridContentSchema.parse(content);\n const { items } = content;\n return (\n <DBox as=\"section\" aria-label=\"Portfolio\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={6} className={cn(\"max-w-6xl mx-auto\")}>\n {items.map((item, i) => (\n <Card key={i}>\n <DBox\n as=\"img\"\n src={item.image.src}\n alt={item.image.alt}\n className={cn(\"w-full rounded-t-lg object-cover aspect-video\")}\n />\n <CardContent>\n <DStack gap={2} pt={2}>\n <Badge variant=\"secondary\" className={cn(\"self-start\")}>{item.category}</Badge>\n <DBox as=\"h3\" className={cn(\"font-semibold text-lg\")}>{item.title}</DBox>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PortfolioGridContent } from \"./schema\";\n\nexport const PortfolioGridDefaultContent: PortfolioGridContent = {\n items: [\n { title: \"Commerce platform redesign\", category: \"Product\", image: { src: \"https://placehold.co/480x360\", alt: \"Commerce project\" } },\n { title: \"Data visualisation system\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Data project\" } },\n { title: \"Design language rollout\", category: \"Design\", image: { src: \"https://placehold.co/480x360\", alt: \"Design project\" } },\n { title: \"Mobile app architecture\", category: \"Engineering\", image: { src: \"https://placehold.co/480x360\", alt: \"Mobile project\" } },\n ],\n};\n"]}
|
package/dist/post/index.cjs
CHANGED
|
@@ -41,8 +41,8 @@ function PostSplit({ content, theme }) {
|
|
|
41
41
|
const { title, author, date, category, body, image } = content;
|
|
42
42
|
return /* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "article", style: themeStyle(theme), children: /* @__PURE__ */ jsxRuntime.jsxs(DGrid, { columns: 2, px: 6, py: 16, gap: 16, align: "start", className: vui.cn("max-w-6xl mx-auto"), children: [
|
|
43
43
|
/* @__PURE__ */ jsxRuntime.jsxs(DStack, { gap: 6, className: vui.cn("sticky top-16"), children: [
|
|
44
|
-
category && /* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", children: category }),
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h1", className: vui.cn("text-
|
|
44
|
+
category && /* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", className: vui.cn("self-start"), children: category }),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h1", className: vui.cn("text-4xl font-bold tracking-tight leading-snug"), children: title }),
|
|
46
46
|
/* @__PURE__ */ jsxRuntime.jsx(vui.Separator, {}),
|
|
47
47
|
/* @__PURE__ */ jsxRuntime.jsxs(DInline, { gap: 2, color: "muted", className: vui.cn("text-sm"), children: [
|
|
48
48
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "span", children: author }),
|
|
@@ -85,7 +85,7 @@ function PostCentered({ content, theme }) {
|
|
|
85
85
|
PostCenteredContentSchema.parse(content);
|
|
86
86
|
const { title, author, date, category, body } = content;
|
|
87
87
|
return /* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "article", style: themeStyle(theme), children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { px: 6, py: 16, gap: 6, className: vui.cn("max-w-2xl mx-auto"), children: [
|
|
88
|
-
category && /* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", children: category }),
|
|
88
|
+
category && /* @__PURE__ */ jsxRuntime.jsx(vui.Badge, { variant: "secondary", className: vui.cn("self-start"), children: category }),
|
|
89
89
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h1", className: vui.cn("text-4xl font-bold tracking-tight leading-snug"), children: title }),
|
|
90
90
|
/* @__PURE__ */ jsxRuntime.jsxs(DInline, { gap: 2, color: "muted", className: vui.cn("text-sm"), children: [
|
|
91
91
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "span", children: author }),
|
package/dist/post/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/post/PostSplit/schema.ts","../../src/post/PostSplit/index.tsx","../../src/post/PostSplit/default.ts","../../src/post/PostCentered/schema.ts","../../src/post/PostCentered/index.tsx","../../src/post/PostCentered/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Badge","Separator"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nexport const PostSplitContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport type PostSplitContent = z.infer<typeof PostSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostSplitContentSchema, type PostSplitContent } from \"./schema\";\n\nexport function PostSplit({ content, theme }: BlockProps<PostSplitContent>) {\n PostSplitContentSchema.parse(content);\n const { title, author, date, category, body, image } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={6} className={cn(\"sticky top-16\")}>\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-3xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <Separator />\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n </DStack>\n <DStack gap={6}>\n <DBox\n as=\"img\"\n src={image.src}\n alt={image.alt}\n className={cn(\"w-full rounded-lg object-cover aspect-video\")}\n />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostSplitContent } from \"./schema\";\n\nexport const PostSplitDefaultContent: PostSplitContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency. This post explores the core principles behind maintainable design systems.\",\n image: { src: \"https://placehold.co/600x400\", alt: \"Post cover image\" },\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const PostCenteredContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n}).strict();\n\nexport type PostCenteredContent = z.infer<typeof PostCenteredContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostCenteredContentSchema, type PostCenteredContent } from \"./schema\";\n\nexport function PostCentered({ content, theme }: BlockProps<PostCenteredContent>) {\n PostCenteredContentSchema.parse(content);\n const { title, author, date, category, body } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DStack px={6} py={16} gap={6} className={cn(\"max-w-2xl mx-auto\")}>\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n <Separator />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostCenteredContent } from \"./schema\";\n\nexport const PostCenteredDefaultContent: PostCenteredContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency.\",\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/post/PostSplit/schema.ts","../../src/post/PostSplit/index.tsx","../../src/post/PostSplit/default.ts","../../src/post/PostCentered/schema.ts","../../src/post/PostCentered/index.tsx","../../src/post/PostCentered/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Badge","Separator"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nexport const PostSplitContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport type PostSplitContent = z.infer<typeof PostSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostSplitContentSchema, type PostSplitContent } from \"./schema\";\n\nexport function PostSplit({ content, theme }: BlockProps<PostSplitContent>) {\n PostSplitContentSchema.parse(content);\n const { title, author, date, category, body, image } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={6} className={cn(\"sticky top-16\")}>\n {category && <Badge variant=\"secondary\" className={cn(\"self-start\")}>{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <Separator />\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n </DStack>\n <DStack gap={6}>\n <DBox\n as=\"img\"\n src={image.src}\n alt={image.alt}\n className={cn(\"w-full rounded-lg object-cover aspect-video\")}\n />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostSplitContent } from \"./schema\";\n\nexport const PostSplitDefaultContent: PostSplitContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency. This post explores the core principles behind maintainable design systems.\",\n image: { src: \"https://placehold.co/600x400\", alt: \"Post cover image\" },\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const PostCenteredContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n}).strict();\n\nexport type PostCenteredContent = z.infer<typeof PostCenteredContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostCenteredContentSchema, type PostCenteredContent } from \"./schema\";\n\nexport function PostCentered({ content, theme }: BlockProps<PostCenteredContent>) {\n PostCenteredContentSchema.parse(content);\n const { title, author, date, category, body } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DStack px={6} py={16} gap={6} className={cn(\"max-w-2xl mx-auto\")}>\n {category && <Badge variant=\"secondary\" className={cn(\"self-start\")}>{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n <Separator />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostCenteredContent } from \"./schema\";\n\nexport const PostCenteredDefaultContent: PostCenteredContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency.\",\n};\n"]}
|
package/dist/post/index.js
CHANGED
|
@@ -39,8 +39,8 @@ function PostSplit({ content, theme }) {
|
|
|
39
39
|
const { title, author, date, category, body, image } = content;
|
|
40
40
|
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: [
|
|
41
41
|
/* @__PURE__ */ jsxs(DStack, { gap: 6, className: cn("sticky top-16"), children: [
|
|
42
|
-
category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: category }),
|
|
43
|
-
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-
|
|
42
|
+
category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: category }),
|
|
43
|
+
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-4xl font-bold tracking-tight leading-snug"), children: title }),
|
|
44
44
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
45
45
|
/* @__PURE__ */ jsxs(DInline, { gap: 2, color: "muted", className: cn("text-sm"), children: [
|
|
46
46
|
/* @__PURE__ */ jsx(DBox, { as: "span", children: author }),
|
|
@@ -83,7 +83,7 @@ function PostCentered({ content, theme }) {
|
|
|
83
83
|
PostCenteredContentSchema.parse(content);
|
|
84
84
|
const { title, author, date, category, body } = content;
|
|
85
85
|
return /* @__PURE__ */ jsx(DBox, { as: "article", style: themeStyle(theme), children: /* @__PURE__ */ jsxs(DStack, { px: 6, py: 16, gap: 6, className: cn("max-w-2xl mx-auto"), children: [
|
|
86
|
-
category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: category }),
|
|
86
|
+
category && /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: cn("self-start"), children: category }),
|
|
87
87
|
/* @__PURE__ */ jsx(DBox, { as: "h1", className: cn("text-4xl font-bold tracking-tight leading-snug"), children: title }),
|
|
88
88
|
/* @__PURE__ */ jsxs(DInline, { gap: 2, color: "muted", className: cn("text-sm"), children: [
|
|
89
89
|
/* @__PURE__ */ jsx(DBox, { as: "span", children: author }),
|
package/dist/post/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/post/PostSplit/schema.ts","../../src/post/PostSplit/index.tsx","../../src/post/PostSplit/default.ts","../../src/post/PostCentered/schema.ts","../../src/post/PostCentered/index.tsx","../../src/post/PostCentered/default.ts"],"names":["z","jsx","jsxs","cn","Badge","Separator"],"mappings":"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","file":"index.js","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nexport const PostSplitContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport type PostSplitContent = z.infer<typeof PostSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostSplitContentSchema, type PostSplitContent } from \"./schema\";\n\nexport function PostSplit({ content, theme }: BlockProps<PostSplitContent>) {\n PostSplitContentSchema.parse(content);\n const { title, author, date, category, body, image } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={6} className={cn(\"sticky top-16\")}>\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-3xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <Separator />\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n </DStack>\n <DStack gap={6}>\n <DBox\n as=\"img\"\n src={image.src}\n alt={image.alt}\n className={cn(\"w-full rounded-lg object-cover aspect-video\")}\n />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostSplitContent } from \"./schema\";\n\nexport const PostSplitDefaultContent: PostSplitContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency. This post explores the core principles behind maintainable design systems.\",\n image: { src: \"https://placehold.co/600x400\", alt: \"Post cover image\" },\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const PostCenteredContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n}).strict();\n\nexport type PostCenteredContent = z.infer<typeof PostCenteredContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostCenteredContentSchema, type PostCenteredContent } from \"./schema\";\n\nexport function PostCentered({ content, theme }: BlockProps<PostCenteredContent>) {\n PostCenteredContentSchema.parse(content);\n const { title, author, date, category, body } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DStack px={6} py={16} gap={6} className={cn(\"max-w-2xl mx-auto\")}>\n {category && <Badge variant=\"secondary\">{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n <Separator />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostCenteredContent } from \"./schema\";\n\nexport const PostCenteredDefaultContent: PostCenteredContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency.\",\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/post/PostSplit/schema.ts","../../src/post/PostSplit/index.tsx","../../src/post/PostSplit/default.ts","../../src/post/PostCentered/schema.ts","../../src/post/PostCentered/index.tsx","../../src/post/PostCentered/default.ts"],"names":["z","jsx","jsxs","cn","Badge","Separator"],"mappings":"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","file":"index.js","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { ImageSchema } from \"../../shared/schemas\";\n\nexport const PostSplitContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n image: ImageSchema,\n}).strict();\n\nexport type PostSplitContent = z.infer<typeof PostSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostSplitContentSchema, type PostSplitContent } from \"./schema\";\n\nexport function PostSplit({ content, theme }: BlockProps<PostSplitContent>) {\n PostSplitContentSchema.parse(content);\n const { title, author, date, category, body, image } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={6} className={cn(\"sticky top-16\")}>\n {category && <Badge variant=\"secondary\" className={cn(\"self-start\")}>{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <Separator />\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n </DStack>\n <DStack gap={6}>\n <DBox\n as=\"img\"\n src={image.src}\n alt={image.alt}\n className={cn(\"w-full rounded-lg object-cover aspect-video\")}\n />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostSplitContent } from \"./schema\";\n\nexport const PostSplitDefaultContent: PostSplitContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency. This post explores the core principles behind maintainable design systems.\",\n image: { src: \"https://placehold.co/600x400\", alt: \"Post cover image\" },\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const PostCenteredContentSchema = z.object({\n title: z.string(),\n author: z.string(),\n date: z.string(),\n category: z.string().optional(),\n body: z.string(),\n}).strict();\n\nexport type PostCenteredContent = z.infer<typeof PostCenteredContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Badge, Separator, cn } from \"@booga/vui\";\nimport { DBox, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { PostCenteredContentSchema, type PostCenteredContent } from \"./schema\";\n\nexport function PostCentered({ content, theme }: BlockProps<PostCenteredContent>) {\n PostCenteredContentSchema.parse(content);\n const { title, author, date, category, body } = content;\n return (\n <DBox as=\"article\" style={themeStyle(theme)}>\n <DStack px={6} py={16} gap={6} className={cn(\"max-w-2xl mx-auto\")}>\n {category && <Badge variant=\"secondary\" className={cn(\"self-start\")}>{category}</Badge>}\n <DBox as=\"h1\" className={cn(\"text-4xl font-bold tracking-tight leading-snug\")}>{title}</DBox>\n <DInline gap={2} color=\"muted\" className={cn(\"text-sm\")}>\n <DBox as=\"span\">{author}</DBox>\n <DBox as=\"span\" aria-hidden=\"true\">·</DBox>\n <DBox as=\"time\" dateTime={date}>{date}</DBox>\n </DInline>\n <Separator />\n <DBox as=\"p\" className={cn(\"text-base leading-relaxed\")}>{body}</DBox>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type PostCenteredContent } from \"./schema\";\n\nexport const PostCenteredDefaultContent: PostCenteredContent = {\n title: \"Designing for composability\",\n author: \"Alex Meridian\",\n date: \"2026-05-01\",\n category: \"Design systems\",\n body: \"Composable systems decouple structure from style, enabling teams to build faster without sacrificing consistency.\",\n};\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--v-color-background:98% 0.005 240;--v-color-foreground:12% 0.01 240;--v-color-card:100% 0 0;--v-color-card-foreground:12% 0.01 240;--v-color-popover:100% 0 0;--v-color-popover-foreground:12% 0.01 240;--v-color-primary:55% 0.2 250;--v-color-primary-foreground:99% 0.005 250;--v-color-secondary:95% 0.01 240;--v-color-secondary-foreground:20% 0.02 240;--v-color-muted:95% 0.008 240;--v-color-muted-foreground:55% 0.015 240;--v-color-accent:95% 0.01 240;--v-color-accent-foreground:20% 0.02 240;--v-color-destructive:55% 0.22 27;--v-color-destructive-foreground:99% 0.005 27;--v-color-success:55% 0.18 145;--v-color-success-foreground:99% 0.005 145;--v-color-warning:70% 0.18 65;--v-color-warning-foreground:20% 0.05 65;--v-color-border:90% 0.008 240;--v-color-input:90% 0.008 240;--v-color-ring:55% 0.2 250}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-y-0{top:0;bottom:0}.bottom-full{bottom:100%}.left-1\/2,.left-\[50\%\]{left:50%}.right-0{right:0}.top-16{top:4rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-20{height:5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-full{height:100%}.h-px{height:1px}.min-h-\[80px\]{min-height:80px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-72{width:18rem}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-lg{max-width:32rem}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0rem}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-0\.5{gap:.125rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-l{border-left-width:1px}.border-input{--tw-border-opacity:1;border-color:oklch(var(--v-color-input)/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.bg-background{--tw-bg-opacity:1;background-color:oklch(var(--v-color-background)/var(--tw-bg-opacity,1))}.bg-border{--tw-bg-opacity:1;background-color:oklch(var(--v-color-border)/var(--tw-bg-opacity,1))}.bg-card{--tw-bg-opacity:1;background-color:oklch(var(--v-color-card)/var(--tw-bg-opacity,1))}.bg-destructive{--tw-bg-opacity:1;background-color:oklch(var(--v-color-destructive)/var(--tw-bg-opacity,1))}.bg-input{--tw-bg-opacity:1;background-color:oklch(var(--v-color-input)/var(--tw-bg-opacity,1))}.bg-muted{--tw-bg-opacity:1;background-color:oklch(var(--v-color-muted)/var(--tw-bg-opacity,1))}.bg-popover{--tw-bg-opacity:1;background-color:oklch(var(--v-color-popover)/var(--tw-bg-opacity,1))}.bg-primary{--tw-bg-opacity:1;background-color:oklch(var(--v-color-primary)/var(--tw-bg-opacity,1))}.bg-secondary{--tw-bg-opacity:1;background-color:oklch(var(--v-color-secondary)/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.pt-0{padding-top:0}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:1.35;font-weight:600}.text-3xl{font-size:1.875rem;line-height:1.3;font-weight:700}.text-4xl{font-size:2.25rem;line-height:1.2;font-weight:700}.text-5xl{font-size:3rem;line-height:1.1;font-weight:800}.text-base{font-size:1rem;line-height:1.5;font-weight:400}.text-lg{font-size:1.125rem;line-height:1.45;font-weight:500}.text-sm{font-size:.875rem;line-height:1.55;font-weight:400}.text-xl{font-size:1.25rem;line-height:1.4;font-weight:600}.text-xs{font-size:.75rem;line-height:1.6;font-weight:400}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.not-italic{font-style:normal}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-card-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-card-foreground)/var(--tw-text-opacity,1))}.text-destructive-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-destructive-foreground)/var(--tw-text-opacity,1))}.text-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-foreground)/var(--tw-text-opacity,1))}.text-muted-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.text-popover-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-popover-foreground)/var(--tw-text-opacity,1))}.text-primary{--tw-text-opacity:1;color:oklch(var(--v-color-primary)/var(--tw-text-opacity,1))}.text-primary-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-primary-foreground)/var(--tw-text-opacity,1))}.text-secondary-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-secondary-foreground)/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:oklch(var(--v-color-primary)/1)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-offset-background{--tw-ring-offset-color:oklch(var(--v-color-background)/1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.55;font-weight:400}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.placeholder\:text-muted-foreground::placeholder{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.hover\:bg-accent:hover{--tw-bg-opacity:1;background-color:oklch(var(--v-color-accent)/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/90:hover{background-color:oklch(var(--v-color-destructive)/.9)}.hover\:bg-primary\/90:hover{background-color:oklch(var(--v-color-primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:oklch(var(--v-color-secondary)/.8)}.hover\:text-accent-foreground:hover{--tw-text-opacity:1;color:oklch(var(--v-color-accent-foreground)/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-opacity:1;--tw-ring-color:oklch(var(--v-color-ring)/var(--tw-ring-opacity,1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity:1;--tw-ring-color:oklch(var(--v-color-ring)/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}@media (min-width:640px){.sm\:max-w-sm{max-width:24rem}}
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--v-color-background:98% 0.005 240;--v-color-foreground:12% 0.01 240;--v-color-card:100% 0 0;--v-color-card-foreground:12% 0.01 240;--v-color-popover:100% 0 0;--v-color-popover-foreground:12% 0.01 240;--v-color-primary:55% 0.2 250;--v-color-primary-foreground:99% 0.005 250;--v-color-secondary:95% 0.01 240;--v-color-secondary-foreground:20% 0.02 240;--v-color-muted:95% 0.008 240;--v-color-muted-foreground:55% 0.015 240;--v-color-accent:95% 0.01 240;--v-color-accent-foreground:20% 0.02 240;--v-color-destructive:55% 0.22 27;--v-color-destructive-foreground:99% 0.005 27;--v-color-success:55% 0.18 145;--v-color-success-foreground:99% 0.005 145;--v-color-warning:70% 0.18 65;--v-color-warning-foreground:20% 0.05 65;--v-color-border:90% 0.008 240;--v-color-input:90% 0.008 240;--v-color-ring:55% 0.2 250}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-y-0{top:0;bottom:0}.bottom-full{bottom:100%}.left-1\/2,.left-\[50\%\]{left:50%}.right-0{right:0}.top-16{top:4rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.m-0{margin:0}.m-1{margin:.25rem}.m-12{margin:3rem}.m-16{margin:4rem}.m-2{margin:.5rem}.m-24{margin:6rem}.m-3{margin:.75rem}.m-32{margin:8rem}.m-4{margin:1rem}.m-6{margin:1.5rem}.m-8{margin:2rem}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-16{margin-left:4rem;margin-right:4rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-24{margin-left:6rem;margin-right:6rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-32{margin-left:8rem;margin-right:8rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-16{margin-top:4rem;margin-bottom:4rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-24{margin-top:6rem;margin-bottom:6rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-32{margin-top:8rem;margin-bottom:8rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-24{margin-bottom:6rem}.mb-3{margin-bottom:.75rem}.mb-32{margin-bottom:8rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-16{margin-left:4rem}.ml-2{margin-left:.5rem}.ml-24{margin-left:6rem}.ml-3{margin-left:.75rem}.ml-32{margin-left:8rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-12{margin-right:3rem}.mr-16{margin-right:4rem}.mr-2{margin-right:.5rem}.mr-24{margin-right:6rem}.mr-3{margin-right:.75rem}.mr-32{margin-right:8rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.mr-8{margin-right:2rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.mt-32{margin-top:8rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-20{height:5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-full{height:100%}.h-px{height:1px}.min-h-\[80px\]{min-height:80px}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-72{width:18rem}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-lg{max-width:32rem}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0rem}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.grid-rows-5{grid-template-rows:repeat(5,minmax(0,1fr))}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-24{gap:6rem}.gap-3{gap:.75rem}.gap-32{gap:8rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-l{border-left-width:1px}.border-input{--tw-border-opacity:1;border-color:oklch(var(--v-color-input)/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.bg-accent{--tw-bg-opacity:1;background-color:oklch(var(--v-color-accent)/var(--tw-bg-opacity,1))}.bg-background{--tw-bg-opacity:1;background-color:oklch(var(--v-color-background)/var(--tw-bg-opacity,1))}.bg-border{--tw-bg-opacity:1;background-color:oklch(var(--v-color-border)/var(--tw-bg-opacity,1))}.bg-card{--tw-bg-opacity:1;background-color:oklch(var(--v-color-card)/var(--tw-bg-opacity,1))}.bg-destructive{--tw-bg-opacity:1;background-color:oklch(var(--v-color-destructive)/var(--tw-bg-opacity,1))}.bg-foreground{--tw-bg-opacity:1;background-color:oklch(var(--v-color-foreground)/var(--tw-bg-opacity,1))}.bg-input{--tw-bg-opacity:1;background-color:oklch(var(--v-color-input)/var(--tw-bg-opacity,1))}.bg-muted{--tw-bg-opacity:1;background-color:oklch(var(--v-color-muted)/var(--tw-bg-opacity,1))}.bg-popover{--tw-bg-opacity:1;background-color:oklch(var(--v-color-popover)/var(--tw-bg-opacity,1))}.bg-primary{--tw-bg-opacity:1;background-color:oklch(var(--v-color-primary)/var(--tw-bg-opacity,1))}.bg-secondary{--tw-bg-opacity:1;background-color:oklch(var(--v-color-secondary)/var(--tw-bg-opacity,1))}.bg-success{--tw-bg-opacity:1;background-color:oklch(var(--v-color-success)/var(--tw-bg-opacity,1))}.bg-warning{--tw-bg-opacity:1;background-color:oklch(var(--v-color-warning)/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-12{padding:3rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-24{padding:6rem}.p-3{padding:.75rem}.p-32{padding:8rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-24{padding-left:6rem;padding-right:6rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-32{padding-left:8rem;padding-right:8rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-32{padding-bottom:8rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-12{padding-left:3rem}.pl-16{padding-left:4rem}.pl-2{padding-left:.5rem}.pl-24{padding-left:6rem}.pl-3{padding-left:.75rem}.pl-32{padding-left:8rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pr-12{padding-right:3rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-24{padding-right:6rem}.pr-3{padding-right:.75rem}.pr-32{padding-right:8rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-24{padding-top:6rem}.pt-3{padding-top:.75rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:1.35;font-weight:600}.text-3xl{font-size:1.875rem;line-height:1.3;font-weight:700}.text-4xl{font-size:2.25rem;line-height:1.2;font-weight:700}.text-5xl{font-size:3rem;line-height:1.1;font-weight:800}.text-base{font-size:1rem;line-height:1.5;font-weight:400}.text-lg{font-size:1.125rem;line-height:1.45;font-weight:500}.text-sm{font-size:.875rem;line-height:1.55;font-weight:400}.text-xl{font-size:1.25rem;line-height:1.4;font-weight:600}.text-xs{font-size:.75rem;line-height:1.6;font-weight:400}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.not-italic{font-style:normal}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-accent-foreground)/var(--tw-text-opacity,1))}.text-background{--tw-text-opacity:1;color:oklch(var(--v-color-background)/var(--tw-text-opacity,1))}.text-card-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-card-foreground)/var(--tw-text-opacity,1))}.text-destructive{--tw-text-opacity:1;color:oklch(var(--v-color-destructive)/var(--tw-text-opacity,1))}.text-destructive-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-destructive-foreground)/var(--tw-text-opacity,1))}.text-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-foreground)/var(--tw-text-opacity,1))}.text-muted-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.text-popover-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-popover-foreground)/var(--tw-text-opacity,1))}.text-primary{--tw-text-opacity:1;color:oklch(var(--v-color-primary)/var(--tw-text-opacity,1))}.text-primary-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-primary-foreground)/var(--tw-text-opacity,1))}.text-secondary-foreground{--tw-text-opacity:1;color:oklch(var(--v-color-secondary-foreground)/var(--tw-text-opacity,1))}.text-success{--tw-text-opacity:1;color:oklch(var(--v-color-success)/var(--tw-text-opacity,1))}.text-warning{--tw-text-opacity:1;color:oklch(var(--v-color-warning)/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:oklch(var(--v-color-primary)/1)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-offset-background{--tw-ring-offset-color:oklch(var(--v-color-background)/1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.55;font-weight:400}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.placeholder\:text-muted-foreground::placeholder{--tw-text-opacity:1;color:oklch(var(--v-color-muted-foreground)/var(--tw-text-opacity,1))}.hover\:bg-accent:hover{--tw-bg-opacity:1;background-color:oklch(var(--v-color-accent)/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/90:hover{background-color:oklch(var(--v-color-destructive)/.9)}.hover\:bg-primary\/90:hover{background-color:oklch(var(--v-color-primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:oklch(var(--v-color-secondary)/.8)}.hover\:text-accent-foreground:hover{--tw-text-opacity:1;color:oklch(var(--v-color-accent-foreground)/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-opacity:1;--tw-ring-color:oklch(var(--v-color-ring)/var(--tw-ring-opacity,1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-opacity:1;--tw-ring-color:oklch(var(--v-color-ring)/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}@media (min-width:640px){.sm\:max-w-sm{max-width:24rem}}
|
package/dist/team/index.cjs
CHANGED
|
@@ -86,7 +86,7 @@ function TeamGrid({ content, theme }) {
|
|
|
86
86
|
const { heading, members } = content;
|
|
87
87
|
return /* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "section", "aria-label": heading, style: themeStyle(theme), children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { px: 6, py: 16, className: vui.cn("max-w-6xl mx-auto gap-10"), children: [
|
|
88
88
|
/* @__PURE__ */ jsxRuntime.jsx(DBox, { as: "h2", className: vui.cn("text-3xl font-bold tracking-tight text-center"), children: heading }),
|
|
89
|
-
/* @__PURE__ */ jsxRuntime.jsx(DGrid, { columns: 3, gap: 6, children: members.map((member, i) => /* @__PURE__ */ jsxRuntime.jsx(vui.Card, { children: /* @__PURE__ */ jsxRuntime.jsx(vui.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { gap:
|
|
89
|
+
/* @__PURE__ */ jsxRuntime.jsx(DGrid, { columns: 3, gap: 6, children: members.map((member, i) => /* @__PURE__ */ jsxRuntime.jsx(vui.Card, { children: /* @__PURE__ */ jsxRuntime.jsx(vui.CardContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(DStack, { gap: 4, align: "center", py: 6, className: vui.cn("text-center"), children: [
|
|
90
90
|
/* @__PURE__ */ jsxRuntime.jsxs(vui.Avatar, { className: vui.cn("w-16 h-16"), children: [
|
|
91
91
|
/* @__PURE__ */ jsxRuntime.jsx(vui.AvatarImage, { src: member.avatar.src, alt: member.avatar.alt }),
|
|
92
92
|
/* @__PURE__ */ jsxRuntime.jsx(vui.AvatarFallback, { children: member.name.slice(0, 2).toUpperCase() })
|
package/dist/team/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/team/TeamSplit/schema.ts","../../src/team/TeamSplit/index.tsx","../../src/team/TeamSplit/default.ts","../../src/team/TeamGrid/schema.ts","../../src/team/TeamGrid/index.tsx","../../src/team/TeamGrid/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Avatar","AvatarImage","AvatarFallback","TeamMemberSchema","Card","CardContent"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { AvatarSchema } from \"../../shared/schemas\";\n\nconst TeamMemberSchema = z.object({\n name: z.string(),\n role: z.string(),\n avatar: AvatarSchema,\n bio: z.string().optional(),\n}).strict();\n\nexport const TeamSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n members: z.array(TeamMemberSchema).min(1),\n}).strict();\n\nexport type TeamSplitContent = z.infer<typeof TeamSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Avatar, AvatarFallback, AvatarImage, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { TeamSplitContentSchema, type TeamSplitContent } from \"./schema\";\n\nexport function TeamSplit({ content, theme }: BlockProps<TeamSplitContent>) {\n TeamSplitContentSchema.parse(content);\n const { heading, description, members } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DBox as=\"ul\" m={0} p={0} gap={6} display=\"flex\" className={cn(\"list-none flex-col\")}>\n {members.map((member, i) => (\n <DBox as=\"li\" key={i}>\n <DInline gap={4} align=\"start\">\n <Avatar>\n <AvatarImage src={member.avatar.src} alt={member.avatar.alt} />\n <AvatarFallback>{member.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <DStack gap={1}>\n <DBox as=\"p\" className={cn(\"font-semibold\")}>{member.name}</DBox>\n <DBox as=\"p\" color=\"muted\" className={cn(\"text-sm\")}>{member.role}</DBox>\n {member.bio && (\n <DBox as=\"p\" className={cn(\"text-sm mt-1\")}>{member.bio}</DBox>\n )}\n </DStack>\n </DInline>\n </DBox>\n ))}\n </DBox>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type TeamSplitContent } from \"./schema\";\n\nexport const TeamSplitDefaultContent: TeamSplitContent = {\n heading: \"Meet the team\",\n description: \"The people behind the product.\",\n members: [\n { name: \"Jordan Ellis\", role: \"Product Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Jordan Ellis\" }, bio: \"Focused on user experience and product strategy.\" },\n { name: \"Sam Rivera\", role: \"Engineering Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Sam Rivera\" }, bio: \"Architecting scalable systems since 2015.\" },\n { name: \"Taylor Kim\", role: \"Design Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Taylor Kim\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { AvatarSchema } from \"../../shared/schemas\";\n\nconst TeamMemberSchema = z.object({\n name: z.string(),\n role: z.string(),\n avatar: AvatarSchema,\n}).strict();\n\nexport const TeamGridContentSchema = z.object({\n heading: z.string(),\n members: z.array(TeamMemberSchema).min(1),\n}).strict();\n\nexport type TeamGridContent = z.infer<typeof TeamGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Avatar, AvatarFallback, AvatarImage, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { TeamGridContentSchema, type TeamGridContent } from \"./schema\";\n\nexport function TeamGrid({ content, theme }: BlockProps<TeamGridContent>) {\n TeamGridContentSchema.parse(content);\n const { heading, members } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DStack px={6} py={16} className={cn(\"max-w-6xl mx-auto gap-10\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight text-center\")}>{heading}</DBox>\n <DGrid columns={3} gap={6}>\n {members.map((member, i) => (\n <Card key={i}>\n <CardContent>\n <DStack gap={3} align=\"center\" pt={4} className={cn(\"text-center\")}>\n <Avatar className={cn(\"w-16 h-16\")}>\n <AvatarImage src={member.avatar.src} alt={member.avatar.alt} />\n <AvatarFallback>{member.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <DStack gap={1}>\n <DBox as=\"p\" className={cn(\"font-semibold\")}>{member.name}</DBox>\n <DBox as=\"p\" color=\"muted\" className={cn(\"text-sm\")}>{member.role}</DBox>\n </DStack>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type TeamGridContent } from \"./schema\";\n\nexport const TeamGridDefaultContent: TeamGridContent = {\n heading: \"Our team\",\n members: [\n { name: \"Jordan Ellis\", role: \"Product Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Jordan Ellis\" } },\n { name: \"Sam Rivera\", role: \"Engineering Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Sam Rivera\" } },\n { name: \"Taylor Kim\", role: \"Design Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Taylor Kim\" } },\n { name: \"Morgan Blake\", role: \"Research Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Morgan Blake\" } },\n ],\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives.ts","../../src/theme.ts","../../src/shared/schemas.ts","../../src/team/TeamSplit/schema.ts","../../src/team/TeamSplit/index.tsx","../../src/team/TeamSplit/default.ts","../../src/team/TeamGrid/schema.ts","../../src/team/TeamGrid/index.tsx","../../src/team/TeamGrid/default.ts"],"names":["dsl","Box","Stack","Grid","Inline","z","jsx","jsxs","cn","Avatar","AvatarImage","AvatarFallback","TeamMemberSchema","Card","CardContent"],"mappings":"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","file":"index.cjs","sourcesContent":["// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type ElementType } from \"react\";\nimport { dsl } from \"@booga/vdsl\";\nimport { Box, Stack, Grid, Inline } from \"@booga/vui\";\n\n// PolymorphicComponent is not structurally assignable to ElementType; dsl() uses\n// createElement() at runtime which accepts any callable, so the bridge is safe.\nexport const DBox = dsl(Box as unknown as ElementType);\nexport const DStack = dsl(Stack as unknown as ElementType);\nexport const DGrid = dsl(Grid as unknown as ElementType);\nexport const DInline = dsl(Inline as unknown as ElementType);\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type CSSProperties } from \"react\";\nimport { type ThemeOverride } from \"./types\";\n\nexport function themeStyle(theme: ThemeOverride | undefined): CSSProperties | undefined {\n if (!theme) return undefined;\n return Object.fromEntries(\n Object.entries(theme).map(([k, v]) => [`--v-${k}`, v])\n ) as CSSProperties;\n}\n\nexport function clampedGridCols(n: number): 1 | 2 | 3 | 4 | 5 | 6 {\n return Math.max(1, Math.min(6, Math.round(n))) as 1 | 2 | 3 | 4 | 5 | 6;\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\n\nexport const CtaSchema = z.object({\n label: z.string(),\n href: z.string(),\n}).strict();\n\nexport const ImageSchema = z.object({\n src: z.string(),\n alt: z.string(),\n}).strict();\n\nexport const AvatarSchema = ImageSchema;\n\nexport type Cta = z.infer<typeof CtaSchema>;\nexport type Image = z.infer<typeof ImageSchema>;\nexport type AvatarSrc = Image;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { AvatarSchema } from \"../../shared/schemas\";\n\nconst TeamMemberSchema = z.object({\n name: z.string(),\n role: z.string(),\n avatar: AvatarSchema,\n bio: z.string().optional(),\n}).strict();\n\nexport const TeamSplitContentSchema = z.object({\n heading: z.string(),\n description: z.string().optional(),\n members: z.array(TeamMemberSchema).min(1),\n}).strict();\n\nexport type TeamSplitContent = z.infer<typeof TeamSplitContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Avatar, AvatarFallback, AvatarImage, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DInline, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { TeamSplitContentSchema, type TeamSplitContent } from \"./schema\";\n\nexport function TeamSplit({ content, theme }: BlockProps<TeamSplitContent>) {\n TeamSplitContentSchema.parse(content);\n const { heading, description, members } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DGrid columns={2} px={6} py={16} gap={16} align=\"start\" className={cn(\"max-w-6xl mx-auto\")}>\n <DStack gap={4} className={cn(\"sticky top-16\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight\")}>{heading}</DBox>\n {description && (\n <DBox as=\"p\" color=\"muted\">{description}</DBox>\n )}\n </DStack>\n <DBox as=\"ul\" m={0} p={0} gap={6} display=\"flex\" className={cn(\"list-none flex-col\")}>\n {members.map((member, i) => (\n <DBox as=\"li\" key={i}>\n <DInline gap={4} align=\"start\">\n <Avatar>\n <AvatarImage src={member.avatar.src} alt={member.avatar.alt} />\n <AvatarFallback>{member.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <DStack gap={1}>\n <DBox as=\"p\" className={cn(\"font-semibold\")}>{member.name}</DBox>\n <DBox as=\"p\" color=\"muted\" className={cn(\"text-sm\")}>{member.role}</DBox>\n {member.bio && (\n <DBox as=\"p\" className={cn(\"text-sm mt-1\")}>{member.bio}</DBox>\n )}\n </DStack>\n </DInline>\n </DBox>\n ))}\n </DBox>\n </DGrid>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type TeamSplitContent } from \"./schema\";\n\nexport const TeamSplitDefaultContent: TeamSplitContent = {\n heading: \"Meet the team\",\n description: \"The people behind the product.\",\n members: [\n { name: \"Jordan Ellis\", role: \"Product Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Jordan Ellis\" }, bio: \"Focused on user experience and product strategy.\" },\n { name: \"Sam Rivera\", role: \"Engineering Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Sam Rivera\" }, bio: \"Architecting scalable systems since 2015.\" },\n { name: \"Taylor Kim\", role: \"Design Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Taylor Kim\" } },\n ],\n};\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { z } from \"zod\";\nimport { AvatarSchema } from \"../../shared/schemas\";\n\nconst TeamMemberSchema = z.object({\n name: z.string(),\n role: z.string(),\n avatar: AvatarSchema,\n}).strict();\n\nexport const TeamGridContentSchema = z.object({\n heading: z.string(),\n members: z.array(TeamMemberSchema).min(1),\n}).strict();\n\nexport type TeamGridContent = z.infer<typeof TeamGridContentSchema>;\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { Avatar, AvatarFallback, AvatarImage, Card, CardContent, cn } from \"@booga/vui\";\nimport { DBox, DGrid, DStack } from \"../../primitives\";\nimport { type BlockProps } from \"../../types\";\nimport { themeStyle } from \"../../theme\";\nimport { TeamGridContentSchema, type TeamGridContent } from \"./schema\";\n\nexport function TeamGrid({ content, theme }: BlockProps<TeamGridContent>) {\n TeamGridContentSchema.parse(content);\n const { heading, members } = content;\n return (\n <DBox as=\"section\" aria-label={heading} style={themeStyle(theme)}>\n <DStack px={6} py={16} className={cn(\"max-w-6xl mx-auto gap-10\")}>\n <DBox as=\"h2\" className={cn(\"text-3xl font-bold tracking-tight text-center\")}>{heading}</DBox>\n <DGrid columns={3} gap={6}>\n {members.map((member, i) => (\n <Card key={i}>\n <CardContent>\n <DStack gap={4} align=\"center\" py={6} className={cn(\"text-center\")}>\n <Avatar className={cn(\"w-16 h-16\")}>\n <AvatarImage src={member.avatar.src} alt={member.avatar.alt} />\n <AvatarFallback>{member.name.slice(0, 2).toUpperCase()}</AvatarFallback>\n </Avatar>\n <DStack gap={1}>\n <DBox as=\"p\" className={cn(\"font-semibold\")}>{member.name}</DBox>\n <DBox as=\"p\" color=\"muted\" className={cn(\"text-sm\")}>{member.role}</DBox>\n </DStack>\n </DStack>\n </CardContent>\n </Card>\n ))}\n </DGrid>\n </DStack>\n </DBox>\n );\n}\n","// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 bvasilenko\nimport { type TeamGridContent } from \"./schema\";\n\nexport const TeamGridDefaultContent: TeamGridContent = {\n heading: \"Our team\",\n members: [\n { name: \"Jordan Ellis\", role: \"Product Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Jordan Ellis\" } },\n { name: \"Sam Rivera\", role: \"Engineering Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Sam Rivera\" } },\n { name: \"Taylor Kim\", role: \"Design Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Taylor Kim\" } },\n { name: \"Morgan Blake\", role: \"Research Lead\", avatar: { src: \"https://placehold.co/80x80\", alt: \"Morgan Blake\" } },\n ],\n};\n"]}
|
package/dist/team/index.js
CHANGED
|
@@ -84,7 +84,7 @@ function TeamGrid({ content, theme }) {
|
|
|
84
84
|
const { heading, members } = content;
|
|
85
85
|
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: [
|
|
86
86
|
/* @__PURE__ */ jsx(DBox, { as: "h2", className: cn("text-3xl font-bold tracking-tight text-center"), children: heading }),
|
|
87
|
-
/* @__PURE__ */ jsx(DGrid, { columns: 3, gap: 6, children: members.map((member, i) => /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(DStack, { gap:
|
|
87
|
+
/* @__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: [
|
|
88
88
|
/* @__PURE__ */ jsxs(Avatar, { className: cn("w-16 h-16"), children: [
|
|
89
89
|
/* @__PURE__ */ jsx(AvatarImage, { src: member.avatar.src, alt: member.avatar.alt }),
|
|
90
90
|
/* @__PURE__ */ jsx(AvatarFallback, { children: member.name.slice(0, 2).toUpperCase() })
|