fulldev-ui 0.6.0-beta.2 → 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 (257) 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 +13 -15
  5. package/src/blocks/Colleagues1.astro +73 -0
  6. package/src/blocks/Contact1.astro +100 -0
  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 +73 -0
  12. package/src/blocks/Feature1.astro +61 -0
  13. package/src/blocks/Features1.astro +66 -0
  14. package/src/blocks/Footer.astro +36 -68
  15. package/src/blocks/Header.astro +150 -3
  16. package/src/blocks/Hero1.astro +74 -0
  17. package/src/blocks/Intro1.astro +70 -0
  18. package/src/blocks/Jobs1.astro +73 -0
  19. package/src/blocks/Logos1.astro +55 -0
  20. package/src/blocks/Products1.astro +90 -0
  21. package/src/blocks/Reviews1.astro +79 -0
  22. package/src/blocks/{Hero.astro → _Hero.astro} +7 -6
  23. package/src/components/Badge.astro +10 -18
  24. package/src/components/Badges.astro +12 -35
  25. package/src/components/Block.astro +30 -0
  26. package/src/components/Blocks.astro +26 -0
  27. package/src/components/Button.astro +11 -25
  28. package/src/components/Buttons.astro +12 -43
  29. package/src/components/Card.astro +8 -150
  30. package/src/components/Cart.astro +6 -11
  31. package/src/components/CartSummary.astro +3 -3
  32. package/src/components/Channel.astro +5 -14
  33. package/src/components/Container.astro +25 -0
  34. package/src/components/Drawer.astro +55 -117
  35. package/src/components/DrawerOld.astro +143 -0
  36. package/src/components/Element.astro +2 -0
  37. package/src/components/Form.astro +3 -1
  38. package/src/components/Grid.astro +39 -0
  39. package/src/components/Group.astro +25 -0
  40. package/src/components/Head.astro +18 -32
  41. package/src/components/Header.astro +8 -105
  42. package/src/components/Heading.astro +34 -71
  43. package/src/components/Icon.astro +5 -4
  44. package/src/components/Image.astro +15 -50
  45. package/src/components/Layout.astro +35 -0
  46. package/src/components/Link.astro +12 -18
  47. package/src/components/Links.astro +14 -35
  48. package/src/components/Logo.astro +26 -15
  49. package/src/components/Masonry.astro +42 -0
  50. package/src/components/Menu.astro +17 -38
  51. package/src/components/Menus.astro +20 -0
  52. package/src/components/Navigation.astro +39 -0
  53. package/src/components/Panel.astro +25 -0
  54. package/src/components/Paragraph.astro +24 -7
  55. package/src/components/Price.astro +4 -4
  56. package/src/components/Prose.astro +47 -130
  57. package/src/components/Rating.astro +24 -75
  58. package/src/components/Search.astro +5 -4
  59. package/src/components/Section.astro +20 -29
  60. package/src/components/Sidebar.astro +18 -69
  61. package/src/components/Social.astro +9 -2
  62. package/src/components/Stack.astro +25 -0
  63. package/src/components/Tagline.astro +21 -31
  64. package/src/components/Toc.astro +22 -21
  65. package/src/components/Writeup.astro +33 -82
  66. package/src/components/_Author.astro +90 -0
  67. package/src/components/_Header.astro +129 -0
  68. package/src/components/_Image.astro +79 -0
  69. package/src/components/_Prose copy.astro +172 -0
  70. package/src/components/_Sidebar copy.astro +87 -0
  71. package/src/content/config.ts +2 -29
  72. package/src/content/layouts/base.yml +42 -80
  73. package/src/content/pages/categories/category.md +7 -0
  74. package/src/content/{docs → pages/docs}/_internationalization.mdx +1 -0
  75. package/src/content/{docs → pages/docs}/_using-blocks.mdx +1 -0
  76. package/src/content/{docs → pages/docs}/_using-presets.mdx +1 -0
  77. package/src/content/{docs → pages/docs}/blocks.mdx +1 -0
  78. package/src/content/{docs → pages/docs}/collections/images.mdx +1 -0
  79. package/src/content/{docs → pages/docs}/collections/pages.mdx +1 -0
  80. package/src/content/{docs → pages/docs}/collections/presets.mdx +1 -0
  81. package/src/content/{docs → pages/docs}/collections.mdx +1 -0
  82. package/src/content/{docs → pages/docs}/components/_card.mdx +1 -0
  83. package/src/content/{docs → pages/docs}/components/_dialog.mdx +1 -0
  84. package/src/content/{docs → pages/docs}/components/_drawer.mdx +1 -0
  85. package/src/content/{docs → pages/docs}/components/_localeswitcher.mdx +1 -0
  86. package/src/content/{docs → pages/docs}/components/_switch.mdx +1 -0
  87. package/src/content/{docs → pages/docs}/components/_tagline.mdx +1 -0
  88. package/src/content/{docs → pages/docs}/components/_toggle.mdx +1 -0
  89. package/src/content/{docs → pages/docs}/components/avatar.mdx +1 -0
  90. package/src/content/{docs → pages/docs}/components/badge.mdx +1 -0
  91. package/src/content/{docs → pages/docs}/components/badges.mdx +1 -0
  92. package/src/content/{docs → pages/docs}/components/button.mdx +1 -0
  93. package/src/content/{docs → pages/docs}/components/buttons.mdx +1 -0
  94. package/src/content/{docs → pages/docs}/components/channel.mdx +1 -0
  95. package/src/content/{docs → pages/docs}/components/channels.mdx +1 -0
  96. package/src/content/{docs → pages/docs}/components/checkbox.mdx +1 -0
  97. package/src/content/{docs → pages/docs}/components/code.mdx +1 -0
  98. package/src/content/{docs → pages/docs}/components/heading.mdx +1 -0
  99. package/src/content/{docs → pages/docs}/components/icon.mdx +1 -0
  100. package/src/content/{docs → pages/docs}/components/image.mdx +1 -0
  101. package/src/content/{docs → pages/docs}/components/input.mdx +1 -0
  102. package/src/content/{docs → pages/docs}/components/label.mdx +1 -0
  103. package/src/content/{docs → pages/docs}/components/link.mdx +1 -0
  104. package/src/content/{docs → pages/docs}/components/links.mdx +1 -0
  105. package/src/content/{docs → pages/docs}/components/list.mdx +1 -0
  106. package/src/content/{docs → pages/docs}/components/logo.mdx +1 -0
  107. package/src/content/{docs → pages/docs}/components/menu.mdx +1 -0
  108. package/src/content/{docs → pages/docs}/components/prose.mdx +1 -0
  109. package/src/content/{docs → pages/docs}/components/rating.mdx +1 -0
  110. package/src/content/{docs → pages/docs}/components/section.mdx +1 -0
  111. package/src/content/{docs → pages/docs}/components/select.mdx +1 -0
  112. package/src/content/{docs → pages/docs}/components/social.mdx +1 -0
  113. package/src/content/{docs → pages/docs}/components/socials.mdx +1 -0
  114. package/src/content/{docs → pages/docs}/components/switch.mdx +1 -0
  115. package/src/content/{docs → pages/docs}/components/table.mdx +1 -0
  116. package/src/content/{docs → pages/docs}/components/tagline.mdx +1 -0
  117. package/src/content/pages/docs/components/text.mdx +48 -0
  118. package/src/content/{docs → pages/docs}/components/textarea.mdx +1 -0
  119. package/src/content/{docs → pages/docs}/components/themer.mdx +1 -0
  120. package/src/content/{docs → pages/docs}/components.mdx +2 -4
  121. package/src/content/{docs → pages/docs}/customization.mdx +1 -0
  122. package/src/content/{docs → pages/docs}/frameworks.mdx +1 -0
  123. package/src/content/{docs → pages/docs}/generating-pages.mdx +1 -0
  124. package/src/content/{docs → pages/docs}/index.mdx +2 -4
  125. package/src/content/{docs → pages/docs}/installation.mdx +1 -0
  126. package/src/content/{docs → pages/docs}/layouts.mdx +1 -0
  127. package/src/content/pages/index.mdx +20 -28
  128. package/src/content/{categories/mugs.md → pages/posts/post.md} +1 -1
  129. package/src/content/{products → pages/products}/product.md +4 -4
  130. package/src/css/theme.css +2 -0
  131. package/src/images/favicon/android-chrome-192x192.png +0 -0
  132. package/src/images/favicon/android-chrome-512x512.png +0 -0
  133. package/src/images/favicon/apple-touch-icon.png +0 -0
  134. package/src/images/favicon/browserconfig.xml +9 -0
  135. package/src/images/favicon/favicon-16x16.png +0 -0
  136. package/src/images/favicon/favicon-32x32.png +0 -0
  137. package/src/images/favicon/favicon-48x48.png +0 -0
  138. package/src/images/favicon/favicon.ico +0 -0
  139. package/src/images/favicon/favicon.svg +16 -0
  140. package/src/images/favicon/manifest.webmanifest +30 -0
  141. package/src/images/favicon/mstile-150x150.png +0 -0
  142. package/src/images/favicon/safari-pinned-tab.svg +16 -0
  143. package/src/images/favicon/yandex-browser-50x50.png +0 -0
  144. package/src/images/favicon/yandex-browser-manifest.json +9 -0
  145. package/src/integration/index.ts +48 -17
  146. package/src/layouts/{CategoryLayout.astro → Category.astro} +21 -15
  147. package/src/layouts/Doc.astro +70 -0
  148. package/src/layouts/Job.astro +62 -0
  149. package/src/layouts/Jobs.astro +72 -0
  150. package/src/layouts/Page.astro +29 -0
  151. package/src/layouts/Post.astro +52 -0
  152. package/src/layouts/{ProductLayout.astro → Product.astro} +25 -11
  153. package/src/pages/[...page].astro +36 -4
  154. package/src/pages/test.astro +32 -2
  155. package/src/schemas/components/avatar.ts +4 -1
  156. package/src/schemas/components/badge.ts +16 -11
  157. package/src/schemas/components/block.ts +61 -0
  158. package/src/schemas/components/button.ts +14 -19
  159. package/src/schemas/components/channel.ts +15 -9
  160. package/src/schemas/components/footer.ts +15 -14
  161. package/src/schemas/components/head.ts +17 -0
  162. package/src/schemas/components/header.ts +19 -16
  163. package/src/schemas/components/heading.ts +7 -1
  164. package/src/schemas/components/icon.ts +7 -1
  165. package/src/schemas/components/image.ts +38 -21
  166. package/src/schemas/components/link.ts +10 -16
  167. package/src/schemas/components/logo.ts +12 -2
  168. package/src/schemas/components/menu.ts +12 -13
  169. package/src/schemas/components/navigation.ts +10 -0
  170. package/src/schemas/components/paragraph.ts +9 -0
  171. package/src/schemas/components/price.ts +9 -0
  172. package/src/schemas/components/rating.ts +8 -13
  173. package/src/schemas/components/sidebar.ts +14 -12
  174. package/src/schemas/components/social.ts +16 -1
  175. package/src/schemas/components/tagline.ts +7 -1
  176. package/src/schemas/imageSchema.ts +33 -4
  177. package/src/schemas/page.ts +40 -0
  178. package/src/types/global-props.ts +0 -9
  179. package/src/types/{virtual-modules.d.ts → virtual.d.ts} +1 -1
  180. package/src/utils/getHref.ts +4 -20
  181. package/tailwind.config.ts +4 -0
  182. package/tsconfig.json +1 -3
  183. package/example.svelte +0 -0
  184. package/parent.svelte +0 -0
  185. package/src/App.svelte +0 -0
  186. package/src/blocks/Categories.astro +0 -12
  187. package/src/blocks/Colleagues.astro +0 -12
  188. package/src/blocks/Contact.astro +0 -117
  189. package/src/blocks/Content.astro +0 -130
  190. package/src/blocks/Cta.astro +0 -13
  191. package/src/blocks/Excerpt.astro +0 -12
  192. package/src/blocks/Features.astro +0 -11
  193. package/src/blocks/Intro.astro +0 -101
  194. package/src/blocks/Jobs.astro +0 -12
  195. package/src/blocks/Posts.astro +0 -11
  196. package/src/blocks/Prices.astro +0 -24
  197. package/src/blocks/Product.astro +0 -89
  198. package/src/blocks/Products.astro +0 -101
  199. package/src/blocks/Reviews.astro +0 -12
  200. package/src/blocks/_Contact.astro +0 -112
  201. package/src/components/CartForm.astro +0 -120
  202. package/src/components/CartList.astro +0 -122
  203. package/src/components/Lead.astro +0 -46
  204. package/src/components/ProductCard.astro +0 -52
  205. package/src/components/Text.astro +0 -43
  206. package/src/components/_CartList backup.astro +0 -125
  207. package/src/components/_CartList copy.astro +0 -213
  208. package/src/components/_CartListSimple.astro +0 -148
  209. package/src/components/sections.astro +0 -28
  210. package/src/content/docs/components/lead.mdx +0 -49
  211. package/src/content/docs/components/paragraph.mdx +0 -49
  212. package/src/content/layouts/docs.yml +0 -70
  213. package/src/layouts/DocLayout.astro +0 -17
  214. package/src/layouts/Layout.astro +0 -79
  215. package/src/layouts/PageLayout.astro +0 -20
  216. package/src/layouts/PostLayout.astro +0 -20
  217. package/src/loaders/imageLoader.ts +0 -26
  218. package/src/pages/[...category].astro +0 -17
  219. package/src/pages/[...doc].astro +0 -17
  220. package/src/pages/[...post].astro +0 -17
  221. package/src/pages/[...product].astro +0 -17
  222. package/src/schemas/archive/_pageSchema.ts +0 -94
  223. package/src/schemas/categorySchema.ts +0 -16
  224. package/src/schemas/components/avatars.ts +0 -4
  225. package/src/schemas/components/banner.ts +0 -3
  226. package/src/schemas/components/buttons.ts +0 -4
  227. package/src/schemas/components/card.ts +0 -43
  228. package/src/schemas/components/cards.ts +0 -4
  229. package/src/schemas/components/channels.ts +0 -4
  230. package/src/schemas/components/global.ts +0 -16
  231. package/src/schemas/components/links.ts +0 -4
  232. package/src/schemas/components/list.ts +0 -3
  233. package/src/schemas/components/section.ts +0 -17
  234. package/src/schemas/components/sections.ts +0 -3
  235. package/src/schemas/components/socials.ts +0 -4
  236. package/src/schemas/components/subheader.ts +0 -10
  237. package/src/schemas/components/text.ts +0 -3
  238. package/src/schemas/components/themer.ts +0 -3
  239. package/src/schemas/components/toc.ts +0 -3
  240. package/src/schemas/components/writeup.ts +0 -20
  241. package/src/schemas/docSchema.ts +0 -10
  242. package/src/schemas/fields/categories.ts +0 -3
  243. package/src/schemas/fields/description.ts +0 -3
  244. package/src/schemas/fields/href.ts +0 -3
  245. package/src/schemas/fields/image.ts +0 -24
  246. package/src/schemas/fields/images.ts +0 -4
  247. package/src/schemas/fields/order.ts +0 -3
  248. package/src/schemas/fields/price.ts +0 -3
  249. package/src/schemas/fields/products.ts +0 -5
  250. package/src/schemas/fields/seo.ts +0 -12
  251. package/src/schemas/fields/soldout.ts +0 -3
  252. package/src/schemas/fields/title.ts +0 -3
  253. package/src/schemas/fields/variants.ts +0 -3
  254. package/src/schemas/layoutSchema.ts +0 -28
  255. package/src/schemas/pageSchema.ts +0 -20
  256. package/src/schemas/postSchema.ts +0 -16
  257. package/src/schemas/productSchema.ts +0 -22
@@ -0,0 +1,74 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Badge from 'fulldev-ui/components/Badge.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 Image from 'fulldev-ui/components/Image.astro'
9
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
10
+ import Section from 'fulldev-ui/components/Section.astro'
11
+ import Tagline from 'fulldev-ui/components/Tagline.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 {
18
+ badge,
19
+ tagline,
20
+ heading,
21
+ paragraph,
22
+ content,
23
+ button,
24
+ buttons,
25
+ image,
26
+ ...rest
27
+ } = Astro.props
28
+ ---
29
+
30
+ <Section
31
+ class:list="hero-1"
32
+ {...rest}
33
+ >
34
+ <Container>
35
+ <Writeup align="center">
36
+ <Badge
37
+ size="lg"
38
+ {...badge}
39
+ />
40
+ <Tagline
41
+ size="sm"
42
+ text={tagline}
43
+ />
44
+ <Heading
45
+ as="h1"
46
+ size="6xl"
47
+ text={heading}
48
+ />
49
+ <Paragraph
50
+ size="xl"
51
+ text={paragraph}
52
+ />
53
+ <Fragment set:html={content} />
54
+ <Group>
55
+ <Buttons
56
+ size="lg"
57
+ {button}
58
+ {buttons}
59
+ />
60
+ </Group>
61
+ </Writeup>
62
+ <Image {...image} />
63
+ </Container>
64
+ </Section>
65
+
66
+ <style is:global>
67
+ @layer fulldev {
68
+ .hero-1 {
69
+ .image {
70
+ @apply rounded-lg;
71
+ }
72
+ }
73
+ }
74
+ </style>
@@ -0,0 +1,70 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Buttons from 'fulldev-ui/components/Buttons.astro'
4
+ import Container from 'fulldev-ui/components/Container.astro'
5
+ import Group from 'fulldev-ui/components/Group.astro'
6
+ import Heading from 'fulldev-ui/components/Heading.astro'
7
+ import Image from 'fulldev-ui/components/Image.astro'
8
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
9
+ import Section from 'fulldev-ui/components/Section.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 {
17
+ badge,
18
+ tagline,
19
+ heading,
20
+ paragraph,
21
+ content,
22
+ button,
23
+ buttons,
24
+ image,
25
+ ...rest
26
+ } = Astro.props
27
+ ---
28
+
29
+ <Section
30
+ class:list="intro-1"
31
+ {...rest}
32
+ >
33
+ <Container>
34
+ <Writeup>
35
+ <Tagline
36
+ size="sm"
37
+ text={tagline}
38
+ />
39
+ <Heading
40
+ as="h1"
41
+ size="3xl"
42
+ text={heading}
43
+ />
44
+ <Paragraph
45
+ size="lg"
46
+ text={paragraph}
47
+ />
48
+ <Fragment set:html={content} />
49
+ <Group>
50
+ <Buttons
51
+ {button}
52
+ {buttons}
53
+ />
54
+ </Group>
55
+ </Writeup>
56
+ <Image {...image} />
57
+ </Container>
58
+ </Section>
59
+
60
+ <style is:global>
61
+ @layer fulldev {
62
+ .section.intro-1 {
63
+ @apply border-b py-8;
64
+
65
+ .image {
66
+ @apply rounded-lg;
67
+ }
68
+ }
69
+ }
70
+ </style>
@@ -0,0 +1,73 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import { getEntries } from 'astro:content'
4
+ import Card from 'fulldev-ui/components/Card.astro'
5
+ import Container from 'fulldev-ui/components/Container.astro'
6
+ import Grid from 'fulldev-ui/components/Grid.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 Section from 'fulldev-ui/components/Section.astro'
11
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
12
+ import Writeup from 'fulldev-ui/components/Writeup.astro'
13
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
14
+ import { getHref } from 'fulldev-ui/utils/getHref'
15
+
16
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
17
+
18
+ const { tagline, heading, paragraph, pages, ...rest } = Astro.props
19
+
20
+ const entries = pages && (await getEntries(pages))
21
+ ---
22
+
23
+ <Section
24
+ class:list="jobs-1"
25
+ {...rest}
26
+ >
27
+ <Container>
28
+ <Writeup align="center">
29
+ <Tagline
30
+ size="sm"
31
+ text={tagline}
32
+ />
33
+ <Heading
34
+ size="3xl"
35
+ text={heading}
36
+ />
37
+ <Paragraph text={paragraph} />
38
+ </Writeup>
39
+ <Grid>
40
+ {
41
+ entries?.map(({ slug, data: { title, list } }) => (
42
+ <Card
43
+ class="jobs-1-card"
44
+ href={getHref(slug)}
45
+ >
46
+ <Heading
47
+ as="h2"
48
+ size="lg"
49
+ text={title}
50
+ />
51
+ <List
52
+ size="sm"
53
+ items={list}
54
+ />
55
+ </Card>
56
+ ))
57
+ }
58
+ </Grid>
59
+ </Container>
60
+ </Section>
61
+
62
+ <style is:global>
63
+ @layer fulldev {
64
+ .jobs-1 {
65
+ .container {
66
+ @apply flex flex-col items-center gap-16;
67
+ }
68
+ .card {
69
+ @apply flex flex-col gap-3;
70
+ }
71
+ }
72
+ }
73
+ </style>
@@ -0,0 +1,55 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Container from 'fulldev-ui/components/Container.astro'
4
+ import Element from 'fulldev-ui/components/Element.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 Writeup from 'fulldev-ui/components/Writeup.astro'
10
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block.ts'
11
+
12
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
13
+
14
+ const { tagline, heading, paragraph, images, ...rest } = Astro.props
15
+ ---
16
+
17
+ <Section
18
+ class:list="logos-1"
19
+ {...rest}
20
+ >
21
+ <Container>
22
+ <Writeup align="center">
23
+ <Heading
24
+ size="xl"
25
+ text={heading}
26
+ />
27
+ <Paragraph
28
+ size="sm"
29
+ muted
30
+ text={paragraph}
31
+ />
32
+ </Writeup>
33
+ <Element class:list="logos-1-cards">
34
+ {images?.map((image) => <Image {...image} />)}
35
+ </Element>
36
+ </Container>
37
+ </Section>
38
+
39
+ <style is:global>
40
+ @layer fulldev {
41
+ .logos-1 {
42
+ .container {
43
+ @apply flex flex-col items-center gap-8;
44
+ }
45
+
46
+ .logos-1-cards {
47
+ @apply flex flex-wrap justify-center gap-12;
48
+ }
49
+
50
+ .image {
51
+ @apply max-w-36;
52
+ }
53
+ }
54
+ }
55
+ </style>
@@ -0,0 +1,90 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import { getEntries } from 'astro:content'
4
+ import Button from 'fulldev-ui/components/Button.astro'
5
+ import Card from 'fulldev-ui/components/Card.astro'
6
+ import Container from 'fulldev-ui/components/Container.astro'
7
+ import Element from 'fulldev-ui/components/Element.astro'
8
+ import Heading from 'fulldev-ui/components/Heading.astro'
9
+ import Image from 'fulldev-ui/components/Image.astro'
10
+ import Price from 'fulldev-ui/components/Price.astro'
11
+ import Section from 'fulldev-ui/components/Section.astro'
12
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
13
+ import { getHref } from 'fulldev-ui/utils/getHref'
14
+
15
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
16
+
17
+ const { heading, button, products, ...rest } = Astro.props
18
+
19
+ const entries = products && (await getEntries(products))
20
+ ---
21
+
22
+ <Section
23
+ class:list="products-1"
24
+ {...rest}
25
+ >
26
+ <Container>
27
+ <Element class:list="products-1-segment">
28
+ <Heading
29
+ size="2xl"
30
+ text={heading}
31
+ />
32
+ <Button
33
+ variant="ghost"
34
+ size="sm"
35
+ {...button}
36
+ />
37
+ </Element>
38
+ <Element class:list="products-1-cards">
39
+ {
40
+ entries?.map(({ slug, data: { images, title, price } }) => (
41
+ <Card href={getHref(slug)}>
42
+ <Image {...images?.[0]} />
43
+ <Element class:list="products-1-card-content">
44
+ <Heading
45
+ as="h3"
46
+ size="md"
47
+ text={title}
48
+ />
49
+ <Price amount={price} />
50
+ </Element>
51
+ </Card>
52
+ ))
53
+ }
54
+ </Element>
55
+ </Container>
56
+ </Section>
57
+
58
+ <style is:global>
59
+ @layer fulldev {
60
+ .products-1 {
61
+ .container {
62
+ @apply flex flex-col gap-8;
63
+ }
64
+
65
+ .products-1-segment {
66
+ @apply flex items-center justify-between gap-8;
67
+ }
68
+
69
+ .products-1-cards {
70
+ @apply grid grid-cols-2 items-start gap-4 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6;
71
+ }
72
+
73
+ .card {
74
+ @apply relative flex flex-col gap-3;
75
+
76
+ &:hover > .image {
77
+ @apply opacity-75 transition-opacity;
78
+ }
79
+
80
+ .image {
81
+ @apply rounded-md border;
82
+ }
83
+ }
84
+
85
+ .products-1-card-content {
86
+ @apply flex h-full flex-col gap-2;
87
+ }
88
+ }
89
+ }
90
+ </style>
@@ -0,0 +1,79 @@
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 Masonry from 'fulldev-ui/components/Masonry.astro'
7
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
+ import Rating from 'fulldev-ui/components/Rating.astro'
9
+ import Section from 'fulldev-ui/components/Section.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="reviews-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
+ <Masonry>
36
+ {
37
+ cards?.map(({ rating, heading, paragraph }) => (
38
+ <Card class="reviews-1-card">
39
+ <Rating
40
+ size="sm"
41
+ score={rating}
42
+ />
43
+ <Heading
44
+ as="h3"
45
+ size="md"
46
+ text={heading}
47
+ />
48
+ <Paragraph
49
+ size="sm"
50
+ text={paragraph}
51
+ />
52
+ </Card>
53
+ ))
54
+ }
55
+ </Masonry>
56
+ </Container>
57
+ </Section>
58
+
59
+ <style is:global>
60
+ @layer fulldev {
61
+ .reviews-1 {
62
+ .container {
63
+ @apply flex flex-col items-center gap-16;
64
+ }
65
+
66
+ .reviews-1-cards {
67
+ @apply grid grid-cols-1 gap-6 lg:grid-cols-3;
68
+ }
69
+
70
+ .reviews-1-card {
71
+ @apply flex flex-col gap-3;
72
+ }
73
+
74
+ .icon {
75
+ @apply text-primary;
76
+ }
77
+ }
78
+ }
79
+ </style>
@@ -1,12 +1,13 @@
1
- ---
2
- import type { ComponentProps, HTMLAttributes, HTMLTag } from 'astro/types'
1
+ <!-- ---
2
+ import type { ComponentProps,HTMLAttributes,HTMLTag } from 'astro/types'
3
3
  import Badge from 'fulldev-ui/components/Badge.astro'
4
4
  import Buttons from 'fulldev-ui/components/Buttons.astro'
5
5
  import Element from 'fulldev-ui/components/Element.astro'
6
6
  import Heading from 'fulldev-ui/components/Heading.astro'
7
7
  import Image from 'fulldev-ui/components/Image.astro'
8
- import Lead from 'fulldev-ui/components/Lead.astro'
9
- import Paragraph from 'fulldev-ui/components/Paragraph.astro'
8
+ import Paragraph,{
9
+ default as Lead,
10
+ } from 'fulldev-ui/components/Paragraph.astro'
10
11
  import Rating from 'fulldev-ui/components/Rating.astro'
11
12
  import Tagline from 'fulldev-ui/components/Tagline.astro'
12
13
 
@@ -69,7 +70,7 @@ const {
69
70
  {level}
70
71
  {size}
71
72
  />
72
- <Lead
73
+ <Paragraph
73
74
  text={lead}
74
75
  {size}
75
76
  />
@@ -241,4 +242,4 @@ const {
241
242
  }
242
243
  }
243
244
  }
244
- </style>
245
+ </style> -->
@@ -1,31 +1,24 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes, HTMLTag } from 'astro/types'
3
- import type { CollectionEntry } from 'astro:content'
4
- import { getEntry } from 'astro:content'
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
5
3
  import Element from 'fulldev-ui/components/Element.astro'
6
4
  import Icon from 'fulldev-ui/components/Icon.astro'
7
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
5
+ import type { BadgeSchema } from 'fulldev-ui/schemas/components/badge'
8
6
 
9
7
  interface Props
10
- extends GlobalProps,
11
- HTMLAttributes<'div'>,
12
- HTMLAttributes<'a'> {
8
+ extends HTMLAttributes<'button'>,
9
+ Omit<HTMLAttributes<'a'>, 'href' | 'target'>,
10
+ BadgeSchema {
13
11
  as?: HTMLTag
14
- href?: string | null | undefined
15
- icon?: ComponentProps<typeof Icon>['name']
16
- slug?: CollectionEntry<'pages'>['slug'] | undefined
17
- variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | undefined
18
- text?: string | undefined
12
+ type?: HTMLAttributes<'button'>['type'] & HTMLAttributes<'a'>['type']
13
+ reverse?: boolean | undefined
19
14
  }
20
15
 
21
16
  const {
22
- slug,
23
- href = slug === 'index' ? '/' : slug ? `/${slug}/` : undefined,
24
- text = slug ? (await getEntry('pages', slug)).data.title : undefined,
25
- as = href ? 'a' : 'div',
26
- target = href?.startsWith('http') ? '_blank' : undefined,
17
+ href,
18
+ as = href ? 'a' : 'button',
27
19
  variant = 'outline',
28
20
  size = 'md',
21
+ text,
29
22
  icon,
30
23
  ...rest
31
24
  } = Astro.props
@@ -35,7 +28,6 @@ const {
35
28
  class:list="badge"
36
29
  {as}
37
30
  {href}
38
- {target}
39
31
  {variant}
40
32
  {size}
41
33
  {...rest}
@@ -1,43 +1,20 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
- import Element from 'fulldev-ui/components/Element.astro'
2
+ import type { ComponentProps } from 'astro/types'
4
3
  import Badge from './Badge.astro'
5
4
 
6
- interface Props extends HTMLAttributes<'div'> {
7
- variant?: ComponentProps<typeof Badge>['variant']
8
- size?: ComponentProps<typeof Badge>['size']
9
- badges?: ComponentProps<typeof Badge>[] | undefined
5
+ interface Props extends ComponentProps<typeof Badge> {
10
6
  badge?: ComponentProps<typeof Badge> | undefined
7
+ badges?: ComponentProps<typeof Badge>[] | undefined
11
8
  }
12
9
 
13
- const {
14
- variant = 'outline',
15
- size = 'md',
16
- badges = [],
17
- badge,
18
- ...rest
19
- } = Astro.props
10
+ const { badge, badges, ...rest } = Astro.props
20
11
  ---
21
12
 
22
- <Element
23
- class:list="badges"
24
- {...rest}
25
- >
26
- {
27
- [badge, ...badges].filter(Boolean).map((badge) => (
28
- <Badge
29
- {variant}
30
- {size}
31
- {...badge}
32
- />
33
- ))
34
- }
35
- </Element>
36
-
37
- <style is:global>
38
- @layer fulldev {
39
- .badges {
40
- @apply inline-flex w-auto flex-wrap justify-stretch gap-1.5;
41
- }
42
- }
43
- </style>
13
+ {
14
+ [badge, ...(badges || [])].filter(Boolean).map((badge) => (
15
+ <Badge
16
+ {...badge}
17
+ {...rest}
18
+ />
19
+ ))
20
+ }
@@ -0,0 +1,30 @@
1
+ ---
2
+ import { getEntries } from 'astro:content'
3
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
4
+
5
+ interface Props extends BlockSchema {}
6
+
7
+ let { _block, pages, ...rest } = Astro.props
8
+
9
+ pages = pages && (await getEntries(pages))
10
+
11
+ const blocks = {
12
+ ...import.meta.glob('/src/blocks/**/*.astro'),
13
+ ...import.meta.glob('../blocks/**/*.astro'),
14
+ }
15
+
16
+ const path = Object.keys(blocks).find(
17
+ (path) => path.split('/').pop()?.split('.')[0] === _block
18
+ )
19
+
20
+ const BlockComponent = path && (await (blocks[path] as any)()).default
21
+ ---
22
+
23
+ {
24
+ BlockComponent && (
25
+ <BlockComponent
26
+ {pages}
27
+ {...rest}
28
+ />
29
+ )
30
+ }
@@ -0,0 +1,26 @@
1
+ ---
2
+ import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
+ import Block from 'fulldev-ui/components/Block.astro'
4
+ import Element from 'fulldev-ui/components/Element.astro'
5
+
6
+ interface Props extends HTMLAttributes<'div'> {
7
+ blocks?: ComponentProps<typeof Block>[] | undefined
8
+ }
9
+
10
+ const { blocks, ...rest } = Astro.props
11
+ ---
12
+
13
+ <Element
14
+ class:list="blocks"
15
+ {...rest}
16
+ >
17
+ {blocks?.map((block) => <Block {...block} />)}
18
+ </Element>
19
+
20
+ <style is:global>
21
+ @layer fulldev {
22
+ .blocks {
23
+ @apply flex flex-col;
24
+ }
25
+ }
26
+ </style>