fulldev-ui 0.6.0-beta.9 → 0.6.1

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 (162) hide show
  1. package/astro.config.ts +6 -8
  2. package/cloudcannon.config.yml +57 -86
  3. package/package.json +2 -1
  4. package/public/images/block-code.png +0 -0
  5. package/public/images/component-code.png +0 -0
  6. package/src/blocks/Banner.astro +3 -5
  7. package/src/blocks/Colleagues1.astro +4 -3
  8. package/src/blocks/Contact1.astro +42 -42
  9. package/src/blocks/Contact2.astro +98 -0
  10. package/src/blocks/Content1.astro +6 -27
  11. package/src/blocks/Content2.astro +26 -49
  12. package/src/blocks/Content3.astro +26 -54
  13. package/src/blocks/Content4.astro +34 -50
  14. package/src/blocks/Content5.astro +7 -36
  15. package/src/blocks/Content6.astro +57 -0
  16. package/src/blocks/Content7.astro +65 -0
  17. package/src/blocks/Content8.astro +48 -0
  18. package/src/blocks/Cta1.astro +9 -12
  19. package/src/blocks/Cta2.astro +52 -0
  20. package/src/blocks/Features1.astro +8 -6
  21. package/src/blocks/Features2.astro +71 -0
  22. package/src/blocks/Footer.astro +2 -6
  23. package/src/blocks/Header.astro +9 -25
  24. package/src/blocks/Hero1.astro +19 -27
  25. package/src/blocks/Intro1.astro +6 -7
  26. package/src/blocks/{Industries1.astro → JobCategories1.astro} +13 -38
  27. package/src/blocks/JobCategory1.astro +92 -0
  28. package/src/blocks/Jobs1.astro +7 -10
  29. package/src/blocks/Logos1.astro +4 -4
  30. package/src/blocks/Pages1.astro +85 -0
  31. package/src/blocks/Pricings1.astro +61 -0
  32. package/src/blocks/Products1.astro +7 -10
  33. package/src/blocks/Projects1.astro +59 -83
  34. package/src/blocks/Reviews1.astro +10 -10
  35. package/src/blocks/Subheader.astro +4 -9
  36. package/src/components/Avatar.astro +40 -0
  37. package/src/components/Avatars.astro +20 -0
  38. package/src/components/Badge.astro +6 -35
  39. package/src/components/Block.astro +20 -4
  40. package/src/components/Channel.astro +4 -0
  41. package/src/components/Chip.astro +73 -0
  42. package/src/components/Element.astro +1 -0
  43. package/src/components/Field.astro +33 -0
  44. package/src/components/Fields.astro +20 -0
  45. package/src/components/Heading.astro +12 -5
  46. package/src/components/Image.astro +1 -1
  47. package/src/components/Link.astro +1 -1
  48. package/src/components/Menu.astro +9 -5
  49. package/src/components/Proof.astro +52 -0
  50. package/src/components/Select.astro +1 -1
  51. package/src/components/Tagline.astro +6 -6
  52. package/src/components/Toc.astro +33 -31
  53. package/src/content/config.ts +5 -0
  54. package/src/content/layouts/base.yml +135 -142
  55. package/src/content/pages/{base → _base}/toggle.mdx +1 -1
  56. package/src/content/pages/_showcase/stark-vulcanising-products.md +0 -1
  57. package/src/content/pages/docs/blocks/_categories.mdx +1 -17
  58. package/src/content/pages/docs/blocks/banner.mdx +1 -1
  59. package/src/content/pages/docs/blocks/colleagues.mdx +1 -1
  60. package/src/content/pages/docs/blocks/content.mdx +162 -1
  61. package/src/content/pages/docs/blocks/cta.mdx +1 -1
  62. package/src/content/pages/docs/blocks/features.mdx +66 -1
  63. package/src/content/pages/docs/blocks/footer.mdx +1 -1
  64. package/src/content/pages/docs/blocks/header.mdx +1 -1
  65. package/src/content/pages/docs/blocks/hero.mdx +1 -1
  66. package/src/content/pages/docs/blocks/intro.mdx +1 -1
  67. package/src/content/pages/docs/blocks/logos.mdx +1 -1
  68. package/src/content/pages/docs/blocks/projects.mdx +1 -1
  69. package/src/content/pages/docs/blocks/reviews.mdx +1 -1
  70. package/src/content/pages/docs/blocks.mdx +1 -7
  71. package/src/content/pages/docs/collections/images.mdx +1 -1
  72. package/src/content/pages/docs/collections/pages.mdx +1 -1
  73. package/src/content/pages/docs/collections/presets.mdx +1 -1
  74. package/src/content/pages/docs/components/_localeswitcher.mdx +1 -1
  75. package/src/content/pages/docs/components/_table.mdx +1 -1
  76. package/src/content/pages/docs/components/_tagline.mdx +1 -1
  77. package/src/content/pages/docs/components/_themer.mdx +1 -1
  78. package/src/content/pages/docs/components/_toggle.mdx +1 -1
  79. package/src/content/pages/docs/components/avatar.mdx +32 -0
  80. package/src/content/pages/docs/components/badge.mdx +1 -34
  81. package/src/content/pages/docs/components/badges.mdx +1 -13
  82. package/src/content/pages/docs/components/button.mdx +1 -1
  83. package/src/content/pages/docs/components/buttons.mdx +1 -1
  84. package/src/content/pages/docs/components/channel.mdx +1 -1
  85. package/src/content/pages/docs/components/channels.mdx +1 -1
  86. package/src/content/pages/docs/components/checkbox.mdx +1 -1
  87. package/src/content/pages/docs/components/chip.mdx +75 -0
  88. package/src/content/pages/docs/components/heading.mdx +1 -1
  89. package/src/content/pages/docs/components/icon.mdx +1 -1
  90. package/src/content/pages/docs/components/image.mdx +2 -1
  91. package/src/content/pages/docs/components/input.mdx +1 -1
  92. package/src/content/pages/docs/components/label.mdx +1 -1
  93. package/src/content/pages/docs/components/link.mdx +1 -1
  94. package/src/content/pages/docs/components/links.mdx +11 -52
  95. package/src/content/pages/docs/components/list.mdx +1 -1
  96. package/src/content/pages/docs/components/logo.mdx +1 -1
  97. package/src/content/pages/docs/components/menu.mdx +5 -18
  98. package/src/content/pages/docs/components/paragraph.mdx +1 -1
  99. package/src/content/pages/docs/components/rating.mdx +1 -1
  100. package/src/content/pages/docs/components/select.mdx +1 -1
  101. package/src/content/pages/docs/components/social.mdx +1 -1
  102. package/src/content/pages/docs/components/socials.mdx +1 -1
  103. package/src/content/pages/docs/components/switch.mdx +1 -1
  104. package/src/content/pages/docs/components/tagline.mdx +1 -1
  105. package/src/content/pages/docs/components/textarea.mdx +1 -1
  106. package/src/content/pages/docs/components.mdx +1 -1
  107. package/src/content/pages/docs/customization.mdx +1 -1
  108. package/src/content/pages/docs/frameworks.mdx +1 -1
  109. package/src/content/pages/docs/index.mdx +1 -1
  110. package/src/content/pages/docs/installation.mdx +1 -24
  111. package/src/content/pages/docs/layouts/doc.mdx +1 -1
  112. package/src/content/pages/docs/layouts/page.mdx +1 -1
  113. package/src/content/pages/docs/pages.mdx +1 -1
  114. package/src/content/pages/docs/structures/_card.mdx +1 -1
  115. package/src/content/pages/docs/structures/_dialog.mdx +1 -1
  116. package/src/content/pages/docs/structures/_drawer.mdx +1 -1
  117. package/src/content/pages/docs/structures/card.mdx +1 -1
  118. package/src/content/pages/docs/structures/code.mdx +1 -1
  119. package/src/content/pages/docs/structures/container.mdx +1 -1
  120. package/src/content/pages/docs/structures/drawer.mdx +1 -1
  121. package/src/content/pages/docs/structures/group.mdx +1 -1
  122. package/src/content/pages/docs/structures/layout.mdx +1 -1
  123. package/src/content/pages/docs/structures/masonry.mdx +1 -1
  124. package/src/content/pages/docs/structures/matrix.mdx +1 -1
  125. package/src/content/pages/docs/structures/panel.mdx +1 -1
  126. package/src/content/pages/docs/structures/prose.mdx +1 -1
  127. package/src/content/pages/docs/structures/section.mdx +1 -1
  128. package/src/content/pages/docs/structures/stack.mdx +1 -1
  129. package/src/content/pages/docs/structures/writeup.mdx +1 -1
  130. package/src/content/pages/docs/structures.mdx +1 -1
  131. package/src/content/pages/index.mdx +20 -25
  132. package/src/css/custom.css +4 -0
  133. package/src/integration/index.ts +1 -0
  134. package/src/layouts/Page.astro +45 -10
  135. package/src/layouts/{Product.astro → _Product.astro} +6 -6
  136. package/src/pages/test.astro +16 -0
  137. package/src/schemas/block.ts +22 -41
  138. package/src/schemas/button.ts +2 -0
  139. package/src/schemas/card.ts +43 -0
  140. package/src/schemas/channel.ts +1 -0
  141. package/src/schemas/{badge.ts → chip.ts} +3 -3
  142. package/src/schemas/page.ts +4 -18
  143. package/src/schemas/proof.ts +12 -0
  144. package/src/structures/Drawer.astro +2 -3
  145. package/src/structures/Prose.astro +40 -41
  146. package/src/structures/Section.astro +1 -1
  147. package/src/structures/Sidebar.astro +3 -4
  148. package/src/structures/Split.astro +38 -0
  149. package/tailwind.config.ts +4 -1
  150. package/pnpm-lock.yaml +0 -5186
  151. package/src/blocks/_Hero.astro +0 -245
  152. package/src/components/Blocks.astro +0 -26
  153. package/src/components/Sidebar.astro +0 -43
  154. package/src/content/pages/docs/blocks/feature.mdx +0 -17
  155. package/src/content/pages/docs/layouts.mdx +0 -80
  156. package/src/layouts/Block.astro +0 -81
  157. package/src/layouts/Category.astro +0 -136
  158. package/src/layouts/Doc.astro +0 -96
  159. package/src/layouts/Job.astro +0 -60
  160. package/src/layouts/Jobs.astro +0 -72
  161. package/src/layouts/Post.astro +0 -53
  162. /package/src/content/pages/{posts → _posts}/post.md +0 -0
@@ -0,0 +1,85 @@
1
+ ---
2
+ // Heading etc left, image and content right, sticky
3
+ import Badges from 'fulldev-ui/components/Badges.astro'
4
+ import Buttons from 'fulldev-ui/components/Buttons.astro'
5
+ import Element from 'fulldev-ui/components/Element.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 Tagline from 'fulldev-ui/components/Tagline.astro'
10
+ import type { BlockSchema } from 'fulldev-ui/schemas/block'
11
+ import Container from 'fulldev-ui/structures/Container.astro'
12
+ import Group from 'fulldev-ui/structures/Group.astro'
13
+ import Prose from 'fulldev-ui/structures/Prose.astro'
14
+ import Section from 'fulldev-ui/structures/Section.astro'
15
+ import Split from 'fulldev-ui/structures/Split.astro'
16
+
17
+ interface Props extends BlockSchema {}
18
+
19
+ const {
20
+ depth = 2,
21
+ tagline,
22
+ heading,
23
+ paragraph,
24
+ buttons,
25
+ content,
26
+ cards,
27
+ } = Astro.props
28
+ ---
29
+
30
+ <Section class="pages-1">
31
+ <Container>
32
+ <Split class="items-start">
33
+ <Prose class="lg:sticky lg:top-sticky-16 lg:max-w-xl">
34
+ <Tagline text={tagline} />
35
+ <Heading
36
+ as="h2"
37
+ size="4xl"
38
+ text={heading}
39
+ {depth}
40
+ />
41
+ <Paragraph
42
+ muted
43
+ size="lg"
44
+ text={paragraph}
45
+ />
46
+ <Fragment set:html={content} />
47
+ <Group>
48
+ <Buttons
49
+ variant="secondary"
50
+ {buttons}
51
+ />
52
+ </Group>
53
+ </Prose>
54
+ <Element class="flex flex-col gap-8">
55
+ {
56
+ cards?.map(({ href, image, badges, heading, paragraph }) => (
57
+ <Element
58
+ as="a"
59
+ class="flex flex-col gap-2"
60
+ {href}
61
+ >
62
+ <Image
63
+ class="mb-4"
64
+ {...image}
65
+ />
66
+ <Group>
67
+ <Badges
68
+ size="sm"
69
+ {badges}
70
+ />
71
+ </Group>
72
+ <Heading
73
+ depth={(depth + 1) as 3}
74
+ as="h3"
75
+ size="xl"
76
+ text={heading}
77
+ />
78
+ <Paragraph text={paragraph} />
79
+ </Element>
80
+ ))
81
+ }
82
+ </Element>
83
+ </Split>
84
+ </Container>
85
+ </Section>
@@ -0,0 +1,61 @@
1
+ ---
2
+ import Button from 'fulldev-ui/components/Button.astro'
3
+ import Heading from 'fulldev-ui/components/Heading.astro'
4
+ import List from 'fulldev-ui/components/List.astro'
5
+ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
6
+ import Tagline from 'fulldev-ui/components/Tagline.astro'
7
+ import type { BlockSchema } from 'fulldev-ui/schemas/block'
8
+ import Card from 'fulldev-ui/structures/Card.astro'
9
+ import Container from 'fulldev-ui/structures/Container.astro'
10
+ import Prose from 'fulldev-ui/structures/Prose.astro'
11
+ import Section from 'fulldev-ui/structures/Section.astro'
12
+ import Stack from 'fulldev-ui/structures/Stack.astro'
13
+
14
+ interface Props extends BlockSchema {}
15
+
16
+ const { depth = 2, heading, paragraph, cards } = Astro.props
17
+ ---
18
+
19
+ <Section class="pricings-1">
20
+ <Container class="flex flex-col items-center gap-16">
21
+ <Prose class="text-center">
22
+ <Heading
23
+ size="5xl"
24
+ text={heading}
25
+ {depth}
26
+ />
27
+ <Paragraph
28
+ size="xl"
29
+ text={paragraph}
30
+ />
31
+ </Prose>
32
+ <Stack class="mx-auto flex flex-wrap items-stretch justify-center">
33
+ {
34
+ cards?.map(({ tagline, heading, paragraph, list, button }) => (
35
+ <Card class="min-w-sm flex max-w-md flex-col justify-between gap-8 p-8">
36
+ <Prose>
37
+ <Tagline text={tagline} />
38
+ <Heading
39
+ depth={(depth + 1) as 3}
40
+ size="3xl"
41
+ text={heading}
42
+ />
43
+ <Paragraph
44
+ muted
45
+ text={paragraph}
46
+ />
47
+ <List
48
+ size="sm"
49
+ items={list}
50
+ />
51
+ </Prose>
52
+ <Button
53
+ class=""
54
+ {...button}
55
+ />
56
+ </Card>
57
+ ))
58
+ }
59
+ </Stack>
60
+ </Container>
61
+ </Section>
@@ -1,6 +1,4 @@
1
1
  ---
2
- import type { ComponentProps } from 'astro/types'
3
- import { getEntries } from 'astro:content'
4
2
  import Button from 'fulldev-ui/components/Button.astro'
5
3
  import Element from 'fulldev-ui/components/Element.astro'
6
4
  import Heading from 'fulldev-ui/components/Heading.astro'
@@ -10,13 +8,10 @@ import type { BlockSchema } from 'fulldev-ui/schemas/block'
10
8
  import Card from 'fulldev-ui/structures/Card.astro'
11
9
  import Container from 'fulldev-ui/structures/Container.astro'
12
10
  import Section from 'fulldev-ui/structures/Section.astro'
13
- import { getHref } from 'fulldev-ui/utils/getHref'
14
11
 
15
- interface Props extends ComponentProps<typeof Section>, BlockSchema {}
12
+ interface Props extends BlockSchema {}
16
13
 
17
- const { heading, button, products, ...rest } = Astro.props
18
-
19
- const entries = products && (await getEntries(products))
14
+ const { depth = 2, heading, button, cards, ...rest } = Astro.props
20
15
  ---
21
16
 
22
17
  <Section
@@ -28,6 +23,7 @@ const entries = products && (await getEntries(products))
28
23
  <Heading
29
24
  size="2xl"
30
25
  text={heading}
26
+ {depth}
31
27
  />
32
28
  <Button
33
29
  variant="ghost"
@@ -37,14 +33,15 @@ const entries = products && (await getEntries(products))
37
33
  </Element>
38
34
  <Element class:list="products-1-cards">
39
35
  {
40
- entries?.map(({ slug, data: { images, title, price } }) => (
41
- <Card href={getHref(slug)}>
36
+ cards?.map(({ href, images, heading, price }) => (
37
+ <Card {href}>
42
38
  <Image {...images?.[0]} />
43
39
  <Element class:list="products-1-card-content">
44
40
  <Heading
41
+ depth={(depth + 1) as 3}
45
42
  as="h3"
46
43
  size="md"
47
- text={title}
44
+ text={heading}
48
45
  />
49
46
  <Price amount={price} />
50
47
  </Element>
@@ -1,6 +1,4 @@
1
1
  ---
2
- // Heading etc left, image and content right, sticky
3
- import type { ComponentProps } from 'astro/types'
4
2
  import Badges from 'fulldev-ui/components/Badges.astro'
5
3
  import Buttons from 'fulldev-ui/components/Buttons.astro'
6
4
  import Element from 'fulldev-ui/components/Element.astro'
@@ -8,96 +6,74 @@ import Heading from 'fulldev-ui/components/Heading.astro'
8
6
  import Image from 'fulldev-ui/components/Image.astro'
9
7
  import Paragraph from 'fulldev-ui/components/Paragraph.astro'
10
8
  import Tagline from 'fulldev-ui/components/Tagline.astro'
9
+ import type { BlockSchema } from 'fulldev-ui/schemas/block'
11
10
  import Container from 'fulldev-ui/structures/Container.astro'
12
11
  import Group from 'fulldev-ui/structures/Group.astro'
13
12
  import Prose from 'fulldev-ui/structures/Prose.astro'
14
13
  import Section from 'fulldev-ui/structures/Section.astro'
14
+ import Split from 'fulldev-ui/structures/Split.astro'
15
15
 
16
- interface Props extends ComponentProps<typeof Section> {
17
- tagline?: string | undefined
18
- heading?: string | undefined
19
- paragraph?: string | undefined
20
- content?: string | undefined
21
- buttons?: ComponentProps<typeof Buttons>['buttons']
22
- cards?: {
23
- image?: ComponentProps<typeof Image> | undefined
24
- badges?: ComponentProps<typeof Badges>['badges']
25
- heading?: string | undefined
26
- paragraph?: string | undefined
27
- }[]
28
- }
16
+ interface Props extends BlockSchema {}
29
17
 
30
- const { tagline, heading, paragraph, buttons, content, cards, ...rest } =
31
- Astro.props
18
+ const {
19
+ depth = 2,
20
+ tagline,
21
+ heading,
22
+ paragraph,
23
+ buttons,
24
+ content,
25
+ cards,
26
+ } = Astro.props
32
27
  ---
33
28
 
34
- <Section
35
- class:list="projects-1"
36
- {...rest}
37
- >
29
+ <Section class="projects-1">
38
30
  <Container>
39
- <Prose>
40
- <Tagline text={tagline} />
41
- <Heading
42
- as="h2"
43
- size="4xl"
44
- text={heading}
45
- />
46
- <Paragraph
47
- muted
48
- size="lg"
49
- text={paragraph}
50
- />
51
- <Group>
52
- <Buttons {buttons} />
53
- </Group>
54
- </Prose>
55
- <Element class:list="projects-1-cards">
56
- {
57
- cards?.map(({ image, badges, heading, paragraph }) => (
58
- <Element class:list="projects-1-card">
59
- <Image {...image} />
60
- <Group>
61
- <Badges
62
- size="sm"
63
- {badges}
31
+ <Split align="sticky">
32
+ <Prose class="max-w-xl">
33
+ <Tagline text={tagline} />
34
+ <Heading
35
+ size="3xl"
36
+ text={heading}
37
+ {depth}
38
+ />
39
+ <Paragraph text={paragraph} />
40
+ <Fragment set:html={content} />
41
+ <Group>
42
+ <Buttons
43
+ variant="secondary"
44
+ {buttons}
45
+ />
46
+ </Group>
47
+ </Prose>
48
+ <Element class="flex flex-col gap-8">
49
+ {
50
+ cards?.map(({ href, image, badges, heading, paragraph }) => (
51
+ <Element
52
+ class="flex flex-col gap-2"
53
+ as="a"
54
+ {href}
55
+ >
56
+ <Image
57
+ class="mb-4"
58
+ {...image}
64
59
  />
65
- </Group>
66
- <Heading
67
- as="h3"
68
- size="xl"
69
- text={heading}
70
- />
71
- <Paragraph text={paragraph} />
72
- </Element>
73
- ))
74
- }
75
- </Element>
60
+ <Group>
61
+ <Badges
62
+ size="sm"
63
+ {badges}
64
+ />
65
+ </Group>
66
+ <Heading
67
+ depth={(depth + 1) as 3}
68
+ as="h3"
69
+ size="xl"
70
+ text={heading}
71
+ />
72
+ <Paragraph text={paragraph} />
73
+ </Element>
74
+ ))
75
+ }
76
+ </Element>
77
+ </Split>
76
78
  </Container>
77
79
  </Section>
78
-
79
- <style is:global>
80
- @layer fulldev {
81
- .projects-1 {
82
- .container {
83
- @apply flex flex-col items-start gap-x-gutter lg:grid lg:grid-cols-2;
84
- }
85
-
86
- .prose {
87
- @apply lg:sticky lg:top-sticky-16 lg:max-w-xl;
88
- }
89
-
90
- .projects-1-cards {
91
- @apply flex flex-col gap-8;
92
- }
93
-
94
- .projects-1-card {
95
- @apply flex flex-col gap-2;
96
-
97
- .image {
98
- @apply mb-4 rounded-md;
99
- }
100
- }
101
- }
102
- }
103
- </style>
@@ -1,9 +1,7 @@
1
1
  ---
2
- import type { ComponentProps } from 'astro/types'
3
2
  import Heading from 'fulldev-ui/components/Heading.astro'
4
- import Image from 'fulldev-ui/components/Image.astro'
5
3
  import Paragraph from 'fulldev-ui/components/Paragraph.astro'
6
- import Rating from 'fulldev-ui/components/Rating.astro'
4
+ import Proof from 'fulldev-ui/components/Proof.astro'
7
5
  import Tagline from 'fulldev-ui/components/Tagline.astro'
8
6
  import type { BlockSchema } from 'fulldev-ui/schemas/block'
9
7
  import Card from 'fulldev-ui/structures/Card.astro'
@@ -12,9 +10,9 @@ import Masonry from 'fulldev-ui/structures/Masonry.astro'
12
10
  import Section from 'fulldev-ui/structures/Section.astro'
13
11
  import Writeup from 'fulldev-ui/structures/Writeup.astro'
14
12
 
15
- interface Props extends ComponentProps<typeof Section>, BlockSchema {}
13
+ interface Props extends BlockSchema {}
16
14
 
17
- const { tagline, heading, paragraph, cards, ...rest } = Astro.props
15
+ const { depth = 2, tagline, heading, paragraph, cards, ...rest } = Astro.props
18
16
  ---
19
17
 
20
18
  <Section
@@ -30,19 +28,21 @@ const { tagline, heading, paragraph, cards, ...rest } = Astro.props
30
28
  <Heading
31
29
  size="3xl"
32
30
  text={heading}
31
+ {depth}
33
32
  />
34
33
  <Paragraph text={paragraph} />
35
34
  </Writeup>
36
35
  <Masonry>
37
36
  {
38
- cards?.map(({ rating, heading, paragraph, image }) => (
37
+ cards?.map(({ tagline, avatar, rating, heading, paragraph }) => (
39
38
  <Card class="reviews-1-card">
40
- <Image {...image} />
41
- <Rating
42
- size="sm"
43
- score={rating}
39
+ <Proof
40
+ text={tagline}
41
+ {rating}
42
+ {avatar}
44
43
  />
45
44
  <Heading
45
+ depth={(depth + 1) as 3}
46
46
  as="h3"
47
47
  size="md"
48
48
  text={heading}
@@ -1,27 +1,22 @@
1
1
  ---
2
- import type { ComponentProps, HTMLAttributes } from 'astro/types'
3
2
  import Element from 'fulldev-ui/components/Element.astro'
4
3
  import Links from 'fulldev-ui/components/Links.astro'
4
+ import type { BlockSchema } from 'fulldev-ui/schemas/block'
5
5
 
6
- interface Props extends HTMLAttributes<'header'> {
7
- dark?: boolean | undefined
8
- size?: 'sm' | 'md' | 'lg' | undefined
9
- links?: ComponentProps<typeof Links>['links']
10
- }
6
+ interface Props extends BlockSchema {}
11
7
 
12
- const { size = 'sm', links, ...rest } = Astro.props
8
+ const { links, ...rest } = Astro.props
13
9
  ---
14
10
 
15
11
  <Element
16
12
  class:list={['subheader']}
17
13
  as="subheader"
18
- {size}
19
14
  {...rest}
20
15
  >
21
16
  <Element class:list="subheader-container">
22
17
  <Links
23
18
  class:list="subheader-links"
24
- {size}
19
+ size="sm"
25
20
  {links}
26
21
  />
27
22
  </Element>
@@ -0,0 +1,40 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Image from 'fulldev-ui/components/Image.astro'
4
+
5
+ interface Props extends ComponentProps<typeof Image> {
6
+ size?: 'sm' | 'md' | 'lg' | undefined
7
+ }
8
+
9
+ const { size = 'md', ...rest } = Astro.props
10
+ ---
11
+
12
+ <Image
13
+ class:list={[
14
+ 'avatar',
15
+ {
16
+ [`size-${size}`]: size,
17
+ },
18
+ ]}
19
+ {...rest}
20
+ />
21
+
22
+ <style is:global>
23
+ @layer fulldev {
24
+ .avatar {
25
+ @apply !rounded-full object-cover;
26
+
27
+ &.size-sm {
28
+ @apply h-9 w-9;
29
+ }
30
+
31
+ &.size-md {
32
+ @apply h-10 w-10;
33
+ }
34
+
35
+ &.size-lg {
36
+ @apply h-11 w-11;
37
+ }
38
+ }
39
+ }
40
+ </style>
@@ -0,0 +1,20 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Avatar from 'fulldev-ui/components/Avatar.astro'
4
+
5
+ interface Props extends ComponentProps<typeof Avatar> {
6
+ avatar?: ComponentProps<typeof Avatar> | undefined
7
+ avatars?: ComponentProps<typeof Avatar>[] | undefined
8
+ }
9
+
10
+ const { avatar, avatars, ...rest } = Astro.props
11
+ ---
12
+
13
+ {
14
+ [avatar, ...(avatars || [])].filter(Boolean).map((avatar) => (
15
+ <Avatar
16
+ {...rest}
17
+ {...avatar}
18
+ />
19
+ ))
20
+ }
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  import type { HTMLAttributes } from 'astro/types'
3
3
  import Element from 'fulldev-ui/components/Element.astro'
4
- import Icon from 'fulldev-ui/components/Icon.astro'
5
4
 
6
5
  interface Props extends HTMLAttributes<'a'>, HTMLAttributes<'div'> {
7
6
  variant?: 'primary' | 'secondary' | 'outline' | undefined
@@ -20,53 +19,25 @@ const { variant = 'outline', size = 'md', text, icon, ...rest } = Astro.props
20
19
  {size}
21
20
  {...rest}
22
21
  >
23
- <Icon
24
- size="sm"
25
- name={icon}
26
- />
27
- <Element as="span">
28
- <Fragment set:html={text} />
29
- <slot />
30
- </Element>
22
+ <Fragment set:html={text} />
23
+ <slot />
31
24
  </Element>
32
25
 
33
26
  <style is:global>
34
27
  @layer fulldev {
35
28
  .badge {
36
- @apply inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-full text-sm font-medium leading-none ring-offset-background transition-colors;
37
- @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
38
- @apply disabled:pointer-events-none disabled:opacity-50;
39
-
40
- &.size-sm {
41
- @apply h-6 min-w-6 px-2;
42
- }
43
-
44
- &.size-md {
45
- @apply h-7 min-w-7 px-3;
46
- }
47
-
48
- &.size-lg {
49
- @apply h-8 min-w-8 px-3.5;
50
- }
29
+ @apply inline-flex h-6 items-center justify-center whitespace-nowrap rounded-full px-2.5 text-xs font-medium leading-none ring-offset-background;
51
30
 
52
31
  &.variant-primary {
53
- @apply bg-primary text-primary-foreground hover:bg-primary-hover;
32
+ @apply bg-primary text-primary-foreground;
54
33
  }
55
34
 
56
35
  &.variant-secondary {
57
- @apply bg-secondary text-secondary-foreground hover:bg-secondary-hover;
36
+ @apply bg-secondary text-secondary-foreground;
58
37
  }
59
38
 
60
39
  &.variant-outline {
61
- @apply border border-input text-accent-foreground hover:bg-accent;
62
- }
63
-
64
- .icon {
65
- @apply first:last:absolute;
66
- }
67
-
68
- span {
69
- @apply text-inherit;
40
+ @apply border border-input text-accent-foreground;
70
41
  }
71
42
  }
72
43
  }
@@ -1,12 +1,11 @@
1
1
  ---
2
2
  import { getEntries } from 'astro:content'
3
3
  import type { BlockSchema } from 'fulldev-ui/schemas/block'
4
+ import { getHref } from 'fulldev-ui/utils/getHref'
4
5
 
5
6
  interface Props extends BlockSchema {}
6
7
 
7
- let { _block, pages, ...rest } = Astro.props
8
-
9
- pages = pages && (await getEntries(pages))
8
+ let { _block, cards, pages, records, ...rest } = Astro.props
10
9
 
11
10
  const blocks = {
12
11
  ...import.meta.glob('/src/blocks/**/*.astro'),
@@ -18,13 +17,30 @@ const path = Object.keys(blocks).find(
18
17
  )
19
18
 
20
19
  const BlockComponent = path && (await (blocks[path] as any)()).default
20
+
21
+ cards = [
22
+ ...(cards || []),
23
+ ...(await getEntries(records || [])).map(({ data }) => ({
24
+ ...data,
25
+ })),
26
+ ...(await getEntries(pages || [])).map(({ slug, data }) => ({
27
+ href: getHref(slug),
28
+ heading: data.title,
29
+ paragraph: data.description,
30
+ ...data,
31
+ })),
32
+ ]
21
33
  ---
22
34
 
23
35
  {
24
36
  BlockComponent && (
25
37
  <BlockComponent
38
+ {cards}
26
39
  {pages}
40
+ {records}
27
41
  {...rest}
28
- />
42
+ >
43
+ <slot />
44
+ </BlockComponent>
29
45
  )
30
46
  }
@@ -3,6 +3,7 @@ import type { 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 Heading from 'fulldev-ui/components/Heading.astro'
6
+ import type { ComponentProps } from 'svelte'
6
7
 
7
8
  interface Props extends HTMLAttributes<'div'> {
8
9
  variant?: 'secondary' | 'outline' | undefined
@@ -11,6 +12,7 @@ interface Props extends HTMLAttributes<'div'> {
11
12
  text?: string | undefined
12
13
  href?: string | undefined
13
14
  icon?: string | undefined
15
+ target?: ComponentProps<typeof Button>['target']
14
16
  }
15
17
 
16
18
  const {
@@ -20,6 +22,7 @@ const {
20
22
  icon,
21
23
  heading,
22
24
  text,
25
+ target,
23
26
  ...rest
24
27
  } = Astro.props
25
28
  ---
@@ -34,6 +37,7 @@ const {
34
37
  {size}
35
38
  {href}
36
39
  {icon}
40
+ {target}
37
41
  />
38
42
  <Element class:list="channel-content">
39
43
  <Heading