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
@@ -1,17 +1,29 @@
1
1
  ---
2
+ import type { ComponentProps } from 'astro/types'
2
3
  import Buttons from 'fulldev-ui/components/Buttons.astro'
3
4
  import Container from 'fulldev-ui/components/Container.astro'
4
- import Element from 'fulldev-ui/components/Element.astro'
5
+ import Group from 'fulldev-ui/components/Group.astro'
5
6
  import Heading from 'fulldev-ui/components/Heading.astro'
7
+ import Image from 'fulldev-ui/components/Image.astro'
6
8
  import Paragraph from 'fulldev-ui/components/Paragraph.astro'
7
9
  import Section from 'fulldev-ui/components/Section.astro'
8
10
  import Tagline from 'fulldev-ui/components/Tagline.astro'
9
- import type { IntroSchema } from 'fulldev-ui/schemas/blocks/intro.ts'
10
- import type { ComponentProps } from 'svelte'
11
+ import Writeup from 'fulldev-ui/components/Writeup.astro'
12
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
11
13
 
12
- interface Props extends ComponentProps<typeof Section>, IntroSchema {}
14
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
13
15
 
14
- const { tagline, heading, paragraph, buttons, ...rest } = Astro.props
16
+ const {
17
+ badge,
18
+ tagline,
19
+ heading,
20
+ paragraph,
21
+ content,
22
+ button,
23
+ buttons,
24
+ image,
25
+ ...rest
26
+ } = Astro.props
15
27
  ---
16
28
 
17
29
  <Section
@@ -19,7 +31,7 @@ const { tagline, heading, paragraph, buttons, ...rest } = Astro.props
19
31
  {...rest}
20
32
  >
21
33
  <Container>
22
- <Element class="intro-1-content">
34
+ <Writeup>
23
35
  <Tagline
24
36
  size="sm"
25
37
  text={tagline}
@@ -30,26 +42,28 @@ const { tagline, heading, paragraph, buttons, ...rest } = Astro.props
30
42
  text={heading}
31
43
  />
32
44
  <Paragraph
33
- size="md"
45
+ size="lg"
34
46
  text={paragraph}
35
47
  />
36
- </Element>
37
- <Buttons
38
- size="sm"
39
- {buttons}
40
- />
48
+ <Fragment set:html={content} />
49
+ <Group>
50
+ <Buttons
51
+ {button}
52
+ {buttons}
53
+ />
54
+ </Group>
55
+ </Writeup>
56
+ <Image {...image} />
41
57
  </Container>
42
58
  </Section>
43
59
 
44
60
  <style is:global>
45
61
  @layer fulldev {
46
- .intro-1 {
47
- .container {
48
- @apply flex flex-col items-center gap-8 text-center;
49
- }
62
+ .section.intro-1 {
63
+ @apply border-b py-8;
50
64
 
51
- .intro-1-content {
52
- @apply flex max-w-screen-md flex-col items-center gap-4 text-center;
65
+ .image {
66
+ @apply rounded-lg;
53
67
  }
54
68
  }
55
69
  }
@@ -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>
@@ -9,10 +9,10 @@ import Heading from 'fulldev-ui/components/Heading.astro'
9
9
  import Image from 'fulldev-ui/components/Image.astro'
10
10
  import Price from 'fulldev-ui/components/Price.astro'
11
11
  import Section from 'fulldev-ui/components/Section.astro'
12
- import type { ProductsSchema } from 'fulldev-ui/schemas/blocks/products'
12
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
13
13
  import { getHref } from 'fulldev-ui/utils/getHref'
14
14
 
15
- interface Props extends ComponentProps<typeof Section>, ProductsSchema {}
15
+ interface Props extends ComponentProps<typeof Section>, BlockSchema {}
16
16
 
17
17
  const { heading, button, products, ...rest } = Astro.props
18
18
 
@@ -37,8 +37,8 @@ const entries = products && (await getEntries(products))
37
37
  </Element>
38
38
  <Element class:list="products-1-cards">
39
39
  {
40
- entries?.map(({ collection, slug, data: { images, title, price } }) => (
41
- <Card href={getHref(collection, slug)}>
40
+ entries?.map(({ slug, data: { images, title, price } }) => (
41
+ <Card href={getHref(slug)}>
42
42
  <Image {...images?.[0]} />
43
43
  <Element class:list="products-1-card-content">
44
44
  <Heading
@@ -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,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
+ }
@@ -1,30 +1,12 @@
1
1
  ---
2
2
  import { getEntries } from 'astro:content'
3
- import type { BannerSchema } from 'fulldev-ui/schemas/blocks/banner'
4
- import type { CategoriesSchema } from 'fulldev-ui/schemas/blocks/categories'
5
- import type { CtaSchema } from 'fulldev-ui/schemas/blocks/cta'
6
- import type { FeatureSchema } from 'fulldev-ui/schemas/blocks/feature'
7
- import type { HeroSchema } from 'fulldev-ui/schemas/blocks/hero'
8
- import type { ProductsSchema } from 'fulldev-ui/schemas/blocks/products'
9
- import type { FooterSchema } from 'fulldev-ui/schemas/components/footer'
10
- import type { HeaderSchema } from 'fulldev-ui/schemas/components/header'
3
+ import type { BlockSchema } from 'fulldev-ui/schemas/components/block'
11
4
 
12
- interface Props
13
- extends HeroSchema,
14
- CtaSchema,
15
- FeatureSchema,
16
- CategoriesSchema,
17
- ProductsSchema,
18
- HeaderSchema,
19
- FooterSchema,
20
- BannerSchema {
21
- _block: string
22
- }
5
+ interface Props extends BlockSchema {}
23
6
 
24
- let { _block, products, categories, ...rest } = Astro.props
7
+ let { _block, pages, ...rest } = Astro.props
25
8
 
26
- products = products && (await getEntries(products))
27
- categories = categories && (await getEntries(categories))
9
+ pages = pages && (await getEntries(pages))
28
10
 
29
11
  const blocks = {
30
12
  ...import.meta.glob('/src/blocks/**/*.astro'),
@@ -41,8 +23,7 @@ const BlockComponent = path && (await (blocks[path] as any)()).default
41
23
  {
42
24
  BlockComponent && (
43
25
  <BlockComponent
44
- {products}
45
- {categories}
26
+ {pages}
46
27
  {...rest}
47
28
  />
48
29
  )
@@ -11,7 +11,6 @@ interface Props
11
11
  as?: HTMLTag
12
12
  type?: HTMLAttributes<'button'>['type'] & HTMLAttributes<'a'>['type']
13
13
  for?: HTMLAttributes<'label'>['for']
14
- reverse?: boolean | undefined
15
14
  }
16
15
 
17
16
  const {
@@ -33,11 +32,11 @@ const {
33
32
  {size}
34
33
  {...rest}
35
34
  >
36
- <Icon name={icon} />
37
35
  <Element as="span">
38
36
  <Fragment set:html={text} />
39
37
  <slot />
40
38
  </Element>
39
+ <Icon name={icon} />
41
40
  </Element>
42
41
 
43
42
  <style is:global>
@@ -1,59 +1,28 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes } from 'astro/types'
2
+ import type { ComponentProps } from 'astro/types'
3
3
  import Button from 'fulldev-ui/components/Button.astro'
4
- import Element from 'fulldev-ui/components/Element.astro'
5
- import type { GlobalProps } from 'fulldev-ui/types/global-props'
6
4
 
7
- interface Props extends GlobalProps, HTMLAttributes<'div'> {
8
- variant?: ComponentProps<typeof Button>['variant']
5
+ interface Props extends ComponentProps<typeof Button> {
9
6
  button?: ComponentProps<typeof Button> | undefined
10
7
  buttons?: ComponentProps<typeof Button>[] | undefined
11
- direction?: 'row' | 'column' | undefined
12
8
  }
13
9
 
14
- const {
15
- direction = 'row',
16
- variant = 'primary',
17
- buttons = [],
18
- button,
19
- size,
20
- ...rest
21
- } = Astro.props
10
+ const { variant = 'primary', button, buttons, ...rest } = Astro.props
22
11
 
23
12
  const buttonVariant = (i: number) => {
24
13
  if (variant === 'primary' && i === 0) return 'primary'
25
14
  else if (variant === 'primary' && i === 1) return 'secondary'
26
- else if (variant === 'primary' && i > 1) return 'ghost'
27
15
  else if (variant === 'secondary' && i === 0) return 'secondary'
28
16
  else return 'ghost'
29
17
  }
30
18
  ---
31
19
 
32
- <Element
33
- class:list="buttons"
34
- {direction}
35
- {...rest}
36
- >
37
- {
38
- [button, ...buttons].filter(Boolean).map((button, i) => (
39
- <Button
40
- variant={buttonVariant(i)}
41
- {size}
42
- {...button}
43
- />
44
- ))
45
- }
46
- <slot />
47
- </Element>
48
-
49
- <style is:global>
50
- @layer fulldev {
51
- .buttons {
52
- @apply inline-flex flex-wrap justify-stretch gap-2;
53
-
54
- &.direction-column {
55
- @apply flex-col items-start;
56
- }
57
- }
58
- }
59
- </style>
20
+ {
21
+ [button, ...(buttons || [])].filter(Boolean).map((button, i) => (
22
+ <Button
23
+ variant={buttonVariant(i)}
24
+ {...rest}
25
+ {...button}
26
+ />
27
+ ))
28
+ }
@@ -8,15 +8,9 @@ import Icon from './Icon.astro'
8
8
  import Input from './Input.astro'
9
9
  import Select from './Select.astro'
10
10
 
11
- interface Props extends ComponentProps<typeof Drawer> {}
11
+ interface Props extends Omit<ComponentProps<typeof Drawer>, 'id' | 'icon'> {}
12
12
 
13
- const {
14
- icon = 'shopping-cart',
15
- color = 'brand',
16
- id = 'cart',
17
- if: ifProp,
18
- ...rest
19
- } = Astro.props
13
+ const { variant = 'ghost', size = 'md', ...rest } = Astro.props
20
14
  ---
21
15
 
22
16
  <Select if={false} />
@@ -25,12 +19,12 @@ const {
25
19
  <Icon if={false} />
26
20
 
27
21
  <Drawer
28
- if={ifProp}
29
22
  class:list="cart"
30
- variant="secondary"
23
+ id="cart"
24
+ icon="shopping-cart"
25
+ {variant}
26
+ {size}
31
27
  {icon}
32
- {color}
33
- {id}
34
28
  {...rest}
35
29
  >
36
30
  <CartList client:load />
@@ -1,7 +1,6 @@
1
1
  ---
2
- import type { HTMLAttributes } from 'astro/types'
2
+ import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
- import type { ComponentProps } from 'svelte'
5
4
  import Button from './Button.astro'
6
5
 
7
6
  interface Props
@@ -3,8 +3,8 @@ import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
3
  import Button from 'fulldev-ui/components/Button.astro'
4
4
  import Element from 'fulldev-ui/components/Element.astro'
5
5
  import Input from 'fulldev-ui/components/Input.astro'
6
- import Paragrapharea from 'fulldev-ui/components/Paragrapharea.astro'
7
6
  import Select from 'fulldev-ui/components/Select.astro'
7
+ import Textarea from 'fulldev-ui/components/Textarea.astro'
8
8
  import type { GlobalProps } from 'fulldev-ui/types/global-props'
9
9
 
10
10
  interface Props extends GlobalProps, HTMLAttributes<'form'> {
@@ -13,7 +13,7 @@ interface Props extends GlobalProps, HTMLAttributes<'form'> {
13
13
  | (
14
14
  | ComponentProps<typeof Input>
15
15
  | ComponentProps<typeof Select>
16
- | (ComponentProps<typeof Paragrapharea> & {
16
+ | (ComponentProps<typeof Textarea> & {
17
17
  type?: 'textarea' | undefined
18
18
  })
19
19
  )[]
@@ -32,7 +32,7 @@ const { fields, submit, ...rest } = Astro.props
32
32
  fields?.map((field) => {
33
33
  if ('options' in field) return <Select {...field} />
34
34
  if ('type' in field && field.type === 'textarea')
35
- return <Paragrapharea {...field} />
35
+ return <Textarea {...field} />
36
36
  return <Input {...(field as any)} />
37
37
  })
38
38
  }
@@ -0,0 +1,39 @@
1
+ ---
2
+ import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
+ import Element from 'fulldev-ui/components/Element.astro'
4
+
5
+ interface Props extends HTMLAttributes<'div'> {
6
+ as?: HTMLTag
7
+ }
8
+
9
+ const { ...rest } = Astro.props
10
+ ---
11
+
12
+ <Element
13
+ class:list="grid"
14
+ {...rest}
15
+ >
16
+ <slot />
17
+ </Element>
18
+
19
+ <style is:global>
20
+ @layer fulldev {
21
+ .grid {
22
+ @apply relative w-full grid-cols-[repeat(auto-fill,minmax(var(--column-width),1fr))] gap-5;
23
+ display: grid;
24
+ --column-width: 20rem;
25
+
26
+ /* &.size-sm {
27
+ --column-width: 16rem;
28
+ }
29
+
30
+ &.size-md {
31
+ --column-width: 20rem;
32
+ }
33
+
34
+ &.size-lg {
35
+ --column-width: 26rem;
36
+ } */
37
+ }
38
+ }
39
+ </style>
@@ -2,16 +2,15 @@
2
2
  import type { HTMLAttributes, HTMLTag } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
4
 
5
- interface Props extends HTMLAttributes<'header'> {
5
+ interface Props extends HTMLAttributes<'div'> {
6
6
  as?: HTMLTag
7
7
  }
8
8
 
9
- const { as = 'header', ...rest } = Astro.props
9
+ const { ...rest } = Astro.props
10
10
  ---
11
11
 
12
12
  <Element
13
- class:list="banner"
14
- {as}
13
+ class:list="group"
15
14
  {...rest}
16
15
  >
17
16
  <slot />
@@ -19,8 +18,8 @@ const { as = 'header', ...rest } = Astro.props
19
18
 
20
19
  <style is:global>
21
20
  @layer fulldev {
22
- .banner {
23
- @apply relative flex w-full items-center bg-primary py-3;
21
+ .group {
22
+ @apply flex flex-wrap justify-stretch gap-2;
24
23
  }
25
24
  }
26
25
  </style>
@@ -4,7 +4,7 @@ import Element from 'fulldev-ui/components/Element.astro'
4
4
  import type { GlobalProps } from 'fulldev-ui/types/global-props'
5
5
  import { slugify } from 'fulldev-ui/utils/slugify'
6
6
 
7
- interface Props extends GlobalProps, HTMLAttributes<'h2'> {
7
+ interface Props extends GlobalProps, HTMLAttributes<'h2'>, HTMLAttributes<'a'> {
8
8
  as?: HTMLTag
9
9
  text?: string | undefined
10
10
  muted?: boolean | undefined
@@ -70,6 +70,10 @@ const {
70
70
  }
71
71
 
72
72
  &.size-5xl {
73
+ @apply text-4xl lg:text-5xl;
74
+ }
75
+
76
+ &.size-6xl {
73
77
  @apply text-5xl lg:text-6xl;
74
78
  }
75
79
  }