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
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from 'astro:content'
|
|
2
|
+
import { categoryGroupSchema } from '../blocks/categoryGroup'
|
|
3
|
+
import { categoryListSchema } from '../blocks/categoryList'
|
|
4
|
+
import { contactSchema } from '../blocks/contact'
|
|
5
|
+
import { contentSchema } from '../blocks/content'
|
|
6
|
+
import { ctaSchema } from '../blocks/cta'
|
|
7
|
+
import { faqsSchema } from '../blocks/faqs'
|
|
8
|
+
import { featuresSchema } from '../blocks/features'
|
|
9
|
+
import { footerSchema } from '../blocks/footer'
|
|
10
|
+
import { headerSchema } from '../blocks/header'
|
|
11
|
+
import { heroSchema } from '../blocks/hero'
|
|
12
|
+
import { introSchema } from '../blocks/intro'
|
|
13
|
+
import { postSingleSchema } from '../blocks/postSingle'
|
|
14
|
+
import { productGroupSchema } from '../blocks/productGroup'
|
|
15
|
+
import { productListSchema } from '../blocks/productList'
|
|
16
|
+
import { productSingleSchema } from '../blocks/productSingle'
|
|
17
|
+
import { reviewsSchema } from '../blocks/reviews'
|
|
18
|
+
|
|
19
|
+
// export const blockSchema = z
|
|
20
|
+
// .object({
|
|
21
|
+
// title: z.string().optional(),
|
|
22
|
+
// description: z.string().optional(),
|
|
23
|
+
// categories: categorySingleSchema
|
|
24
|
+
// .extend({
|
|
25
|
+
// href: z.string().optional(),
|
|
26
|
+
// })
|
|
27
|
+
// .array()
|
|
28
|
+
// .optional(),
|
|
29
|
+
// })
|
|
30
|
+
// .passthrough()
|
|
31
|
+
|
|
32
|
+
export const blockSchema = z.union([
|
|
33
|
+
categoryGroupSchema.extend({
|
|
34
|
+
block: z.string(),
|
|
35
|
+
}),
|
|
36
|
+
categoryListSchema.extend({
|
|
37
|
+
block: z.string(),
|
|
38
|
+
}),
|
|
39
|
+
contactSchema.extend({
|
|
40
|
+
block: z.string(),
|
|
41
|
+
}),
|
|
42
|
+
contentSchema.extend({
|
|
43
|
+
block: z.string(),
|
|
44
|
+
}),
|
|
45
|
+
ctaSchema.extend({
|
|
46
|
+
block: z.string(),
|
|
47
|
+
}),
|
|
48
|
+
faqsSchema.extend({
|
|
49
|
+
block: z.string(),
|
|
50
|
+
}),
|
|
51
|
+
featuresSchema.extend({
|
|
52
|
+
block: z.string(),
|
|
53
|
+
}),
|
|
54
|
+
footerSchema.extend({
|
|
55
|
+
block: z.string(),
|
|
56
|
+
}),
|
|
57
|
+
headerSchema.extend({
|
|
58
|
+
block: z.string(),
|
|
59
|
+
}),
|
|
60
|
+
heroSchema.extend({
|
|
61
|
+
block: z.string(),
|
|
62
|
+
}),
|
|
63
|
+
introSchema.extend({
|
|
64
|
+
block: z.string(),
|
|
65
|
+
}),
|
|
66
|
+
postSingleSchema.extend({
|
|
67
|
+
block: z.string(),
|
|
68
|
+
}),
|
|
69
|
+
productGroupSchema.extend({
|
|
70
|
+
block: z.string(),
|
|
71
|
+
}),
|
|
72
|
+
productListSchema.extend({
|
|
73
|
+
block: z.string(),
|
|
74
|
+
}),
|
|
75
|
+
productSingleSchema.extend({
|
|
76
|
+
block: z.string(),
|
|
77
|
+
}),
|
|
78
|
+
reviewsSchema.extend({
|
|
79
|
+
block: z.string(),
|
|
80
|
+
}),
|
|
81
|
+
])
|
|
82
|
+
|
|
83
|
+
export type BlockSchema = z.infer<typeof blockSchema>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'astro:content'
|
|
2
|
+
import { categorySingleSchema } from 'fulldev-ui/schemas/blocks/categorySingle'
|
|
3
|
+
import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
|
|
4
|
+
import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
|
|
5
|
+
|
|
6
|
+
export const categorySchema = categorySingleSchema.extend({
|
|
7
|
+
meta: metaSchema.optional(),
|
|
8
|
+
sections: sectionSchema.array().optional(),
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
export type CategorySchema = z.infer<typeof categorySchema>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'astro:content'
|
|
2
|
+
import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
|
|
3
|
+
import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
|
|
4
|
+
|
|
5
|
+
export const pageSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
title: z.string().optional(),
|
|
8
|
+
meta: metaSchema.optional(),
|
|
9
|
+
sections: sectionSchema.array().optional(),
|
|
10
|
+
})
|
|
11
|
+
.strict()
|
|
12
|
+
|
|
13
|
+
export type PageSchema = z.infer<typeof pageSchema>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'astro:content'
|
|
2
|
+
import { postSingleSchema } from 'fulldev-ui/schemas/blocks/postSingle'
|
|
3
|
+
import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
|
|
4
|
+
import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
|
|
5
|
+
|
|
6
|
+
export const postSchema = postSingleSchema.extend({
|
|
7
|
+
meta: metaSchema.optional(),
|
|
8
|
+
sections: sectionSchema.array().optional(),
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
export type PostSchema = z.infer<typeof postSchema>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'astro:content'
|
|
2
|
+
import { productSingleSchema } from 'fulldev-ui/schemas/blocks/productSingle'
|
|
3
|
+
import { metaSchema } from 'fulldev-ui/schemas/fields/meta'
|
|
4
|
+
import { sectionSchema } from 'fulldev-ui/schemas/fields/section'
|
|
5
|
+
|
|
6
|
+
export const productSchema = productSingleSchema.extend({
|
|
7
|
+
meta: metaSchema.optional(),
|
|
8
|
+
sections: sectionSchema.array().optional(),
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
export type ProductSchema = z.infer<typeof productSchema>
|
|
@@ -10,7 +10,7 @@ import { introSchema } from '../blocks/intro'
|
|
|
10
10
|
import { productListSchema } from '../blocks/productList'
|
|
11
11
|
import { reviewsSchema } from '../blocks/reviews'
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const sectionSchema = z.union([
|
|
14
14
|
categoryListSchema.extend({
|
|
15
15
|
block: z.string(),
|
|
16
16
|
categories: reference('categories').array().optional(),
|
|
@@ -45,4 +45,4 @@ export const section = z.union([
|
|
|
45
45
|
}),
|
|
46
46
|
])
|
|
47
47
|
|
|
48
|
-
export type SectionSchema = z.infer<typeof
|
|
48
|
+
export type SectionSchema = z.infer<typeof sectionSchema>
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
@layer base {
|
|
6
|
+
:root {
|
|
7
|
+
--font-sans: 'Geist Sans', sans-serif;
|
|
8
|
+
|
|
9
|
+
--background: 0 0% 100%;
|
|
10
|
+
--foreground: 222.2 84% 4.9%;
|
|
11
|
+
|
|
12
|
+
--muted: 210 40% 96.1%;
|
|
13
|
+
--muted-foreground: 215.4 16.3% 46.9%;
|
|
14
|
+
|
|
15
|
+
--popover: 0 0% 100%;
|
|
16
|
+
--popover-foreground: 222.2 84% 4.9%;
|
|
17
|
+
|
|
18
|
+
--card: 0 0% 100%;
|
|
19
|
+
--card-foreground: 222.2 84% 4.9%;
|
|
20
|
+
|
|
21
|
+
--border: 214.3 31.8% 91.4%;
|
|
22
|
+
--input: 214.3 31.8% 91.4%;
|
|
23
|
+
|
|
24
|
+
--primary: 222.2 47.4% 11.2%;
|
|
25
|
+
--primary-foreground: 210 40% 98%;
|
|
26
|
+
|
|
27
|
+
--secondary: 210 40% 96.1%;
|
|
28
|
+
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
29
|
+
|
|
30
|
+
--accent: 210 40% 96.1%;
|
|
31
|
+
--accent-foreground: 222.2 47.4% 11.2%;
|
|
32
|
+
|
|
33
|
+
--destructive: 0 84.2% 60.2%;
|
|
34
|
+
--destructive-foreground: 210 40% 98%;
|
|
35
|
+
|
|
36
|
+
--ring: 222.2 84% 4.9%;
|
|
37
|
+
|
|
38
|
+
--radius: 0.5rem;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.dark {
|
|
42
|
+
--background: 222.2 84% 4.9%;
|
|
43
|
+
--foreground: 210 40% 98%;
|
|
44
|
+
|
|
45
|
+
--muted: 217.2 32.6% 17.5%;
|
|
46
|
+
--muted-foreground: 215 20.2% 65.1%;
|
|
47
|
+
|
|
48
|
+
--popover: 222.2 84% 4.9%;
|
|
49
|
+
--popover-foreground: 210 40% 98%;
|
|
50
|
+
|
|
51
|
+
--card: 222.2 84% 4.9%;
|
|
52
|
+
--card-foreground: 210 40% 98%;
|
|
53
|
+
|
|
54
|
+
--border: 217.2 32.6% 17.5%;
|
|
55
|
+
--input: 217.2 32.6% 17.5%;
|
|
56
|
+
|
|
57
|
+
--primary: 210 40% 98%;
|
|
58
|
+
--primary-foreground: 222.2 47.4% 11.2%;
|
|
59
|
+
|
|
60
|
+
--secondary: 217.2 32.6% 17.5%;
|
|
61
|
+
--secondary-foreground: 210 40% 98%;
|
|
62
|
+
|
|
63
|
+
--accent: 217.2 32.6% 17.5%;
|
|
64
|
+
--accent-foreground: 210 40% 98%;
|
|
65
|
+
|
|
66
|
+
--destructive: 0 62.8% 30.6%;
|
|
67
|
+
--destructive-foreground: 210 40% 98%;
|
|
68
|
+
|
|
69
|
+
--ring: 212.7 26.8% 83.9%;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Miele */
|
|
74
|
+
/* @layer base {
|
|
75
|
+
:root {
|
|
76
|
+
--font-sans: 'Geist Sans', sans-serif;
|
|
77
|
+
|
|
78
|
+
--background: 0 0% 9%;
|
|
79
|
+
--foreground: 0 0% 98%;
|
|
80
|
+
|
|
81
|
+
--muted: 0 0% 14%;
|
|
82
|
+
--muted-foreground: 0 0% 80%;
|
|
83
|
+
|
|
84
|
+
--popover: 0 0% 14%;
|
|
85
|
+
--popover-foreground: 0 0% 90%;
|
|
86
|
+
|
|
87
|
+
--card: 0 0% 14%;
|
|
88
|
+
--card-foreground: 0 0% 90%;
|
|
89
|
+
|
|
90
|
+
--border: 0 0% 25%;
|
|
91
|
+
--input: 0 0% 34%;
|
|
92
|
+
|
|
93
|
+
--primary: 351 100% 27%;
|
|
94
|
+
--primary-foreground: 0 0% 100%;
|
|
95
|
+
|
|
96
|
+
--secondary: 0 0% 20%;
|
|
97
|
+
--secondary-foreground: 0 0% 90%;
|
|
98
|
+
|
|
99
|
+
--accent: 0 0% 14%;
|
|
100
|
+
--accent-foreground: 0 0% 90%;
|
|
101
|
+
|
|
102
|
+
--destructive: 0 84.2% 60.2%;
|
|
103
|
+
--destructive-foreground: 210 40% 98%;
|
|
104
|
+
|
|
105
|
+
--ring: 0 0% 70%;
|
|
106
|
+
|
|
107
|
+
--radius: 0.3rem;
|
|
108
|
+
}
|
|
109
|
+
} */
|
|
110
|
+
|
|
111
|
+
@layer base {
|
|
112
|
+
* {
|
|
113
|
+
@apply border-border;
|
|
114
|
+
}
|
|
115
|
+
body {
|
|
116
|
+
@apply bg-background text-foreground;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.font-sans {
|
|
120
|
+
font-synthesis: initial;
|
|
121
|
+
font-synthesis-weight: auto;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import type { HTMLAttributes } from 'vue'
|
|
3
|
-
|
|
4
|
-
const props = defineProps<{
|
|
5
|
-
class?: HTMLAttributes['class']
|
|
6
|
-
}>()
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<template>
|
|
10
|
-
<nav aria-label="breadcrumb" :class="props.class">
|
|
11
|
-
<slot />
|
|
12
|
-
</nav>
|
|
13
|
-
</template>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import { MoreHorizontal } from 'lucide-vue-next'
|
|
4
|
-
import type { HTMLAttributes } from 'vue'
|
|
5
|
-
|
|
6
|
-
const props = defineProps<{
|
|
7
|
-
class?: HTMLAttributes['class']
|
|
8
|
-
}>()
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<template>
|
|
12
|
-
<span
|
|
13
|
-
role="presentation"
|
|
14
|
-
aria-hidden="true"
|
|
15
|
-
:class="cn('flex h-9 w-9 items-center justify-center', props.class)"
|
|
16
|
-
>
|
|
17
|
-
<slot>
|
|
18
|
-
<MoreHorizontal class="h-4 w-4" />
|
|
19
|
-
</slot>
|
|
20
|
-
<span class="sr-only">More</span>
|
|
21
|
-
</span>
|
|
22
|
-
</template>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import type { HTMLAttributes } from 'vue'
|
|
4
|
-
|
|
5
|
-
const props = defineProps<{
|
|
6
|
-
class?: HTMLAttributes['class']
|
|
7
|
-
}>()
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<template>
|
|
11
|
-
<li :class="cn('inline-flex items-center gap-1.5', props.class)">
|
|
12
|
-
<slot />
|
|
13
|
-
</li>
|
|
14
|
-
</template>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import { Primitive, type PrimitiveProps } from 'radix-vue'
|
|
4
|
-
import type { HTMLAttributes } from 'vue'
|
|
5
|
-
|
|
6
|
-
const props = withDefaults(defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>(), {
|
|
7
|
-
as: 'a',
|
|
8
|
-
})
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<template>
|
|
12
|
-
<Primitive
|
|
13
|
-
:as="as"
|
|
14
|
-
:as-child="asChild"
|
|
15
|
-
:class="cn('transition-colors hover:text-foreground', props.class)"
|
|
16
|
-
>
|
|
17
|
-
<slot />
|
|
18
|
-
</Primitive>
|
|
19
|
-
</template>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import type { HTMLAttributes } from 'vue'
|
|
4
|
-
|
|
5
|
-
const props = defineProps<{
|
|
6
|
-
class?: HTMLAttributes['class']
|
|
7
|
-
}>()
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<template>
|
|
11
|
-
<ol
|
|
12
|
-
:class="cn('flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5', props.class)"
|
|
13
|
-
>
|
|
14
|
-
<slot />
|
|
15
|
-
</ol>
|
|
16
|
-
</template>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import type { HTMLAttributes } from 'vue'
|
|
4
|
-
|
|
5
|
-
const props = defineProps<{
|
|
6
|
-
class?: HTMLAttributes['class']
|
|
7
|
-
}>()
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<template>
|
|
11
|
-
<span
|
|
12
|
-
role="link"
|
|
13
|
-
aria-disabled="true"
|
|
14
|
-
aria-current="page"
|
|
15
|
-
:class="cn('font-normal text-foreground', props.class)"
|
|
16
|
-
>
|
|
17
|
-
<slot />
|
|
18
|
-
</span>
|
|
19
|
-
</template>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<script lang="ts" setup>
|
|
2
|
-
import { cn } from 'fulldev-ui/lib/utils'
|
|
3
|
-
import { ChevronRight } from 'lucide-vue-next'
|
|
4
|
-
import type { HTMLAttributes } from 'vue'
|
|
5
|
-
|
|
6
|
-
const props = defineProps<{
|
|
7
|
-
class?: HTMLAttributes['class']
|
|
8
|
-
}>()
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<template>
|
|
12
|
-
<li
|
|
13
|
-
role="presentation"
|
|
14
|
-
aria-hidden="true"
|
|
15
|
-
:class="cn('[&>svg]:w-3.5 [&>svg]:h-3.5', props.class)"
|
|
16
|
-
>
|
|
17
|
-
<slot>
|
|
18
|
-
<ChevronRight />
|
|
19
|
-
</slot>
|
|
20
|
-
</li>
|
|
21
|
-
</template>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { default as Breadcrumb } from './Breadcrumb.vue'
|
|
2
|
-
export { default as BreadcrumbEllipsis } from './BreadcrumbEllipsis.vue'
|
|
3
|
-
export { default as BreadcrumbItem } from './BreadcrumbItem.vue'
|
|
4
|
-
export { default as BreadcrumbLink } from './BreadcrumbLink.vue'
|
|
5
|
-
export { default as BreadcrumbList } from './BreadcrumbList.vue'
|
|
6
|
-
export { default as BreadcrumbPage } from './BreadcrumbPage.vue'
|
|
7
|
-
export { default as BreadcrumbSeparator } from './BreadcrumbSeparator.vue'
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { reference, z } from 'astro:content'
|
|
2
|
-
import { badgeSchema } from 'fulldev-ui/schemas/fields/badge.ts'
|
|
3
|
-
import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
|
|
4
|
-
import { cardSchema } from 'fulldev-ui/schemas/fields/card.ts'
|
|
5
|
-
import { channelSchema } from 'fulldev-ui/schemas/fields/channel.ts'
|
|
6
|
-
import { formSchema } from 'fulldev-ui/schemas/fields/form.ts'
|
|
7
|
-
import { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
|
|
8
|
-
import { linkSchema } from 'fulldev-ui/schemas/fields/link.ts'
|
|
9
|
-
import { logoSchema } from 'fulldev-ui/schemas/fields/logo.ts'
|
|
10
|
-
import { menuSchema } from 'fulldev-ui/schemas/fields/menu.ts'
|
|
11
|
-
import { proofSchema } from 'fulldev-ui/schemas/fields/proof.ts'
|
|
12
|
-
|
|
13
|
-
export const blockSchema = z
|
|
14
|
-
.object({
|
|
15
|
-
block: z.string().optional(),
|
|
16
|
-
align: z.enum(['start', 'center', 'end']).optional(),
|
|
17
|
-
size: z.enum(['sm', 'md', 'lg']).optional(),
|
|
18
|
-
depth: z.union([z.literal(1), z.literal(2), z.literal(3)]).optional(),
|
|
19
|
-
logo: logoSchema.optional(),
|
|
20
|
-
socials: z.string().array().optional(),
|
|
21
|
-
channels: channelSchema.array().optional(),
|
|
22
|
-
menus: menuSchema.array().optional(),
|
|
23
|
-
title: z.string().optional(),
|
|
24
|
-
description: z.string().optional(),
|
|
25
|
-
tagline: z.string().optional(),
|
|
26
|
-
heading: z.string().optional(),
|
|
27
|
-
paragraph: z.string().optional(),
|
|
28
|
-
content: z.string().optional(),
|
|
29
|
-
list: z.string().array().optional(),
|
|
30
|
-
image: imageSchema.optional(),
|
|
31
|
-
images: imageSchema.array().optional(),
|
|
32
|
-
button: buttonSchema.optional(),
|
|
33
|
-
buttons: buttonSchema.array().optional(),
|
|
34
|
-
price: z.number().optional(),
|
|
35
|
-
soldout: z.boolean().optional(),
|
|
36
|
-
variants: z.record(z.string(), z.string().array()).optional(),
|
|
37
|
-
categories: reference('categories').array().optional(),
|
|
38
|
-
products: reference('products').array().optional(),
|
|
39
|
-
posts: reference('posts').array().optional(),
|
|
40
|
-
pages: reference('pages').array().optional(),
|
|
41
|
-
jobs: reference('jobs').array().optional(),
|
|
42
|
-
docs: reference('docs').array().optional(),
|
|
43
|
-
form: formSchema.optional(),
|
|
44
|
-
cards: cardSchema.array().optional(),
|
|
45
|
-
pros: cardSchema.optional(),
|
|
46
|
-
cons: cardSchema.optional(),
|
|
47
|
-
badge: badgeSchema.optional(),
|
|
48
|
-
badges: badgeSchema.array().optional(),
|
|
49
|
-
link: linkSchema.optional(),
|
|
50
|
-
links: linkSchema.array().optional(),
|
|
51
|
-
proof: proofSchema.optional(),
|
|
52
|
-
search: z.boolean().optional(),
|
|
53
|
-
themer: z.boolean().optional(),
|
|
54
|
-
reviews: z.any().array().optional(),
|
|
55
|
-
features: z.any().array().optional(),
|
|
56
|
-
faqs: z.any().array().optional(),
|
|
57
|
-
})
|
|
58
|
-
.strict()
|
|
59
|
-
|
|
60
|
-
export type BlockSchema = z.infer<typeof blockSchema>
|