fulldev-ui 0.6.0-beta.10 → 0.6.0-beta.12

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fulldev-ui",
3
- "version": "0.6.0-beta.10",
3
+ "version": "0.6.0-beta.12",
4
4
  "description": "A component library built for Astro",
5
5
  "homepage": "https://ui.full.dev",
6
6
  "bugs": "https://github.com/fulldotdev/ui/issues",
@@ -33,7 +33,7 @@ const {
33
33
 
34
34
  <Section class="content-1">
35
35
  <Container>
36
- <Prose>
36
+ <Prose class="mx-auto">
37
37
  <Tagline text={tagline} />
38
38
  <Heading
39
39
  size="5xl"
@@ -107,7 +107,7 @@ const {
107
107
  <style is:global>
108
108
  @layer fulldev {
109
109
  .header {
110
- @apply sticky left-0 top-0 z-20 flex h-14 w-full items-center overflow-hidden border-b bg-background;
110
+ @apply sticky left-0 top-0 z-20 flex h-14 w-full items-center border-b bg-background;
111
111
  height: var(--header-height);
112
112
 
113
113
  &,
@@ -22,11 +22,11 @@ const { heading, button, pages, ...rest } = Astro.props
22
22
  ---
23
23
 
24
24
  <Section
25
- class:list="industries-1"
25
+ class="job-categories-1"
26
26
  {...rest}
27
27
  >
28
- <Container>
29
- <Element class:list="industries-1-segment">
28
+ <Container class="flex flex-col gap-12">
29
+ <Element class="flex items-center justify-between gap-8">
30
30
  <Heading
31
31
  size="3xl"
32
32
  text={heading}
@@ -41,11 +41,11 @@ const { heading, button, pages, ...rest } = Astro.props
41
41
  {
42
42
  pages?.map(({ slug, data: { title, list, image } }) => (
43
43
  <Card
44
- class="industries-1-card"
44
+ class="p-0"
45
45
  href={getHref(slug)}
46
46
  >
47
47
  <Image {...image} />
48
- <Writeup>
48
+ <Writeup class="p-4">
49
49
  <Heading
50
50
  as="h2"
51
51
  size="lg"
@@ -62,25 +62,3 @@ const { heading, button, pages, ...rest } = Astro.props
62
62
  </Matrix>
63
63
  </Container>
64
64
  </Section>
65
-
66
- <style is:global>
67
- @layer fulldev {
68
- .industries-1 {
69
- .container {
70
- @apply flex flex-col gap-12;
71
- }
72
-
73
- .industries-1-segment {
74
- @apply flex items-center justify-between gap-8;
75
- }
76
-
77
- .card {
78
- @apply overflow-hidden p-0;
79
-
80
- .writeup {
81
- @apply p-4;
82
- }
83
- }
84
- }
85
- }
86
- </style>
@@ -0,0 +1,90 @@
1
+ ---
2
+ import type { CollectionEntry } from 'astro:content'
3
+ import { getCollection } from 'astro:content'
4
+ import Heading from 'fulldev-ui/components/Heading.astro'
5
+ import Image from 'fulldev-ui/components/Image.astro'
6
+ import List from 'fulldev-ui/components/List.astro'
7
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
+ import Card from 'fulldev-ui/structures/Card.astro'
9
+ import Container from 'fulldev-ui/structures/Container.astro'
10
+ import Matrix from 'fulldev-ui/structures/Matrix.astro'
11
+ import Prose from 'fulldev-ui/structures/Prose.astro'
12
+ import Section from 'fulldev-ui/structures/Section.astro'
13
+ import { getHref } from 'fulldev-ui/utils/getHref'
14
+
15
+ interface Props {
16
+ slug?: CollectionEntry<'pages'>['slug']
17
+ heading?: string | undefined
18
+ paragraph?: string | undefined
19
+ pages?: CollectionEntry<'pages'>[]
20
+ }
21
+
22
+ const { slug, heading, paragraph, pages, ...rest } = Astro.props
23
+
24
+ // Jobs that reference the current category, or any of `pages` select categories
25
+ const jobs = await getCollection('pages', (page) =>
26
+ page.data.parents?.some(
27
+ (category) =>
28
+ category.slug == slug || pages?.some((p) => p.slug == category.slug)
29
+ )
30
+ )
31
+ ---
32
+
33
+ <Section
34
+ class:list="job-category-1 flex flex-col gap-12 pt-0"
35
+ {...rest}
36
+ >
37
+ <Container class="border-b py-12">
38
+ <Prose>
39
+ <Heading
40
+ as="h1"
41
+ size="3xl"
42
+ text={heading}
43
+ />
44
+ <Paragraph text={paragraph} />
45
+ </Prose>
46
+ </Container>
47
+ <Container class="flex flex-col gap-12">
48
+ <Matrix class="gap-2">
49
+ {
50
+ pages?.map(({ slug, data: { title, image } }) => (
51
+ <Card
52
+ class="grid grid-cols-3 items-center bg-transparent p-0"
53
+ href={getHref(slug)}
54
+ >
55
+ <Image
56
+ class="h-full w-auto rounded-sm object-cover"
57
+ {...image}
58
+ />
59
+ <Heading
60
+ class="col-span-2 p-4"
61
+ as="h3"
62
+ size="md"
63
+ text={title}
64
+ />
65
+ </Card>
66
+ ))
67
+ }
68
+ </Matrix>
69
+ <Matrix>
70
+ {
71
+ jobs?.map(({ slug, data: { title, list } }) => (
72
+ <Card
73
+ class="jobs-1-card flex flex-col gap-3"
74
+ href={getHref(slug)}
75
+ >
76
+ <Heading
77
+ as="h2"
78
+ size="lg"
79
+ text={title}
80
+ />
81
+ <List
82
+ size="sm"
83
+ items={list}
84
+ />
85
+ </Card>
86
+ ))
87
+ }
88
+ </Matrix>
89
+ </Container>
90
+ </Section>
@@ -48,7 +48,10 @@ const { tagline, heading, paragraph, buttons, content, cards } = Astro.props
48
48
  />
49
49
  <Fragment set:html={content} />
50
50
  <Group>
51
- <Buttons {buttons} />
51
+ <Buttons
52
+ variant="secondary"
53
+ {buttons}
54
+ />
52
55
  </Group>
53
56
  </Prose>
54
57
  <Element class="flex flex-col gap-8">
@@ -1,9 +1,9 @@
1
- ---
1
+ <!-- ---
2
2
  // @ts-nocheck
3
3
  import type { ComponentProps } from 'astro/types'
4
4
  import { getImage } from 'astro:assets'
5
5
  import type { CollectionEntry } from 'astro:content'
6
- import { getCollection, getEntry } from 'astro:content'
6
+ import { getCollection,getEntry } from 'astro:content'
7
7
  import Products1 from 'fulldev-ui/blocks/Products1.astro'
8
8
  import CartForm from 'fulldev-ui/components/CartForm.svelte'
9
9
  import Element from 'fulldev-ui/components/Element.astro'
@@ -58,7 +58,7 @@ const baseLayout = await getEntry('layouts', 'base')
58
58
  <Element class:list="product-container">
59
59
  <Element class:list="product-main">
60
60
  <Gallery {images} />
61
- <!-- <Prose {render} /> -->
61
+ <Prose {render} />
62
62
  </Element>
63
63
  <Element class:list="product-segment">
64
64
  <Element class:list="product-content">
@@ -69,10 +69,10 @@ const baseLayout = await getEntry('layouts', 'base')
69
69
  />
70
70
  <Paragraph text={description} />
71
71
  </Element>
72
- <!-- <CartForm
72
+ <CartForm
73
73
  product={Astro.props}
74
74
  client:load
75
- /> -->
75
+ />
76
76
  <List
77
77
  size="sm"
78
78
  items={baseLayout.data.banner?.split('|')}
@@ -112,4 +112,4 @@ const baseLayout = await getEntry('layouts', 'base')
112
112
  @apply bg-background;
113
113
  }
114
114
  }
115
- </style>
115
+ </style> -->
@@ -33,6 +33,7 @@ export const pageSchema = z
33
33
  sidebar: menuSchema.array().optional(),
34
34
  footer: blockSchema.optional(),
35
35
  parents: pathSchema('pages').array().optional(),
36
+ pages: pathSchema('pages').array().optional(),
36
37
  })
37
38
  .strict()
38
39
 
@@ -42,7 +42,6 @@ const render = slot?.trim().length > 0
42
42
  >
43
43
  <Fragment set:html={slot} />
44
44
  </Element>
45
-
46
45
  <label
47
46
  for={id}
48
47
  class="drawer-backdrop"
@@ -62,7 +61,7 @@ const render = slot?.trim().length > 0
62
61
  }
63
62
 
64
63
  .drawer-backdrop {
65
- @apply pointer-events-none invisible fixed left-0 top-0 z-30 h-full w-full bg-black opacity-0 transition-opacity;
64
+ @apply pointer-events-none invisible fixed left-0 top-0 z-30 h-screen w-full bg-black opacity-0 transition-opacity;
66
65
 
67
66
  &:is(.drawer-checkbox:checked ~ &) {
68
67
  @apply pointer-events-auto visible opacity-50;
@@ -70,7 +69,7 @@ const render = slot?.trim().length > 0
70
69
  }
71
70
 
72
71
  .drawer-body {
73
- @apply fixed bottom-0 left-0 top-0 z-40 h-full w-80 max-w-[75vw] -translate-x-full overflow-y-auto rounded-r-lg border border-l-0 bg-background shadow-2xl transition-transform;
72
+ @apply fixed bottom-0 left-0 top-0 z-40 h-screen w-80 max-w-[75vw] -translate-x-full overflow-y-auto rounded-r-lg border border-l-0 bg-background shadow-2xl transition-transform;
74
73
  @apply scrollbar scrollbar-track-transparent scrollbar-thumb-accent scrollbar-thumb-rounded-full scrollbar-w-2 hover:scrollbar-thumb-accent-hover;
75
74
 
76
75
  &:is(.drawer-checkbox:checked ~ &) {
@@ -89,6 +89,10 @@ const { ...rest } = Astro.props
89
89
  @apply my-12 rounded-md;
90
90
  }
91
91
 
92
+ blockquote > p + p {
93
+ @apply !mt-1;
94
+ }
95
+
92
96
  > *:first-child {
93
97
  @apply mt-0;
94
98
  }
@@ -1,81 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import Footer from 'fulldev-ui/blocks/Footer.astro'
5
- import Header from 'fulldev-ui/blocks/Header.astro'
6
- import Heading from 'fulldev-ui/components/Heading.astro'
7
- import Menus from 'fulldev-ui/components/Menus.astro'
8
- import Paragraph from 'fulldev-ui/components/Paragraph.astro'
9
- import type { PageSchema } from 'fulldev-ui/schemas/page.ts'
10
- import Container from 'fulldev-ui/structures/Container.astro'
11
- import Layout from 'fulldev-ui/structures/Layout.astro'
12
- import Prose from 'fulldev-ui/structures/Prose.astro'
13
- import Sidebar from 'fulldev-ui/structures/Sidebar.astro'
14
-
15
- type Props = ComponentProps<typeof Layout> &
16
- PageSchema & {
17
- render: CollectionEntry<'pages'>['render']
18
- }
19
-
20
- const { header, sidebar, render, title, description, footer } = Astro.props
21
-
22
- const { Content } = await render()
23
- ---
24
-
25
- <Layout
26
- class:list="block"
27
- {...Astro.props}
28
- >
29
- <Header
30
- {...sidebar}
31
- {...header}
32
- />
33
- <Container
34
- class:list="block-main"
35
- as="main"
36
- >
37
- <Sidebar>
38
- <Menus
39
- size="sm"
40
- menus={sidebar?.menus}
41
- />
42
- </Sidebar>
43
- <Container class:list="block-container">
44
- <Prose class:list="block-prose">
45
- <Heading
46
- size="4xl"
47
- as="h1"
48
- text={title}
49
- />
50
- <Paragraph
51
- muted
52
- text={description}
53
- />
54
- <Content />
55
- </Prose>
56
- </Container>
57
- </Container>
58
- <Footer {...footer} />
59
- </Layout>
60
-
61
- <style is:global>
62
- @layer fulldev {
63
- .block {
64
- .block-main {
65
- @apply flex w-full items-start justify-between !px-0;
66
- }
67
-
68
- .block-container {
69
- max-width: calc(100% - var(--sidebar-width)) !important;
70
- }
71
-
72
- .sidebar {
73
- @apply hidden lg:flex;
74
- }
75
-
76
- .block-prose {
77
- @apply mx-auto max-w-none py-8;
78
- }
79
- }
80
- }
81
- </style>
@@ -1,136 +0,0 @@
1
- <!-- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import { getCollection } from 'astro:content'
5
- import Products1 from 'fulldev-ui/blocks/Products1.astro'
6
- import Carousel from 'fulldev-ui/components/Carousel.astro'
7
- import Element from 'fulldev-ui/components/Element.astro'
8
- import Select from 'fulldev-ui/components/Select.astro'
9
- import type { PageSchema } from 'fulldev-ui/schemas/page.ts'
10
- import Layout from 'fulldev-ui/structures/Layout.astro'
11
- import Prose from 'fulldev-ui/structures/Prose.astro'
12
- import { getHref } from 'fulldev-ui/utils/getHref.ts'
13
-
14
- interface Props extends ComponentProps<typeof Layout>, PageSchema {
15
- render: CollectionEntry<'pages'>['render']
16
- slug: CollectionEntry<'pages'>['slug']
17
- }
18
-
19
- const { render, slug, title, description } = Astro.props
20
-
21
- const categories = await getCollection('pages', ({ data }) =>
22
- data.categories?.some((c) => c.slug.includes(slug))
23
- )
24
-
25
- const products = await getCollection('pages', ({ data }) =>
26
- data.categories?.some((c) => c.slug.includes(slug))
27
- )
28
-
29
- const sorts = [
30
- {
31
- option: 'Aanbevolen',
32
- products: [...products].sort(
33
- (a, b) => (a.data.order || 0) - (b.data.order || 0)
34
- ),
35
- },
36
- {
37
- option: 'Prijs (laag - hoog)',
38
- products: [...products].sort(
39
- (a, b) => (a.data.price || 0) - (b.data.price || 0)
40
- ),
41
- },
42
- {
43
- option: 'Prijs (hoog - laag)',
44
- products: [...products].sort(
45
- (a, b) => (b.data.price || 0) - (a.data.price || 0)
46
- ),
47
- },
48
- {
49
- option: 'Alfabetisch (A-Z)',
50
- products: [...products],
51
- },
52
- {
53
- option: 'Alfabetisch (Z-A)',
54
- products: [...products].sort((a, b) =>
55
- (b.data.title || '').localeCompare(a.data.title || '')
56
- ),
57
- },
58
- ]
59
- ---
60
-
61
- <script>
62
- document.addEventListener('astro:page-load', () => {
63
- const sort = document.querySelector('.sort')
64
-
65
- sort?.addEventListener('change', (e) => {
66
- const blocks = document.querySelectorAll('.products')
67
- const value = (e.target as HTMLSelectElement).value
68
- blocks?.forEach((block) => block.classList.add('hide'))
69
-
70
- const block = document.querySelector(`.products[id='${value}']`)
71
- block?.classList.remove('hide')
72
- })
73
- })
74
- </script>
75
-
76
- <Layout
77
- class:list="category"
78
- {...Astro.props}
79
- >
80
- <Intro1
81
- heading={title}
82
- text={description}
83
- />
84
- <Carousel>
85
- {
86
- categories.map((category) => (
87
- <Element
88
- as="a"
89
- class:list="item"
90
- href={getHref(category.slug)}
91
- >
92
- {category.data.title}
93
- </Element>
94
- ))
95
- }
96
- </Carousel>
97
- <Element class:list="toolbar">
98
- <span>{products.length} resultaten</span>
99
- <Select
100
- class:list="sort"
101
- size="sm"
102
- name="Sorteren"
103
- options={sorts.map((sort) => sort.option)}
104
- />
105
- </Element>
106
- {
107
- sorts.map((sort: any) => (
108
- <Products1
109
- class:list={sort.option !== 'Aanbevolen' ? 'hide' : ''}
110
- products={sort.products}
111
- />
112
- ))
113
- }
114
- <Prose {render} />
115
- <slot />
116
- </Layout>
117
-
118
- <style is:global>
119
- .carousel {
120
- .item {
121
- @apply min-w-48 rounded-sm border p-4 text-sm;
122
- }
123
- }
124
-
125
- .products.hide {
126
- @apply hidden;
127
- }
128
-
129
- .toolbar {
130
- @apply container flex items-center justify-between pt-8;
131
-
132
- span {
133
- @apply text-sm text-muted-foreground;
134
- }
135
- }
136
- </style> -->
@@ -1,96 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import Footer from 'fulldev-ui/blocks/Footer.astro'
5
- import Header from 'fulldev-ui/blocks/Header.astro'
6
- import Heading from 'fulldev-ui/components/Heading.astro'
7
- import Menu from 'fulldev-ui/components/Menu.astro'
8
- import Menus from 'fulldev-ui/components/Menus.astro'
9
- import Paragraph from 'fulldev-ui/components/Paragraph.astro'
10
- import type { PageSchema } from 'fulldev-ui/schemas/page.ts'
11
- import Container from 'fulldev-ui/structures/Container.astro'
12
- import Layout from 'fulldev-ui/structures/Layout.astro'
13
- import Prose from 'fulldev-ui/structures/Prose.astro'
14
- import Sidebar from 'fulldev-ui/structures/Sidebar.astro'
15
-
16
- type Props = ComponentProps<typeof Layout> &
17
- PageSchema & {
18
- render: CollectionEntry<'pages'>['render']
19
- }
20
-
21
- const { header, sidebar, render, title, description, footer } = Astro.props
22
-
23
- const { Content, headings } = await render()
24
-
25
- const filteredHeadings = headings?.filter(
26
- (heading: any) => heading.depth >= 2 && heading.depth <= 4
27
- )
28
-
29
- const links = filteredHeadings?.map((button: any) => ({
30
- text: button.text,
31
- href: `#${button.slug}`,
32
- class: `depth-${button.depth}`,
33
- }))
34
- ---
35
-
36
- <Layout
37
- class:list="doc"
38
- {...Astro.props}
39
- >
40
- <Header
41
- {...sidebar}
42
- {...header}
43
- />
44
- <Container as="main">
45
- <Sidebar>
46
- <Menus
47
- size="sm"
48
- menus={sidebar?.menus}
49
- />
50
- </Sidebar>
51
- <Container>
52
- <Prose>
53
- <Heading
54
- size="4xl"
55
- as="h1"
56
- text={title}
57
- />
58
- <Paragraph
59
- muted
60
- text={description}
61
- />
62
- <Content />
63
- </Prose>
64
- </Container>
65
- <Sidebar class:list="doc-toc">
66
- <Menu
67
- size="sm"
68
- heading={title}
69
- {links}
70
- />
71
- </Sidebar>
72
- </Container>
73
- <Footer {...footer} />
74
- </Layout>
75
-
76
- <style is:global>
77
- @layer fulldev {
78
- .doc {
79
- main {
80
- @apply flex w-full items-start justify-between !px-0;
81
- }
82
-
83
- .sidebar {
84
- @apply hidden lg:flex;
85
- }
86
-
87
- .doc-toc {
88
- @apply hidden xl:flex;
89
- }
90
-
91
- .prose {
92
- @apply mx-auto py-8;
93
- }
94
- }
95
- }
96
- </style>
@@ -1,60 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import { getEntries } from 'astro:content'
5
- import Content3 from 'fulldev-ui/blocks/Content3.astro'
6
- import Footer from 'fulldev-ui/blocks/Footer.astro'
7
- import Header from 'fulldev-ui/blocks/Header.astro'
8
- import Element from 'fulldev-ui/components/Element.astro'
9
- import type { PageSchema } from 'fulldev-ui/schemas/page.ts'
10
- import Layout from 'fulldev-ui/structures/Layout.astro'
11
- import { getHref } from 'fulldev-ui/utils/getHref.ts'
12
-
13
- type Props = ComponentProps<typeof Layout> &
14
- PageSchema & {
15
- render: CollectionEntry<'pages'>['render']
16
- }
17
-
18
- const {
19
- title,
20
- description,
21
- list,
22
- button,
23
- buttons,
24
- header,
25
- sidebar,
26
- render,
27
- parents,
28
- footer,
29
- } = Astro.props
30
-
31
- const parentEntries = parents && (await getEntries(parents))
32
-
33
- const { Content } = await render()
34
- ---
35
-
36
- <Layout
37
- class:list="job"
38
- {...Astro.props}
39
- >
40
- <Header
41
- {...sidebar}
42
- {...header}
43
- />
44
- <Element as="main">
45
- <Content3
46
- badges={parentEntries?.map((parent) => ({
47
- text: parent.data.title,
48
- href: getHref(parent.slug),
49
- }))}
50
- heading={title}
51
- paragraph={description}
52
- {list}
53
- {button}
54
- {buttons}
55
- >
56
- <Content />
57
- </Content3>
58
- </Element>
59
- <Footer {...footer} />
60
- </Layout>
@@ -1,72 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import Footer from 'fulldev-ui/blocks/Footer.astro'
5
- import Header from 'fulldev-ui/blocks/Header.astro'
6
- import Intro1 from 'fulldev-ui/blocks/Intro1.astro'
7
- import Jobs1 from 'fulldev-ui/blocks/Jobs1.astro'
8
- import Element from 'fulldev-ui/components/Element.astro'
9
- import Sidebar from 'fulldev-ui/components/Sidebar.astro'
10
- import type { PageSchema } from 'fulldev-ui/schemas/page.ts'
11
- import Container from 'fulldev-ui/structures/Container.astro'
12
- import Layout from 'fulldev-ui/structures/Layout.astro'
13
- import Prose from 'fulldev-ui/structures/Prose.astro'
14
-
15
- type Props = ComponentProps<typeof Layout> &
16
- PageSchema & {
17
- slug: CollectionEntry<'pages'>['slug']
18
- render: CollectionEntry<'pages'>['render']
19
- }
20
-
21
- const { slug, header, sidebar, render, title, description, footer } =
22
- Astro.props
23
-
24
- const { Content } = await render()
25
-
26
- // const children = (
27
- // await getCollection('pages', ({ data }) =>
28
- // data.parents?.some((p) => p.slug.includes(slug))
29
- // )
30
- // )?.map(({ collection, slug }) => ({ collection, slug }))
31
- ---
32
-
33
- <Layout
34
- class:list="jobs"
35
- {...Astro.props}
36
- >
37
- <Header
38
- {...sidebar}
39
- {...header}
40
- />
41
- <Container class:list="jobs-container">
42
- <Sidebar {...sidebar} />
43
- <Element
44
- class:list="jobs-main"
45
- as="main"
46
- >
47
- <Intro1
48
- heading={title}
49
- paragraph={description}
50
- />
51
- <!-- <Jobs1 pages={children} /> -->
52
- <Prose>
53
- <Content />
54
- </Prose>
55
- </Element>
56
- </Container>
57
- </Layout>
58
- <Footer {...footer} />
59
-
60
- <style is:global>
61
- @layer fulldev {
62
- .jobs {
63
- .jobs-container {
64
- @apply flex !pr-0;
65
- }
66
-
67
- .jobs-main {
68
- @apply flex w-full flex-col;
69
- }
70
- }
71
- }
72
- </style>
@@ -1,53 +0,0 @@
1
- ---
2
- import type { ComponentProps } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import Content1 from 'fulldev-ui/blocks/Content1.astro'
5
- import Footer from 'fulldev-ui/blocks/Footer.astro'
6
- import Header from 'fulldev-ui/blocks/Header.astro'
7
- import Block from 'fulldev-ui/components/Block.astro'
8
- import Element from 'fulldev-ui/components/Element.astro'
9
- import type { PageSchema } from 'fulldev-ui/schemas/page'
10
- import Layout from 'fulldev-ui/structures/Layout.astro'
11
-
12
- type Props = ComponentProps<typeof Layout> &
13
- PageSchema & {
14
- render: CollectionEntry<'pages'>['render']
15
- }
16
-
17
- const {
18
- title,
19
- description,
20
- list,
21
- button,
22
- header,
23
- sidebar,
24
- sections,
25
- footer,
26
- render,
27
- } = Astro.props
28
-
29
- const { Content, headings } = await render()
30
- ---
31
-
32
- <Layout
33
- class:list="post"
34
- {...Astro.props}
35
- >
36
- <Header
37
- {...sidebar}
38
- {...header}
39
- />
40
- <Element as="main">
41
- <Content1
42
- heading={title}
43
- paragraph={description}
44
- {list}
45
- {button}
46
- {headings}
47
- >
48
- <Content />
49
- </Content1>
50
- {sections?.map((section) => <Block {...section} />)}
51
- </Element>
52
- <Footer {...footer} />
53
- </Layout>