fulldev-ui 0.6.0-beta.3 → 0.6.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 (152) hide show
  1. package/astro.config.ts +1 -7
  2. package/cloudcannon.config.yml +269 -0
  3. package/package.json +1 -1
  4. package/src/blocks/Banner.astro +33 -0
  5. package/src/blocks/Colleagues1.astro +73 -0
  6. package/src/blocks/Contact1.astro +12 -4
  7. package/src/blocks/Content1.astro +79 -0
  8. package/src/blocks/Content2.astro +94 -0
  9. package/src/blocks/Content3.astro +70 -0
  10. package/src/blocks/Content4.astro +75 -0
  11. package/src/blocks/Cta1.astro +35 -34
  12. package/src/blocks/Feature1.astro +20 -26
  13. package/src/blocks/Features1.astro +66 -0
  14. package/src/blocks/Footer.astro +27 -52
  15. package/src/blocks/Header.astro +154 -0
  16. package/src/blocks/Hero1.astro +41 -41
  17. package/src/blocks/Intro1.astro +32 -18
  18. package/src/blocks/Jobs1.astro +73 -0
  19. package/src/blocks/Logos1.astro +55 -0
  20. package/src/blocks/Products1.astro +4 -4
  21. package/src/blocks/Reviews1.astro +79 -0
  22. package/src/components/Badges.astro +12 -35
  23. package/src/components/Block.astro +5 -24
  24. package/src/components/Button.astro +1 -2
  25. package/src/components/Buttons.astro +12 -43
  26. package/src/components/Cart.astro +6 -12
  27. package/src/components/Drawer.astro +1 -2
  28. package/src/components/Form.astro +3 -3
  29. package/src/components/Grid.astro +39 -0
  30. package/src/components/{Banner.astro → Group.astro} +5 -6
  31. package/src/components/Heading.astro +5 -1
  32. package/src/components/Icon.astro +0 -1
  33. package/src/components/Image.astro +15 -50
  34. package/src/components/Layout.astro +35 -0
  35. package/src/components/Links.astro +14 -35
  36. package/src/components/Logo.astro +5 -7
  37. package/src/components/Masonry.astro +42 -0
  38. package/src/components/Menu.astro +17 -38
  39. package/src/components/Menus.astro +20 -0
  40. package/src/components/Panel.astro +1 -1
  41. package/src/components/Paragraph.astro +8 -8
  42. package/src/components/Prose.astro +15 -7
  43. package/src/components/Search.astro +1 -1
  44. package/src/components/Section.astro +1 -1
  45. package/src/components/Sidebar.astro +11 -42
  46. package/src/components/Stack.astro +25 -0
  47. package/src/components/Tagline.astro +1 -1
  48. package/src/components/Toc.astro +22 -30
  49. package/src/components/Writeup.astro +59 -0
  50. package/src/components/_Image.astro +79 -0
  51. package/src/content/config.ts +2 -28
  52. package/src/content/layouts/base.yml +4 -3
  53. package/src/content/{docs → pages/docs}/_internationalization.mdx +1 -0
  54. package/src/content/{docs → pages/docs}/_using-blocks.mdx +1 -0
  55. package/src/content/{docs → pages/docs}/_using-presets.mdx +1 -0
  56. package/src/content/{docs → pages/docs}/blocks.mdx +1 -0
  57. package/src/content/{docs → pages/docs}/collections/images.mdx +1 -0
  58. package/src/content/{docs → pages/docs}/collections/pages.mdx +1 -0
  59. package/src/content/{docs → pages/docs}/collections/presets.mdx +1 -0
  60. package/src/content/{docs → pages/docs}/collections.mdx +1 -0
  61. package/src/content/{docs → pages/docs}/components/_card.mdx +1 -0
  62. package/src/content/{docs → pages/docs}/components/_dialog.mdx +1 -0
  63. package/src/content/{docs → pages/docs}/components/_drawer.mdx +1 -0
  64. package/src/content/{docs → pages/docs}/components/_localeswitcher.mdx +1 -0
  65. package/src/content/{docs → pages/docs}/components/_switch.mdx +1 -0
  66. package/src/content/{docs → pages/docs}/components/_tagline.mdx +1 -0
  67. package/src/content/{docs → pages/docs}/components/_toggle.mdx +1 -0
  68. package/src/content/{docs → pages/docs}/components/avatar.mdx +1 -0
  69. package/src/content/{docs → pages/docs}/components/badge.mdx +1 -0
  70. package/src/content/{docs → pages/docs}/components/badges.mdx +1 -0
  71. package/src/content/{docs → pages/docs}/components/button.mdx +1 -0
  72. package/src/content/{docs → pages/docs}/components/buttons.mdx +1 -0
  73. package/src/content/{docs → pages/docs}/components/channel.mdx +1 -0
  74. package/src/content/{docs → pages/docs}/components/channels.mdx +1 -0
  75. package/src/content/{docs → pages/docs}/components/checkbox.mdx +1 -0
  76. package/src/content/{docs → pages/docs}/components/code.mdx +1 -0
  77. package/src/content/{docs → pages/docs}/components/heading.mdx +1 -0
  78. package/src/content/{docs → pages/docs}/components/icon.mdx +1 -0
  79. package/src/content/{docs → pages/docs}/components/image.mdx +1 -0
  80. package/src/content/{docs → pages/docs}/components/input.mdx +1 -0
  81. package/src/content/{docs → pages/docs}/components/label.mdx +1 -0
  82. package/src/content/{docs → pages/docs}/components/link.mdx +1 -0
  83. package/src/content/{docs → pages/docs}/components/links.mdx +1 -0
  84. package/src/content/{docs → pages/docs}/components/list.mdx +1 -0
  85. package/src/content/{docs → pages/docs}/components/logo.mdx +1 -0
  86. package/src/content/{docs → pages/docs}/components/menu.mdx +1 -0
  87. package/src/content/{docs → pages/docs}/components/prose.mdx +1 -0
  88. package/src/content/{docs → pages/docs}/components/rating.mdx +1 -0
  89. package/src/content/{docs → pages/docs}/components/section.mdx +1 -0
  90. package/src/content/{docs → pages/docs}/components/select.mdx +1 -0
  91. package/src/content/{docs → pages/docs}/components/social.mdx +1 -0
  92. package/src/content/{docs → pages/docs}/components/socials.mdx +1 -0
  93. package/src/content/{docs → pages/docs}/components/switch.mdx +1 -0
  94. package/src/content/{docs → pages/docs}/components/table.mdx +1 -0
  95. package/src/content/{docs → pages/docs}/components/tagline.mdx +1 -0
  96. package/src/content/{docs → pages/docs}/components/text.mdx +1 -0
  97. package/src/content/{docs → pages/docs}/components/textarea.mdx +1 -0
  98. package/src/content/{docs → pages/docs}/components/themer.mdx +1 -0
  99. package/src/content/{docs → pages/docs}/components.mdx +1 -0
  100. package/src/content/{docs → pages/docs}/customization.mdx +1 -0
  101. package/src/content/{docs → pages/docs}/frameworks.mdx +1 -0
  102. package/src/content/{docs → pages/docs}/generating-pages.mdx +1 -0
  103. package/src/content/{docs → pages/docs}/index.mdx +1 -0
  104. package/src/content/{docs → pages/docs}/installation.mdx +1 -0
  105. package/src/content/{docs → pages/docs}/layouts.mdx +1 -0
  106. package/src/content/pages/index.mdx +3 -3
  107. package/src/content/{products → pages/products}/product.md +2 -2
  108. package/src/integration/index.ts +38 -16
  109. package/src/layouts/{CategoryLayout.astro → Category.astro} +19 -20
  110. package/src/layouts/Doc.astro +70 -0
  111. package/src/layouts/Job.astro +62 -0
  112. package/src/layouts/Jobs.astro +72 -0
  113. package/src/layouts/Page.astro +29 -0
  114. package/src/layouts/Post.astro +52 -0
  115. package/src/layouts/{ProductLayout.astro → Product.astro} +20 -11
  116. package/src/pages/[...page].astro +36 -4
  117. package/src/pages/test.astro +25 -1
  118. package/src/schemas/components/block.ts +58 -15
  119. package/src/schemas/components/button.ts +1 -0
  120. package/src/schemas/components/image.ts +32 -18
  121. package/src/schemas/components/menu.ts +1 -0
  122. package/src/schemas/imageSchema.ts +3 -3
  123. package/src/schemas/page.ts +40 -0
  124. package/src/utils/getHref.ts +4 -21
  125. package/tailwind.config.ts +4 -0
  126. package/src/blocks/Banner1.astro +0 -35
  127. package/src/blocks/Header1.astro +0 -192
  128. package/src/content/layouts/docs.yml +0 -2
  129. package/src/layouts/DocLayout.astro +0 -59
  130. package/src/layouts/Layout.astro +0 -107
  131. package/src/layouts/PageLayout.astro +0 -27
  132. package/src/layouts/PostLayout.astro +0 -22
  133. package/src/pages/[...category].astro +0 -17
  134. package/src/pages/[...doc].astro +0 -17
  135. package/src/pages/[...post].astro +0 -17
  136. package/src/pages/[...product].astro +0 -17
  137. package/src/schemas/blocks/banner.ts +0 -10
  138. package/src/schemas/blocks/categories.ts +0 -14
  139. package/src/schemas/blocks/contact.ts +0 -18
  140. package/src/schemas/blocks/cta.ts +0 -18
  141. package/src/schemas/blocks/feature.ts +0 -18
  142. package/src/schemas/blocks/hero.ts +0 -20
  143. package/src/schemas/blocks/intro.ts +0 -16
  144. package/src/schemas/blocks/products.ts +0 -14
  145. package/src/schemas/categorySchema.ts +0 -16
  146. package/src/schemas/docSchema.ts +0 -14
  147. package/src/schemas/layoutSchema.ts +0 -22
  148. package/src/schemas/pageSchema.ts +0 -17
  149. package/src/schemas/postSchema.ts +0 -14
  150. package/src/schemas/productSchema.ts +0 -22
  151. /package/src/content/{categories → pages/categories}/category.md +0 -0
  152. /package/src/content/{posts → pages/posts}/post.md +0 -0
package/astro.config.ts CHANGED
@@ -1,10 +1,6 @@
1
+ import svelte from '@astrojs/svelte'
1
2
  import { defineConfig } from 'astro/config'
2
3
  import integration from 'fulldev-ui/integration'
3
- import simpleStackQuery from 'simple-stack-query'
4
-
5
- import simpleStackForm from 'simple-stack-form'
6
-
7
- import svelte from '@astrojs/svelte'
8
4
 
9
5
  // https://astro.build/config
10
6
  export default defineConfig({
@@ -19,8 +15,6 @@ export default defineConfig({
19
15
  css: '/src/css/custom.css',
20
16
  injectRoutes: false,
21
17
  }),
22
- simpleStackQuery(),
23
- simpleStackForm(),
24
18
  svelte(),
25
19
  ],
26
20
  redirects: {
@@ -0,0 +1,269 @@
1
+ paths:
2
+ uploads: public/images
3
+ static: public
4
+
5
+ collection_groups:
6
+ - heading: Content
7
+ collections:
8
+ - pages
9
+ - jobs
10
+ - categories
11
+ - heading: Settings
12
+ collections:
13
+ - layouts
14
+
15
+ collections_config:
16
+ pages:
17
+ path: src/content/pages
18
+ url: /[full_slug]/
19
+ icon: wysiwyg
20
+ name: Pages
21
+ disable_add_folder: true
22
+ _enabled_editors:
23
+ - visual
24
+ - content
25
+ schemas:
26
+ page:
27
+ name: Page
28
+ icon: wysiwyg
29
+ remove_extra_inputs: false
30
+ remove_empty_inputs: true
31
+ hide_extra_inputs: true
32
+ path: schemas/page.md
33
+ job:
34
+ name: Job
35
+ icon: wysiwyg
36
+ remove_extra_inputs: false
37
+ remove_empty_inputs: true
38
+ hide_extra_inputs: true
39
+ path: schemas/job.md
40
+ jobs:
41
+ name: Job overview
42
+ icon: wysiwyg
43
+ remove_extra_inputs: false
44
+ remove_empty_inputs: true
45
+ hide_extra_inputs: true
46
+ path: schemas/category.md
47
+ post:
48
+ name: Content
49
+ icon: wysiwyg
50
+ remove_extra_inputs: false
51
+ remove_empty_inputs: true
52
+ hide_extra_inputs: true
53
+ path: schemas/post.md
54
+ category:
55
+ name: Category
56
+ icon: wysiwyg
57
+ remove_extra_inputs: false
58
+ remove_empty_inputs: true
59
+ hide_extra_inputs: true
60
+ path: schemas/category.md
61
+ product:
62
+ name: Product
63
+ icon: wysiwyg
64
+ remove_extra_inputs: false
65
+ remove_empty_inputs: true
66
+ hide_extra_inputs: true
67
+ path: schemas/product.md
68
+ layouts:
69
+ path: src/content/layouts
70
+ name: Layouts
71
+ icon: web
72
+ disable_url: true
73
+ disable_add: true
74
+ disable_add_folder: true
75
+ disable_file_actions: true
76
+ _enabled_editors:
77
+ - data
78
+
79
+ _inputs:
80
+ head:
81
+ label: SEO / Settings
82
+
83
+ head.title:
84
+ label: SEO title
85
+ comment: 50-60 characters
86
+
87
+ head.description:
88
+ label: SEO description
89
+ comment: 50-120 characters
90
+
91
+ parents:
92
+ type: multiselect
93
+ label: Categorieën
94
+ options:
95
+ values: collections.pages
96
+ children:
97
+ type: multiselect
98
+ label: Subcategorieën
99
+ options:
100
+ values: collections.pages
101
+ siblings:
102
+ type: multiselect
103
+ label: Aanbevolen pagina's
104
+ options:
105
+ values: collections.pages
106
+
107
+ href:
108
+ type: url
109
+ label: Link
110
+
111
+ rating.value:
112
+ label: Rating
113
+ type: range
114
+ options:
115
+ min: 0
116
+ max: 5
117
+ step: 0.1
118
+
119
+ head.image:
120
+ type: image
121
+ label: Image
122
+ comment: Visible when you share a link of the page
123
+ options:
124
+ accepts_mime_types: 'image/jpeg,image/jpg,image/png,image/webp'
125
+ mime_type: image/png
126
+ resize_style: contain
127
+ width: 1200
128
+ height: 640
129
+ images:
130
+ type: array
131
+ cascade: true
132
+ images[*]:
133
+ type: image
134
+ options:
135
+ accepts_mime_types: 'image/jpeg,image/jpg,image/png,image/webp'
136
+ mime_type: image/webp
137
+ resize_style: contain
138
+ width: 1920
139
+ height: 1920
140
+ image:
141
+ type: image
142
+ label: Afbeelding
143
+ options:
144
+ accepts_mime_types: 'image/jpeg,image/jpg,image/png,image/webp'
145
+ mime_type: image/webp
146
+ resize_style: contain
147
+ width: 1920
148
+ height: 1920
149
+
150
+ list:
151
+ type: array
152
+ list[*]:
153
+ type: text
154
+ hidden:
155
+ label: Hide
156
+ type: switch
157
+ soldout:
158
+ label: Sold out
159
+ type: switch
160
+ draft:
161
+ label: Draft
162
+ type: switch
163
+ order:
164
+ label: Volgorde
165
+ type: number
166
+ paragraph:
167
+ type: textarea
168
+ label: Tekst
169
+ text:
170
+ type: textarea
171
+ label: Tekst
172
+ button.text:
173
+ type: text
174
+ options:
175
+ type: array
176
+ label: Opties
177
+ options[*]:
178
+ type: text
179
+ variations:
180
+ type: array
181
+ label: Variations
182
+ sizes:
183
+ type: array
184
+ label: Sizes
185
+ sizes[*]:
186
+ type: text
187
+ logo:
188
+ type: image
189
+ cascade: true
190
+ options:
191
+ accepts_mime_types: 'image/jpeg,image/jpg,image/png,image/webp'
192
+ mime_type: image/webp
193
+ resize_style: contain
194
+ width: 260
195
+ height: 32
196
+ rating:
197
+ type: range
198
+ options:
199
+ min: 0
200
+ max: 5
201
+ step: 0.1
202
+ label: Rating
203
+ price:
204
+ type: number
205
+ label: Prijs
206
+ presets:
207
+ hidden: true
208
+ component:
209
+ hidden: true
210
+ dark:
211
+ hidden: true
212
+ name:
213
+ hidden: true
214
+ color:
215
+ hidden: true
216
+ layout:
217
+ hidden: true
218
+ position:
219
+ hidden: true
220
+ scheme:
221
+ hidden: true
222
+ hue:
223
+ hidden: true
224
+ align:
225
+ hidden: true
226
+ frame:
227
+ hidden: true
228
+ variant:
229
+ hidden: true
230
+ scale:
231
+ hidden: true
232
+ render:
233
+ hidden: true
234
+ collection:
235
+ hidden: true
236
+ slug:
237
+ hidden: true
238
+ id:
239
+ hidden: true
240
+ class:
241
+ hidden: true
242
+ direction:
243
+ hidden: true
244
+ size:
245
+ hidden: true
246
+ structure:
247
+ hidden: true
248
+
249
+ _editables:
250
+ content:
251
+ allow_custom_markup: false
252
+ remove_custom_markup: false
253
+ bold: true
254
+ bulletedlist: true
255
+ format: p h1 h2 h3 h4 h5 h6
256
+ image: true
257
+ image_size_attributes: true
258
+ italic: true
259
+ link: true
260
+ numberedlist: true
261
+ redo: true
262
+ table: true
263
+ underline: true
264
+ undo: true
265
+ accepts_mime_types: 'image/jpeg,image/jpg,image/png,image/webp'
266
+ mime_type: image/webp
267
+ resize_style: contain
268
+ width: 1920
269
+ height: 1920
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fulldev-ui",
3
- "version": "0.6.0-beta.3",
3
+ "version": "0.6.0-beta.6",
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",
@@ -0,0 +1,33 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Container from 'fulldev-ui/components/Container.astro'
4
+ import Element from 'fulldev-ui/components/Element.astro'
5
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
6
+
7
+ interface Props extends HTMLAttributes<'header'>, BlockSchema {
8
+ as?: HTMLTag
9
+ }
10
+
11
+ const { as = 'header', text, ...rest } = Astro.props
12
+ ---
13
+
14
+ <Element
15
+ class:list="banner"
16
+ {...rest}
17
+ >
18
+ <Container>
19
+ <Fragment set:html={text} />
20
+ </Container>
21
+ </Element>
22
+
23
+ <style is:global>
24
+ @layer fulldev {
25
+ .banner {
26
+ @apply relative flex w-full items-center bg-primary py-3 text-primary-foreground;
27
+
28
+ .container {
29
+ @apply flex items-center justify-center overflow-hidden bg-primary text-center text-sm leading-none text-primary-foreground;
30
+ }
31
+ }
32
+ }
33
+ </style>
@@ -0,0 +1,73 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Card from 'fulldev-ui/components/Card.astro'
4
+ import Container from 'fulldev-ui/components/Container.astro'
5
+ import Heading from 'fulldev-ui/components/Heading.astro'
6
+ import Image from 'fulldev-ui/components/Image.astro'
7
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
+ import Section from 'fulldev-ui/components/Section.astro'
9
+ import Stack from 'fulldev-ui/components/Stack.astro'
10
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
11
+ import Writeup from 'fulldev-ui/components/Writeup.astro'
12
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
13
+
14
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
15
+
16
+ const { tagline, heading, paragraph, cards, ...rest } = Astro.props
17
+ ---
18
+
19
+ <Section
20
+ class:list="colleagues-1"
21
+ {...rest}
22
+ >
23
+ <Container>
24
+ <Writeup align="center">
25
+ <Tagline
26
+ size="sm"
27
+ text={tagline}
28
+ />
29
+ <Heading
30
+ size="3xl"
31
+ text={heading}
32
+ />
33
+ <Paragraph text={paragraph} />
34
+ </Writeup>
35
+ <Stack>
36
+ {
37
+ cards?.map(({ image, heading, paragraph }) => (
38
+ <Card>
39
+ <Image {...image} />
40
+ <Heading
41
+ as="h3"
42
+ size="xl"
43
+ text={heading}
44
+ />
45
+ <Paragraph text={paragraph} />
46
+ </Card>
47
+ ))
48
+ }
49
+ </Stack>
50
+ </Container>
51
+ </Section>
52
+
53
+ <style is:global>
54
+ @layer fulldev {
55
+ .colleagues-1 {
56
+ .container {
57
+ @apply flex flex-col items-center gap-16;
58
+ }
59
+
60
+ .card {
61
+ @apply mt-20 flex flex-col items-center gap-1 pt-0;
62
+ }
63
+
64
+ .image {
65
+ @apply -mt-20 mb-4 aspect-square max-w-40 rounded-full object-cover;
66
+ }
67
+
68
+ .icon {
69
+ @apply text-primary;
70
+ }
71
+ }
72
+ }
73
+ </style>
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Badges from 'fulldev-ui/components/Badges.astro'
2
4
  import Channel from 'fulldev-ui/components/Channel.astro'
3
5
  import Element from 'fulldev-ui/components/Element.astro'
4
6
  import Form from 'fulldev-ui/components/Form.astro'
@@ -8,16 +10,17 @@ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
10
  import Section from 'fulldev-ui/components/Section.astro'
9
11
  import Social from 'fulldev-ui/components/Social.astro'
10
12
  import Tagline from 'fulldev-ui/components/Tagline.astro'
11
- import type { ContactSchema } from 'fulldev-ui/schemas/blocks/contact'
12
- import type { ComponentProps } from 'svelte'
13
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
13
14
 
14
- interface Props extends ComponentProps<typeof Section>, ContactSchema {}
15
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
15
16
 
16
17
  const {
18
+ badge,
19
+ badges,
20
+ tagline,
17
21
  heading,
18
22
  form,
19
23
  text,
20
- tagline,
21
24
  googleMaps,
22
25
  paragraph,
23
26
  buttons,
@@ -37,6 +40,11 @@ const {
37
40
  <Element>
38
41
  <Element class:list="contact-1-segment">
39
42
  <Element class:list="contact-1-content">
43
+ <Badges
44
+ size="sm"
45
+ {badge}
46
+ {badges}
47
+ />
40
48
  <Tagline
41
49
  size="sm"
42
50
  text={tagline}
@@ -0,0 +1,79 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Badge from 'fulldev-ui/components/Badge.astro'
4
+ import Button from 'fulldev-ui/components/Button.astro'
5
+ import Container from 'fulldev-ui/components/Container.astro'
6
+ import Group from 'fulldev-ui/components/Group.astro'
7
+ import Heading from 'fulldev-ui/components/Heading.astro'
8
+ import Image from 'fulldev-ui/components/Image.astro'
9
+ import List from 'fulldev-ui/components/List.astro'
10
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
11
+ import Prose from 'fulldev-ui/components/Prose.astro'
12
+ import Section from 'fulldev-ui/components/Section.astro'
13
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
14
+ import Toc from 'fulldev-ui/components/Toc.astro'
15
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
16
+
17
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {
18
+ headings?: ComponentProps<typeof Toc>['headings']
19
+ }
20
+
21
+ const {
22
+ tagline,
23
+ badge,
24
+ badges,
25
+ heading,
26
+ paragraph,
27
+ list,
28
+ button,
29
+ buttons,
30
+ image,
31
+ content,
32
+ headings,
33
+ ...rest
34
+ } = Astro.props
35
+ ---
36
+
37
+ <Section
38
+ class:list="content-1"
39
+ {...rest}
40
+ >
41
+ <Container>
42
+ <Prose>
43
+ <Group>
44
+ <Badge {...badge} />
45
+ {badges?.map((badge) => <Badge {...badge} />)}
46
+ </Group>
47
+ <Tagline text={tagline} />
48
+ <Heading
49
+ as="h1"
50
+ size="4xl"
51
+ text={heading}
52
+ />
53
+ <Paragraph
54
+ muted
55
+ size="lg"
56
+ text={paragraph}
57
+ />
58
+ <List items={list} />
59
+ <Group>
60
+ <Button {...button} />
61
+ {buttons?.map((button) => <Button {...button} />)}
62
+ </Group>
63
+ <Image {...image} />
64
+ <Fragment set:html={content} />
65
+ <slot />
66
+ </Prose>
67
+ <Toc {headings} />
68
+ </Container>
69
+ </Section>
70
+
71
+ <style is:global>
72
+ @layer fulldev {
73
+ .content-1 {
74
+ .container {
75
+ @apply flex items-start justify-evenly gap-x-gutter;
76
+ }
77
+ }
78
+ }
79
+ </style>
@@ -0,0 +1,94 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Badge from 'fulldev-ui/components/Badge.astro'
4
+ import Button from 'fulldev-ui/components/Button.astro'
5
+ import Container from 'fulldev-ui/components/Container.astro'
6
+ import Group from 'fulldev-ui/components/Group.astro'
7
+ import Heading from 'fulldev-ui/components/Heading.astro'
8
+ import Image from 'fulldev-ui/components/Image.astro'
9
+ import List from 'fulldev-ui/components/List.astro'
10
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
11
+ import Prose from 'fulldev-ui/components/Prose.astro'
12
+ import Section from 'fulldev-ui/components/Section.astro'
13
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
14
+ import Toc from 'fulldev-ui/components/Toc.astro'
15
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
16
+
17
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {
18
+ headings?: ComponentProps<typeof Toc>['headings']
19
+ }
20
+
21
+ const {
22
+ tagline,
23
+ badge,
24
+ badges,
25
+ heading,
26
+ paragraph,
27
+ list,
28
+ button,
29
+ buttons,
30
+ image,
31
+ headings,
32
+ content,
33
+ ...rest
34
+ } = Astro.props
35
+ ---
36
+
37
+ <Section
38
+ class:list="content-2"
39
+ {...rest}
40
+ >
41
+ <Container>
42
+ <Prose>
43
+ <Group>
44
+ <Badge {...badge} />
45
+ {badges?.map((badge) => <Badge {...badge} />)}
46
+ </Group>
47
+ <Tagline
48
+ size="sm"
49
+ text={tagline}
50
+ />
51
+ <Heading
52
+ as="h1"
53
+ size="4xl"
54
+ text={heading}
55
+ />
56
+ <Paragraph
57
+ muted
58
+ size="lg"
59
+ text={paragraph}
60
+ />
61
+ <List items={list} />
62
+ <Group>
63
+ <Button {...button} />
64
+ {buttons?.map((button) => <Button {...button} />)}
65
+ </Group>
66
+ <Fragment set:html={content} />
67
+ <slot />
68
+ </Prose>
69
+ <Image {...image} />
70
+ </Container>
71
+ </Section>
72
+
73
+ <style is:global>
74
+ @layer fulldev {
75
+ .content-2 {
76
+ .container {
77
+ @apply grid items-start gap-x-gutter gap-y-16 lg:grid-cols-2;
78
+ }
79
+
80
+ .prose,
81
+ .image {
82
+ @apply lg:sticky lg:top-sticky-16;
83
+ }
84
+
85
+ .prose {
86
+ @apply max-w-screen-sm;
87
+ }
88
+
89
+ .image {
90
+ @apply rounded-md;
91
+ }
92
+ }
93
+ }
94
+ </style>
@@ -0,0 +1,70 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Badges from 'fulldev-ui/components/Badges.astro'
4
+ import Buttons from 'fulldev-ui/components/Buttons.astro'
5
+ import Container from 'fulldev-ui/components/Container.astro'
6
+ import Group from 'fulldev-ui/components/Group.astro'
7
+ import Heading from 'fulldev-ui/components/Heading.astro'
8
+ import List from 'fulldev-ui/components/List.astro'
9
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
10
+ import Prose from 'fulldev-ui/components/Prose.astro'
11
+ import Section from 'fulldev-ui/components/Section.astro'
12
+ import Writeup from 'fulldev-ui/components/Writeup.astro'
13
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
14
+
15
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
16
+
17
+ const { badge, badges, heading, paragraph, list, button, buttons, ...rest } =
18
+ Astro.props
19
+ ---
20
+
21
+ <Section
22
+ class:list="content-3"
23
+ {...rest}
24
+ >
25
+ <Container>
26
+ <Writeup>
27
+ <Group>
28
+ <Badges
29
+ size="sm"
30
+ {badge}
31
+ {badges}
32
+ />
33
+ </Group>
34
+ <Heading
35
+ as="h1"
36
+ size="4xl"
37
+ text={heading}
38
+ />
39
+ <Paragraph
40
+ size="lg"
41
+ muted
42
+ text={paragraph}
43
+ />
44
+ <List items={list} />
45
+ <Group>
46
+ <Buttons
47
+ {button}
48
+ {buttons}
49
+ />
50
+ </Group>
51
+ </Writeup>
52
+ <Prose>
53
+ <slot />
54
+ </Prose>
55
+ </Container>
56
+ </Section>
57
+
58
+ <style is:global>
59
+ @layer fulldev {
60
+ .content-3 {
61
+ .container {
62
+ @apply flex flex-col items-start gap-x-gutter lg:grid lg:grid-cols-2;
63
+ }
64
+
65
+ .writeup {
66
+ @apply lg:sticky lg:top-sticky-16 lg:max-w-xl;
67
+ }
68
+ }
69
+ }
70
+ </style>