fulldev-ui 0.7.0-beta.4 → 0.7.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/astro.config.ts +0 -2
  2. package/cli.js +51 -0
  3. package/components.json +2 -2
  4. package/package.json +16 -32
  5. package/pnpm-lock.yaml +221 -751
  6. package/src/blocks/CategoryGroup1.astro +8 -8
  7. package/src/blocks/CategoryList1.astro +9 -9
  8. package/src/blocks/Contact1.astro +9 -9
  9. package/src/blocks/Contact2.astro +10 -10
  10. package/src/blocks/Content1.astro +7 -7
  11. package/src/blocks/Cta1.astro +6 -6
  12. package/src/blocks/Faqs1.astro +6 -6
  13. package/src/blocks/Faqs2.astro +8 -8
  14. package/src/blocks/Features1.astro +8 -8
  15. package/src/blocks/Footer.astro +10 -10
  16. package/src/blocks/Header.astro +12 -12
  17. package/src/blocks/Hero1.astro +7 -7
  18. package/src/blocks/Intro1.astro +5 -5
  19. package/src/blocks/PostSingle1.astro +6 -6
  20. package/src/blocks/ProductGroup1.astro +10 -10
  21. package/src/blocks/ProductList1.astro +10 -10
  22. package/src/blocks/ProductSingle1.astro +12 -12
  23. package/src/blocks/Reviews1.astro +9 -9
  24. package/src/components/Accordion.vue +1 -1
  25. package/src/components/Avatar.astro +1 -1
  26. package/src/components/Badge.astro +2 -2
  27. package/src/components/Block.astro +9 -15
  28. package/src/components/Box.astro +1 -1
  29. package/src/components/Button.astro +3 -3
  30. package/src/components/Buttons.astro +1 -1
  31. package/src/components/Card.astro +1 -1
  32. package/src/components/Carousel.vue +1 -7
  33. package/src/components/Chip.astro +2 -2
  34. package/src/components/Code.astro +1 -1
  35. package/src/components/Container.astro +1 -1
  36. package/src/components/Drawer.vue +2 -2
  37. package/src/components/Form.vue +4 -7
  38. package/src/components/Gallery.vue +2 -2
  39. package/src/components/Grid.astro +1 -1
  40. package/src/components/Icon.astro +18 -11
  41. package/src/components/List.astro +2 -2
  42. package/src/components/Logo.astro +1 -1
  43. package/src/components/Masonry.astro +1 -1
  44. package/src/components/Menu.astro +1 -1
  45. package/src/components/Menus.astro +1 -1
  46. package/src/components/Navigation.vue +1 -1
  47. package/src/components/Panel.astro +1 -1
  48. package/src/components/Person.astro +3 -3
  49. package/src/components/Price.astro +1 -1
  50. package/src/components/Proof.astro +4 -4
  51. package/src/components/Prose.astro +1 -1
  52. package/src/components/Rating.astro +2 -2
  53. package/src/components/Search.vue +2 -2
  54. package/src/components/Section.astro +1 -1
  55. package/src/components/Select.vue +1 -1
  56. package/src/components/Sidebar.astro +1 -1
  57. package/src/components/Social.astro +1 -1
  58. package/src/components/Sort.vue +1 -1
  59. package/src/components/Split.astro +1 -1
  60. package/src/components/Table.astro +1 -1
  61. package/src/components/Themer.astro +2 -2
  62. package/src/components/Toc.astro +2 -2
  63. package/src/components/Writeup.astro +1 -1
  64. package/src/components/ui/accordion/AccordionContent.vue +1 -1
  65. package/src/components/ui/accordion/AccordionItem.vue +1 -1
  66. package/src/components/ui/accordion/AccordionTrigger.vue +1 -1
  67. package/src/components/ui/auto-form/AutoForm.vue +1 -1
  68. package/src/components/ui/auto-form/AutoFormFieldArray.vue +4 -4
  69. package/src/components/ui/auto-form/AutoFormFieldBoolean.vue +3 -3
  70. package/src/components/ui/auto-form/AutoFormFieldDate.vue +5 -5
  71. package/src/components/ui/auto-form/AutoFormFieldEnum.vue +4 -4
  72. package/src/components/ui/auto-form/AutoFormFieldFile.vue +3 -3
  73. package/src/components/ui/auto-form/AutoFormFieldInput.vue +3 -3
  74. package/src/components/ui/auto-form/AutoFormFieldNumber.vue +2 -2
  75. package/src/components/ui/auto-form/AutoFormFieldObject.vue +2 -2
  76. package/src/components/ui/auto-form/AutoFormLabel.vue +1 -1
  77. package/src/components/ui/avatar/Avatar.vue +1 -1
  78. package/src/components/ui/badge/Badge.vue +1 -1
  79. package/src/components/ui/button/Button.vue +2 -2
  80. package/src/components/ui/calendar/Calendar.vue +1 -1
  81. package/src/components/ui/calendar/CalendarCell.vue +1 -1
  82. package/src/components/ui/calendar/CalendarCellTrigger.vue +2 -2
  83. package/src/components/ui/calendar/CalendarGrid.vue +1 -1
  84. package/src/components/ui/calendar/CalendarGridRow.vue +1 -1
  85. package/src/components/ui/calendar/CalendarHeadCell.vue +1 -1
  86. package/src/components/ui/calendar/CalendarHeader.vue +1 -1
  87. package/src/components/ui/calendar/CalendarHeading.vue +1 -1
  88. package/src/components/ui/calendar/CalendarNextButton.vue +2 -2
  89. package/src/components/ui/calendar/CalendarPrevButton.vue +2 -2
  90. package/src/components/ui/card/Card.vue +1 -1
  91. package/src/components/ui/card/CardContent.vue +1 -1
  92. package/src/components/ui/card/CardDescription.vue +1 -1
  93. package/src/components/ui/card/CardFooter.vue +1 -1
  94. package/src/components/ui/card/CardHeader.vue +1 -1
  95. package/src/components/ui/card/CardTitle.vue +1 -1
  96. package/src/components/ui/carousel/Carousel.vue +1 -1
  97. package/src/components/ui/carousel/CarouselContent.vue +1 -1
  98. package/src/components/ui/carousel/CarouselItem.vue +1 -1
  99. package/src/components/ui/carousel/CarouselNext.vue +2 -2
  100. package/src/components/ui/carousel/CarouselPrevious.vue +2 -2
  101. package/src/components/ui/checkbox/Checkbox.vue +1 -1
  102. package/src/components/ui/command/Command.vue +1 -1
  103. package/src/components/ui/command/CommandDialog.vue +1 -1
  104. package/src/components/ui/command/CommandEmpty.vue +1 -1
  105. package/src/components/ui/command/CommandGroup.vue +1 -1
  106. package/src/components/ui/command/CommandInput.vue +1 -1
  107. package/src/components/ui/command/CommandItem.vue +1 -1
  108. package/src/components/ui/command/CommandList.vue +1 -1
  109. package/src/components/ui/command/CommandSeparator.vue +1 -1
  110. package/src/components/ui/command/CommandShortcut.vue +1 -1
  111. package/src/components/ui/dialog/DialogContent.vue +1 -1
  112. package/src/components/ui/dialog/DialogDescription.vue +1 -1
  113. package/src/components/ui/dialog/DialogFooter.vue +1 -1
  114. package/src/components/ui/dialog/DialogHeader.vue +1 -1
  115. package/src/components/ui/dialog/DialogScrollContent.vue +1 -1
  116. package/src/components/ui/dialog/DialogTitle.vue +1 -1
  117. package/src/components/ui/drawer/DrawerContent.vue +1 -1
  118. package/src/components/ui/drawer/DrawerDescription.vue +1 -1
  119. package/src/components/ui/drawer/DrawerFooter.vue +1 -1
  120. package/src/components/ui/drawer/DrawerHeader.vue +1 -1
  121. package/src/components/ui/drawer/DrawerOverlay.vue +1 -1
  122. package/src/components/ui/drawer/DrawerTitle.vue +1 -1
  123. package/src/components/ui/form/FormDescription.vue +1 -1
  124. package/src/components/ui/form/FormItem.vue +1 -1
  125. package/src/components/ui/form/FormLabel.vue +2 -2
  126. package/src/components/ui/input/Input.vue +1 -1
  127. package/src/components/ui/label/Label.vue +1 -1
  128. package/src/components/ui/navigation-menu/NavigationMenu.vue +1 -1
  129. package/src/components/ui/navigation-menu/NavigationMenuContent.vue +1 -1
  130. package/src/components/ui/navigation-menu/NavigationMenuIndicator.vue +1 -1
  131. package/src/components/ui/navigation-menu/NavigationMenuList.vue +1 -1
  132. package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +1 -1
  133. package/src/components/ui/navigation-menu/NavigationMenuViewport.vue +1 -1
  134. package/src/components/ui/popover/PopoverContent.vue +1 -1
  135. package/src/components/ui/radio-group/RadioGroup.vue +1 -1
  136. package/src/components/ui/radio-group/RadioGroupItem.vue +1 -1
  137. package/src/components/ui/select/SelectContent.vue +1 -1
  138. package/src/components/ui/select/SelectGroup.vue +1 -1
  139. package/src/components/ui/select/SelectItem.vue +1 -1
  140. package/src/components/ui/select/SelectLabel.vue +1 -1
  141. package/src/components/ui/select/SelectScrollDownButton.vue +1 -1
  142. package/src/components/ui/select/SelectScrollUpButton.vue +1 -1
  143. package/src/components/ui/select/SelectSeparator.vue +1 -1
  144. package/src/components/ui/select/SelectTrigger.vue +1 -1
  145. package/src/components/ui/separator/Separator.vue +1 -1
  146. package/src/components/ui/switch/Switch.vue +1 -1
  147. package/src/components/ui/textarea/Textarea.vue +1 -1
  148. package/src/content/blocks/category-group1.md +18 -0
  149. package/src/content/blocks/category-list1.md +22 -0
  150. package/src/content/blocks/contact1.md +30 -0
  151. package/src/content/blocks/contact2.md +31 -0
  152. package/src/content/blocks/content1.md +14 -0
  153. package/src/content/blocks/cta1.md +11 -0
  154. package/src/content/blocks/faqs1.md +18 -0
  155. package/src/content/blocks/faqs2.md +18 -0
  156. package/src/content/blocks/features1.md +16 -0
  157. package/src/content/blocks/hero1.md +14 -0
  158. package/src/content/blocks/intro1.md +6 -0
  159. package/src/content/blocks/post-single1.md +18 -0
  160. package/src/content/blocks/product-group1.md +21 -0
  161. package/src/content/blocks/product-list1.md +25 -0
  162. package/src/content/blocks/product-single1.md +23 -0
  163. package/src/content/blocks/reviews1.md +16 -0
  164. package/src/content.config.ts +20 -0
  165. package/src/data/settings.json +26 -0
  166. package/src/layouts/NavigationLayout.astro +14 -0
  167. package/src/lib/integration.ts +27 -0
  168. package/src/pages/blocks/[...block].astro +24 -0
  169. package/src/pages/blocks/index.astro +21 -0
  170. package/src/pages/index.astro +8 -0
  171. package/src/schemas/blocks/categoryGroup.ts +1 -1
  172. package/src/schemas/blocks/categoryList.ts +1 -1
  173. package/src/schemas/blocks/categorySingle.ts +1 -1
  174. package/src/schemas/blocks/content.ts +1 -1
  175. package/src/schemas/blocks/cta.ts +1 -1
  176. package/src/schemas/blocks/faqs.ts +4 -3
  177. package/src/schemas/blocks/features.ts +5 -4
  178. package/src/schemas/blocks/footer.ts +3 -3
  179. package/src/schemas/blocks/header.ts +3 -3
  180. package/src/schemas/blocks/hero.ts +1 -1
  181. package/src/schemas/blocks/productList.ts +1 -1
  182. package/src/schemas/blocks/productSingle.ts +1 -1
  183. package/src/schemas/collections/block.ts +83 -0
  184. package/src/schemas/collections/category.ts +11 -0
  185. package/src/schemas/collections/page.ts +13 -0
  186. package/src/schemas/collections/post.ts +11 -0
  187. package/src/schemas/collections/product.ts +11 -0
  188. package/src/schemas/fields/card.ts +3 -3
  189. package/src/schemas/fields/menu.ts +1 -1
  190. package/src/schemas/fields/proof.ts +1 -1
  191. package/src/schemas/fields/section.ts +2 -2
  192. package/src/styles/global.css +123 -0
  193. package/tsconfig.json +1 -1
  194. package/src/components/ui/breadcrumb/Breadcrumb.vue +0 -13
  195. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +0 -22
  196. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +0 -14
  197. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +0 -19
  198. package/src/components/ui/breadcrumb/BreadcrumbList.vue +0 -16
  199. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +0 -19
  200. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +0 -21
  201. package/src/components/ui/breadcrumb/index.ts +0 -7
  202. package/src/schemas/fields/block.ts +0 -60
@@ -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,6 @@
1
+ ---
2
+ block: Intro1
3
+ writeup: |
4
+ <h1>Lorem ipsum dolor sit amet</h1>
5
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.</p>
6
+ ---
@@ -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 { pageSchema } from '@/schemas/collections/page'
2
+ import { glob } from 'astro/loaders'
3
+ import { defineCollection, z } from 'astro:content'
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 Box from '@/components/Box.astro'
3
+ import Layout from '@/components/Layout.astro'
4
+ import '@/styles/global.css'
5
+ import type { ComponentProps } from 'astro/types'
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,27 @@
1
+ import tailwind from '@astrojs/tailwind'
2
+ import vue from '@astrojs/vue'
3
+ import type { AstroIntegration } from 'astro'
4
+
5
+ interface Config {}
6
+
7
+ export default function fulldevIntegration(config?: Partial<Config> | undefined): AstroIntegration {
8
+ return {
9
+ name: '/integration',
10
+ hooks: {
11
+ 'astro:config:setup': async ({ updateConfig, injectScript }) => {
12
+ // Update the config with required integrations
13
+ updateConfig({
14
+ integrations: [
15
+ vue(),
16
+ tailwind({
17
+ applyBaseStyles: false,
18
+ }),
19
+ ],
20
+ })
21
+
22
+ // Inject the global CSS file
23
+ injectScript('page-ssr', `import "@/styles/global.css";`)
24
+ },
25
+ },
26
+ }
27
+ }
@@ -0,0 +1,24 @@
1
+ ---
2
+ import Block from '@/components/Block.astro'
3
+ import NavigationLayout from '@/layouts/NavigationLayout.astro'
4
+ import { getCollection, render } from 'astro:content'
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 NavigationLayout from '@/layouts/NavigationLayout.astro'
3
+ import { getCollection } from 'astro:content'
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>
@@ -0,0 +1,8 @@
1
+ ---
2
+ import NavigationLayout from '@/layouts/NavigationLayout.astro'
3
+ ---
4
+
5
+ <NavigationLayout>
6
+ <h1>Blocks</h1>
7
+ <a href="/blocks/">Blocks</a>
8
+ </NavigationLayout>
@@ -7,7 +7,7 @@ export const categoryGroupSchema = z
7
7
  description: z.string().optional(),
8
8
  categories: categorySingleSchema
9
9
  .extend({
10
- href: z.string(),
10
+ href: z.string().optional(),
11
11
  })
12
12
  .array()
13
13
  .optional(),
@@ -1,5 +1,5 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
1
2
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button'
3
3
  import { categorySingleSchema } from '../blocks/categorySingle'
4
4
 
5
5
  export const categoryListSchema = z
@@ -1,5 +1,5 @@
1
+ import { imageSchema } from '@/schemas/fields/image'
1
2
  import { z } from 'astro:content'
2
- import { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
3
3
 
4
4
  export const categorySingleSchema = z
5
5
  .object({
@@ -1,5 +1,5 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
1
2
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
3
3
  import { imageSchema } from '../fields/image'
4
4
 
5
5
  export const contentSchema = z
@@ -1,5 +1,5 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
1
2
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
3
3
 
4
4
  export const ctaSchema = z
5
5
  .object({
@@ -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
 
@@ -1,7 +1,7 @@
1
+ import { channelSchema } from '@/schemas/fields/channel'
2
+ import { logoSchema } from '@/schemas/fields/logo'
3
+ import { menuSchema } from '@/schemas/fields/menu'
1
4
  import { z } from 'astro:content'
2
- import { channelSchema } from 'fulldev-ui/schemas/fields/channel.ts'
3
- import { logoSchema } from 'fulldev-ui/schemas/fields/logo.ts'
4
- import { menuSchema } from 'fulldev-ui/schemas/fields/menu.ts'
5
5
 
6
6
  export const footerSchema = z
7
7
  .object({
@@ -1,7 +1,7 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
2
+ import { logoSchema } from '@/schemas/fields/logo'
3
+ import { menuSchema } from '@/schemas/fields/menu'
1
4
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
3
- import { logoSchema } from 'fulldev-ui/schemas/fields/logo.ts'
4
- import { menuSchema } from 'fulldev-ui/schemas/fields/menu.ts'
5
5
 
6
6
  export const headerSchema = z
7
7
  .object({
@@ -1,5 +1,5 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
1
2
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button.ts'
3
3
  import { badgeSchema } from '../fields/badge'
4
4
  import { imageSchema } from '../fields/image'
5
5
 
@@ -1,5 +1,5 @@
1
+ import { buttonSchema } from '@/schemas/fields/button'
1
2
  import { z } from 'astro:content'
2
- import { buttonSchema } from 'fulldev-ui/schemas/fields/button'
3
3
  import { productSingleSchema } from './productSingle'
4
4
 
5
5
  export const productListSchema = z
@@ -1,5 +1,5 @@
1
+ import { imageSchema } from '@/schemas/fields/image'
1
2
  import { reference, z } from 'astro:content'
2
- import { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
3
3
  import { buttonSchema } from '../fields/button'
4
4
 
5
5
  export const productSingleSchema = z
@@ -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 { categorySingleSchema } from '@/schemas/blocks/categorySingle'
2
+ import { metaSchema } from '@/schemas/fields/meta'
3
+ import { sectionSchema } from '@/schemas/fields/section'
4
+ import { z } from 'astro:content'
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 { metaSchema } from '@/schemas/fields/meta'
2
+ import { sectionSchema } from '@/schemas/fields/section'
3
+ import { z } from 'astro:content'
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 { postSingleSchema } from '@/schemas/blocks/postSingle'
2
+ import { metaSchema } from '@/schemas/fields/meta'
3
+ import { sectionSchema } from '@/schemas/fields/section'
4
+ import { z } from 'astro:content'
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 { productSingleSchema } from '@/schemas/blocks/productSingle'
2
+ import { metaSchema } from '@/schemas/fields/meta'
3
+ import { sectionSchema } from '@/schemas/fields/section'
4
+ import { z } from 'astro:content'
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>
@@ -1,7 +1,7 @@
1
+ import { badgeSchema } from '@/schemas/fields/badge'
2
+ import { buttonSchema } from '@/schemas/fields/button'
3
+ import { imageSchema } from '@/schemas/fields/image'
1
4
  import { 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 { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
5
5
 
6
6
  export const cardSchema = z
7
7
  .object({
@@ -1,5 +1,5 @@
1
+ import { linkSchema } from '@/schemas/fields/link'
1
2
  import { z } from 'astro:content'
2
- import { linkSchema } from 'fulldev-ui/schemas/fields/link.ts'
3
3
 
4
4
  export const menuSchema = z
5
5
  .object({
@@ -1,5 +1,5 @@
1
+ import { imageSchema } from '@/schemas/fields/image'
1
2
  import { z } from 'astro:content'
2
- import { imageSchema } from 'fulldev-ui/schemas/fields/image.ts'
3
3
 
4
4
  export const proofSchema = z
5
5
  .object({
@@ -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 section = z.union([
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 section>
48
+ export type SectionSchema = z.infer<typeof sectionSchema>