fulldev-ui 0.7.0-beta.3 → 0.7.0-beta.5
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/astro.config.ts +0 -2
- package/package.json +26 -21
- package/pnpm-lock.yaml +209 -751
- package/src/blocks/Faqs2.astro +1 -1
- package/src/components/Block.astro +9 -15
- package/src/components/Form.vue +2 -5
- package/src/components/Icon.astro +18 -11
- package/src/components/ui/button/Button.vue +2 -2
- package/src/content/blocks/category-group1.md +18 -0
- package/src/content/blocks/category-list1.md +22 -0
- package/src/content/blocks/contact1.md +30 -0
- package/src/content/blocks/contact2.md +31 -0
- package/src/content/blocks/content1.md +14 -0
- package/src/content/blocks/cta1.md +11 -0
- package/src/content/blocks/faqs1.md +18 -0
- package/src/content/blocks/faqs2.md +18 -0
- package/src/content/blocks/features1.md +16 -0
- package/src/content/blocks/hero1.md +14 -0
- package/src/content/blocks/intro1.md +6 -0
- package/src/content/blocks/post-single1.md +18 -0
- package/src/content/blocks/product-group1.md +21 -0
- package/src/content/blocks/product-list1.md +25 -0
- package/src/content/blocks/product-single1.md +23 -0
- package/src/content/blocks/reviews1.md +16 -0
- package/src/content.config.ts +20 -0
- package/src/data/settings.json +26 -0
- package/src/layouts/NavigationLayout.astro +14 -0
- package/src/pages/blocks/[...block].astro +24 -0
- package/src/pages/blocks/index.astro +21 -0
- package/src/pages/index.astro +8 -0
- package/src/schemas/blocks/categoryGroup.ts +1 -1
- package/src/schemas/blocks/faqs.ts +4 -3
- package/src/schemas/blocks/features.ts +5 -4
- package/src/schemas/collections/block.ts +83 -0
- package/src/schemas/collections/category.ts +11 -0
- package/src/schemas/collections/page.ts +13 -0
- package/src/schemas/collections/post.ts +11 -0
- package/src/schemas/collections/product.ts +11 -0
- package/src/schemas/fields/section.ts +2 -2
- package/src/styles/global.css +123 -0
- package/src/components/ui/breadcrumb/Breadcrumb.vue +0 -13
- package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +0 -22
- package/src/components/ui/breadcrumb/BreadcrumbItem.vue +0 -14
- package/src/components/ui/breadcrumb/BreadcrumbLink.vue +0 -19
- package/src/components/ui/breadcrumb/BreadcrumbList.vue +0 -16
- package/src/components/ui/breadcrumb/BreadcrumbPage.vue +0 -19
- package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +0 -21
- package/src/components/ui/breadcrumb/index.ts +0 -7
- package/src/schemas/fields/block.ts +0 -60
package/src/blocks/Faqs2.astro
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
// FIXME
|
|
4
2
|
import { getEntries } from 'astro:content'
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
let { block, cards, pages, categories, products, ...rest } = Astro.props
|
|
4
|
+
let { block, categories, products, ...rest } = Astro.props
|
|
9
5
|
|
|
10
6
|
const blocks = {
|
|
11
7
|
...import.meta.glob('/src/blocks/**/*.astro'),
|
|
@@ -16,28 +12,26 @@ const path = Object.keys(blocks).find((path) => path.split('/').pop()?.split('.'
|
|
|
16
12
|
|
|
17
13
|
const BlockComponent = path && (await (blocks[path] as any)()).default
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
categories
|
|
21
|
-
(await getEntries(categories)).map((category) => ({
|
|
15
|
+
if (categories && categories[0]?.id) {
|
|
16
|
+
categories = (await getEntries(categories)).map((category: any) => ({
|
|
22
17
|
slug: category.id,
|
|
23
18
|
...category.data,
|
|
24
19
|
}))
|
|
20
|
+
}
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
products
|
|
28
|
-
(await getEntries(products)).map((product) => ({
|
|
22
|
+
if (products && products[0]?.id) {
|
|
23
|
+
products = (await getEntries(products)).map((product: any) => ({
|
|
29
24
|
slug: product.id,
|
|
30
25
|
...product.data,
|
|
31
26
|
}))
|
|
27
|
+
}
|
|
32
28
|
---
|
|
33
29
|
|
|
34
30
|
{
|
|
35
31
|
BlockComponent && (
|
|
36
32
|
<BlockComponent
|
|
37
|
-
{
|
|
38
|
-
{
|
|
39
|
-
categories={categoriesEntries}
|
|
40
|
-
products={productsEntries}
|
|
33
|
+
{categories}
|
|
34
|
+
{products}
|
|
41
35
|
{...rest}
|
|
42
36
|
>
|
|
43
37
|
<slot />
|
package/src/components/Form.vue
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { AutoForm } from 'fulldev-ui/components/ui/auto-form'
|
|
3
3
|
import { Button } from 'fulldev-ui/components/ui/button'
|
|
4
|
-
import type { FormHTMLAttributes } from 'vue'
|
|
5
4
|
import { z } from 'zod'
|
|
6
5
|
|
|
7
|
-
interface Props
|
|
6
|
+
interface Props {
|
|
8
7
|
fields?: {
|
|
9
8
|
label: string
|
|
10
9
|
type: 'text' | 'email' | 'checkbox' | 'select'
|
|
@@ -14,7 +13,7 @@ interface Props extends /* @vue-ignore */ FormHTMLAttributes {
|
|
|
14
13
|
submit?: string
|
|
15
14
|
}
|
|
16
15
|
|
|
17
|
-
const { fields,
|
|
16
|
+
const { fields, submit } = defineProps<Props>()
|
|
18
17
|
|
|
19
18
|
// Conditionally add the optional flag to the zod schema
|
|
20
19
|
const withOptional = (optional: boolean | undefined, schema: z.ZodSchema) => (optional ? schema.optional() : schema)
|
|
@@ -71,8 +70,6 @@ const config = (fields || []).reduce((acc: any, field) => {
|
|
|
71
70
|
class="w-full space-y-6 [&>div>p[role='alert']]:hidden"
|
|
72
71
|
:field-config="config"
|
|
73
72
|
:schema="schema"
|
|
74
|
-
:action
|
|
75
|
-
:method
|
|
76
73
|
>
|
|
77
74
|
<slot />
|
|
78
75
|
<Button type="submit">
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
---
|
|
2
|
-
import
|
|
3
|
-
import type {
|
|
2
|
+
import tablerIcons from '@iconify-json/tabler/icons.json'
|
|
3
|
+
import type { HTMLAttributes } from 'astro/types'
|
|
4
|
+
import Box from 'fulldev-ui/components/Box.astro'
|
|
4
5
|
|
|
5
|
-
interface Props extends
|
|
6
|
+
interface Props extends HTMLAttributes<'svg'> {
|
|
7
|
+
name?: string | undefined
|
|
8
|
+
}
|
|
6
9
|
|
|
7
10
|
const { name, ...rest } = Astro.props
|
|
11
|
+
|
|
12
|
+
const trimmedName = name?.trim()
|
|
13
|
+
const icon = trimmedName ? (tablerIcons as any)?.icons[trimmedName]?.body : undefined
|
|
8
14
|
---
|
|
9
15
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
16
|
+
<Box
|
|
17
|
+
class:list="icon size-[1em] inline-flex child:stroke-[calc(1em/12)]"
|
|
18
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
19
|
+
viewBox="0 0 24 24"
|
|
20
|
+
as="svg"
|
|
21
|
+
{...rest}
|
|
22
|
+
>
|
|
23
|
+
<Fragment set:html={icon} />
|
|
24
|
+
</Box>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
|
2
3
|
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
4
|
import { Primitive, type PrimitiveProps } from 'radix-vue'
|
|
4
|
-
import type { HTMLAttributes } from 'vue'
|
|
5
5
|
import { type ButtonVariants, buttonVariants } from '.'
|
|
6
6
|
|
|
7
|
-
interface Props extends
|
|
7
|
+
interface Props extends PrimitiveProps {
|
|
8
8
|
variant?: ButtonVariants['variant']
|
|
9
9
|
size?: ButtonVariants['size']
|
|
10
10
|
class?: HTMLAttributes['class']
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: CategoryGroup1
|
|
3
|
+
title: "Lorem ipsum dolor sit amet"
|
|
4
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
5
|
+
categories:
|
|
6
|
+
- title: "Lorem ipsum"
|
|
7
|
+
image:
|
|
8
|
+
src: "/images/placeholder.webp"
|
|
9
|
+
alt: "alt"
|
|
10
|
+
- title: "Lorem ipsum"
|
|
11
|
+
image:
|
|
12
|
+
src: "/images/placeholder.webp"
|
|
13
|
+
alt: "alt"
|
|
14
|
+
- title: "Lorem ipsum"
|
|
15
|
+
image:
|
|
16
|
+
src: "/images/placeholder.webp"
|
|
17
|
+
alt: "alt"
|
|
18
|
+
---
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: CategoryList1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
button:
|
|
7
|
+
text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
categories:
|
|
10
|
+
- title: "Lorem ipsum"
|
|
11
|
+
image:
|
|
12
|
+
src: "/images/placeholder.webp"
|
|
13
|
+
alt: "alt"
|
|
14
|
+
- title: "Lorem ipsum"
|
|
15
|
+
image:
|
|
16
|
+
src: "/images/placeholder.webp"
|
|
17
|
+
alt: "alt"
|
|
18
|
+
- title: "Lorem ipsum"
|
|
19
|
+
image:
|
|
20
|
+
src: "/images/placeholder.webp"
|
|
21
|
+
alt: "alt"
|
|
22
|
+
---
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Contact1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Neem contact op</h1>
|
|
5
|
+
<p>
|
|
6
|
+
Neem contact op voor reparaties en vragen. Bezoek onze winkel op Hogeweg 26, Amsterdam.
|
|
7
|
+
</p>
|
|
8
|
+
channels:
|
|
9
|
+
- text: '1234566'
|
|
10
|
+
href: '#'
|
|
11
|
+
icon: phone
|
|
12
|
+
- text: 'lorem@ipsum.com'
|
|
13
|
+
href: '#'
|
|
14
|
+
icon: mail
|
|
15
|
+
- text: Lorem ipsum, dolor sit, amet
|
|
16
|
+
href: '#'
|
|
17
|
+
icon: map-pin
|
|
18
|
+
form:
|
|
19
|
+
fields:
|
|
20
|
+
- type: text
|
|
21
|
+
label: Name
|
|
22
|
+
- type: email
|
|
23
|
+
label: Email
|
|
24
|
+
- type: text
|
|
25
|
+
label: Phone
|
|
26
|
+
- type: textarea
|
|
27
|
+
label: Message
|
|
28
|
+
optional: true
|
|
29
|
+
submit: Send message
|
|
30
|
+
---
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Contact2
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Neem contact op</h1>
|
|
5
|
+
<p>
|
|
6
|
+
Neem contact op voor reparaties en vragen. Bezoek onze winkel op Hogeweg 26, Amsterdam.
|
|
7
|
+
</p>
|
|
8
|
+
channels:
|
|
9
|
+
- text: '1234566'
|
|
10
|
+
href: '#'
|
|
11
|
+
icon: phone
|
|
12
|
+
- text: 'lorem@ipsum.com'
|
|
13
|
+
href: '#'
|
|
14
|
+
icon: mail
|
|
15
|
+
- text: Lorem ipsum, dolor sit, amet
|
|
16
|
+
href: '#'
|
|
17
|
+
icon: map-pin
|
|
18
|
+
form:
|
|
19
|
+
action: '#'
|
|
20
|
+
fields:
|
|
21
|
+
- type: text
|
|
22
|
+
label: Name
|
|
23
|
+
- type: email
|
|
24
|
+
label: Email
|
|
25
|
+
- type: text
|
|
26
|
+
label: Phone
|
|
27
|
+
- type: textarea
|
|
28
|
+
label: Message
|
|
29
|
+
optional: true
|
|
30
|
+
submit: Send message
|
|
31
|
+
---
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Content1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
buttons:
|
|
7
|
+
- text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
- text: "Lorem ipsum"
|
|
10
|
+
href: "#"
|
|
11
|
+
image:
|
|
12
|
+
src: "/images/placeholder.webp"
|
|
13
|
+
alt: "alt"
|
|
14
|
+
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Faqs1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
buttons:
|
|
7
|
+
- text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
- text: "Lorem ipsum"
|
|
10
|
+
href: "#"
|
|
11
|
+
faqs:
|
|
12
|
+
- title: "Lorem ipsum 1"
|
|
13
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
14
|
+
- title: "Lorem ipsum 2"
|
|
15
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
16
|
+
- title: "Lorem ipsum 3"
|
|
17
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
18
|
+
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Faqs2
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
buttons:
|
|
7
|
+
- text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
- text: "Lorem ipsum"
|
|
10
|
+
href: "#"
|
|
11
|
+
faqs:
|
|
12
|
+
- title: "Lorem ipsum 1"
|
|
13
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
14
|
+
- title: "Lorem ipsum 2"
|
|
15
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
16
|
+
- title: "Lorem ipsum 3"
|
|
17
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
18
|
+
---
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Features1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
features:
|
|
7
|
+
- icon: check
|
|
8
|
+
title: "Lorem ipsum"
|
|
9
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
10
|
+
- icon: check
|
|
11
|
+
title: "Lorem ipsum"
|
|
12
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
13
|
+
- icon: check
|
|
14
|
+
title: "Lorem ipsum"
|
|
15
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
16
|
+
---
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Hero1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
buttons:
|
|
7
|
+
- text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
- text: "Lorem ipsum"
|
|
10
|
+
href: "#"
|
|
11
|
+
image:
|
|
12
|
+
src: "/images/placeholder.webp"
|
|
13
|
+
alt: "alt"
|
|
14
|
+
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: PostSingle1
|
|
3
|
+
title: "Lorem ipsum dolor sit amet"
|
|
4
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
5
|
+
image:
|
|
6
|
+
src: "/images/placeholder.webp"
|
|
7
|
+
alt: "alt"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
11
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
12
|
+
|
|
13
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
14
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
15
|
+
|
|
16
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
17
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
18
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: ProductGroup1
|
|
3
|
+
title: "Lorem ipsum dolor sit amet"
|
|
4
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
5
|
+
products:
|
|
6
|
+
- title: "Lorem ipsum"
|
|
7
|
+
price: 100
|
|
8
|
+
images:
|
|
9
|
+
- src: "/images/placeholder.webp"
|
|
10
|
+
alt: "alt"
|
|
11
|
+
- title: "Lorem ipsum"
|
|
12
|
+
price: 100
|
|
13
|
+
images:
|
|
14
|
+
- src: "/images/placeholder.webp"
|
|
15
|
+
alt: "alt"
|
|
16
|
+
- title: "Lorem ipsum"
|
|
17
|
+
price: 100
|
|
18
|
+
images:
|
|
19
|
+
- src: "/images/placeholder.webp"
|
|
20
|
+
alt: "alt"
|
|
21
|
+
---
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: ProductList1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
button:
|
|
7
|
+
text: "Lorem ipsum"
|
|
8
|
+
href: "#"
|
|
9
|
+
products:
|
|
10
|
+
- title: "Lorem ipsum"
|
|
11
|
+
price: 100
|
|
12
|
+
images:
|
|
13
|
+
- src: "/images/placeholder.webp"
|
|
14
|
+
alt: "alt"
|
|
15
|
+
- title: "Lorem ipsum"
|
|
16
|
+
price: 100
|
|
17
|
+
images:
|
|
18
|
+
- src: "/images/placeholder.webp"
|
|
19
|
+
alt: "alt"
|
|
20
|
+
- title: "Lorem ipsum"
|
|
21
|
+
price: 100
|
|
22
|
+
images:
|
|
23
|
+
- src: "/images/placeholder.webp"
|
|
24
|
+
alt: "alt"
|
|
25
|
+
---
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: ProductSingle1
|
|
3
|
+
title: "Lorem ipsum dolor sit amet"
|
|
4
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
5
|
+
price: 100
|
|
6
|
+
images:
|
|
7
|
+
- src: "/images/placeholder.webp"
|
|
8
|
+
alt: "alt"
|
|
9
|
+
- src: "/images/placeholder.webp"
|
|
10
|
+
alt: "alt"
|
|
11
|
+
- src: "/images/placeholder.webp"
|
|
12
|
+
alt: "alt"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
16
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
17
|
+
|
|
18
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
19
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
20
|
+
|
|
21
|
+
<h2>Lorem ipsum dolor sit amet</h2>
|
|
22
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
23
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
block: Reviews1
|
|
3
|
+
writeup: |
|
|
4
|
+
<h1>Lorem ipsum dolor sit amet</h1>
|
|
5
|
+
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
|
|
6
|
+
reviews:
|
|
7
|
+
- rating: 5
|
|
8
|
+
title: "Lorem ipsum"
|
|
9
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
10
|
+
- rating: 5
|
|
11
|
+
title: "Lorem ipsum"
|
|
12
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
13
|
+
- rating: 5
|
|
14
|
+
title: "Lorem ipsum"
|
|
15
|
+
description: "Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos."
|
|
16
|
+
---
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { glob } from 'astro/loaders'
|
|
2
|
+
import { defineCollection, z } from 'astro:content'
|
|
3
|
+
import { pageSchema } from 'fulldev-ui/schemas/collections/page'
|
|
4
|
+
|
|
5
|
+
export const collections = {
|
|
6
|
+
pages: defineCollection({
|
|
7
|
+
loader: glob({
|
|
8
|
+
pattern: '**/[^_]*.{md,mdx}',
|
|
9
|
+
base: './src/content/pages',
|
|
10
|
+
}),
|
|
11
|
+
schema: pageSchema,
|
|
12
|
+
}),
|
|
13
|
+
blocks: defineCollection({
|
|
14
|
+
loader: glob({
|
|
15
|
+
pattern: '**/[^_]*.{md,mdx}',
|
|
16
|
+
base: './src/content/blocks',
|
|
17
|
+
}),
|
|
18
|
+
schema: z.any(),
|
|
19
|
+
}),
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"company": "Fulldev UI",
|
|
3
|
+
"title": "Fulldev UI",
|
|
4
|
+
"description": "The Astro UI library for building content sites. Components and blocks to build content-driven websites.",
|
|
5
|
+
"logo": {
|
|
6
|
+
"src": "/images/logo.svg",
|
|
7
|
+
"alt": "Fulldev UI",
|
|
8
|
+
"text": "Fulldev UI"
|
|
9
|
+
},
|
|
10
|
+
"header": {
|
|
11
|
+
"menus": [
|
|
12
|
+
{
|
|
13
|
+
"text": "Docs",
|
|
14
|
+
"href": "/docs/"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"text": "Components",
|
|
18
|
+
"href": "/docs/components/"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"text": "Blocks",
|
|
22
|
+
"href": "/blocks/"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { ComponentProps } from 'astro/types'
|
|
3
|
+
import Box from 'fulldev-ui/components/Box.astro'
|
|
4
|
+
import Layout from 'fulldev-ui/components/Layout.astro'
|
|
5
|
+
import 'fulldev-ui/styles/global.css'
|
|
6
|
+
|
|
7
|
+
interface Props extends ComponentProps<typeof Layout> {}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<Layout>
|
|
11
|
+
<Box as="main">
|
|
12
|
+
<slot />
|
|
13
|
+
</Box>
|
|
14
|
+
</Layout>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { getCollection, render } from 'astro:content'
|
|
3
|
+
import Block from 'fulldev-ui/components/Block.astro'
|
|
4
|
+
import NavigationLayout from 'fulldev-ui/layouts/NavigationLayout.astro'
|
|
5
|
+
|
|
6
|
+
export async function getStaticPaths() {
|
|
7
|
+
const collection = await getCollection('blocks')
|
|
8
|
+
return collection.map((entry) => ({
|
|
9
|
+
params: {
|
|
10
|
+
block: entry.id,
|
|
11
|
+
},
|
|
12
|
+
props: entry,
|
|
13
|
+
}))
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const { Content } = await render(Astro.props)
|
|
17
|
+
const { data } = Astro.props
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<NavigationLayout>
|
|
21
|
+
<Block {...data}>
|
|
22
|
+
<Content />
|
|
23
|
+
</Block>
|
|
24
|
+
</NavigationLayout>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { getCollection } from 'astro:content'
|
|
3
|
+
import NavigationLayout from 'fulldev-ui/layouts/NavigationLayout.astro'
|
|
4
|
+
|
|
5
|
+
const collection = await getCollection('blocks')
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<NavigationLayout>
|
|
9
|
+
<h1 class="p4 text-2xl font-bold">Blocks</h1>
|
|
10
|
+
<ul class="list-dist my-6 ml-4 list-disc p-4 li:mt-2">
|
|
11
|
+
{
|
|
12
|
+
collection
|
|
13
|
+
.sort((a, b) => a.id.localeCompare(b.id))
|
|
14
|
+
.map((block) => (
|
|
15
|
+
<li>
|
|
16
|
+
<a href={`/blocks/${block.id}/`}>{block.id}</a>
|
|
17
|
+
</li>
|
|
18
|
+
))
|
|
19
|
+
}
|
|
20
|
+
</ul>
|
|
21
|
+
</NavigationLayout>
|
|
@@ -7,10 +7,11 @@ export const faqsSchema = z
|
|
|
7
7
|
buttons: buttonSchema.array().optional(),
|
|
8
8
|
faqs: z
|
|
9
9
|
.object({
|
|
10
|
-
title: z.string(),
|
|
11
|
-
description: z.string(),
|
|
10
|
+
title: z.string().optional(),
|
|
11
|
+
description: z.string().optional(),
|
|
12
12
|
})
|
|
13
|
-
.array()
|
|
13
|
+
.array()
|
|
14
|
+
.optional(),
|
|
14
15
|
})
|
|
15
16
|
.strict()
|
|
16
17
|
|
|
@@ -5,11 +5,12 @@ export const featuresSchema = z
|
|
|
5
5
|
writeup: z.string().optional(),
|
|
6
6
|
features: z
|
|
7
7
|
.object({
|
|
8
|
-
icon: z.string(),
|
|
9
|
-
title: z.string(),
|
|
10
|
-
description: z.string(),
|
|
8
|
+
icon: z.string().optional(),
|
|
9
|
+
title: z.string().optional(),
|
|
10
|
+
description: z.string().optional(),
|
|
11
11
|
})
|
|
12
|
-
.array()
|
|
12
|
+
.array()
|
|
13
|
+
.optional(),
|
|
13
14
|
})
|
|
14
15
|
.strict()
|
|
15
16
|
|