fulldev-ui 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cloudcannon.config.yml +3 -0
- package/package.json +1 -1
- package/src/blocks/Compare1.astro +64 -0
- package/src/blocks/{_Contact1.astro → Contact1.astro} +41 -39
- package/src/blocks/Contact2.astro +98 -0
- package/src/blocks/Content1.astro +1 -0
- package/src/blocks/Content2.astro +1 -0
- package/src/blocks/Content3.astro +1 -0
- package/src/blocks/Content4.astro +9 -2
- package/src/blocks/Content5.astro +1 -0
- package/src/blocks/Content6.astro +2 -1
- package/src/blocks/Content7.astro +1 -0
- package/src/blocks/Content8.astro +1 -0
- package/src/blocks/Cta1.astro +3 -3
- package/src/blocks/Cta2.astro +1 -1
- package/src/blocks/Features1.astro +3 -2
- package/src/blocks/Features2.astro +3 -2
- package/src/blocks/Header.astro +1 -0
- package/src/blocks/Hero1.astro +2 -2
- package/src/blocks/Intro1.astro +3 -3
- package/src/blocks/JobCategory1.astro +5 -3
- package/src/blocks/Projects1.astro +10 -10
- package/src/components/Block.astro +2 -1
- package/src/components/Channel.astro +4 -0
- package/src/components/Field.astro +33 -0
- package/src/components/Fields.astro +20 -0
- package/src/components/Heading.astro +0 -1
- package/src/components/List.astro +37 -9
- package/src/components/Select.astro +1 -1
- package/src/components/Tagline.astro +6 -6
- package/src/components/Toc.astro +10 -6
- package/src/content/layouts/base.yml +3 -0
- package/src/content/pages/docs/components/list.mdx +11 -0
- package/src/content/pages/index.mdx +2 -2
- package/src/css/custom.css +4 -0
- package/src/integration/index.ts +1 -0
- package/src/layouts/Page.astro +1 -0
- package/src/schemas/block.ts +9 -0
- package/src/schemas/channel.ts +1 -0
- package/src/structures/Prose.astro +17 -9
package/cloudcannon.config.yml
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,64 @@
|
|
|
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, button, pros, cons } = 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
|
+
[cons || {}, pros || {}].map(
|
|
35
|
+
({ tagline, heading, paragraph, list }, i) => (
|
|
36
|
+
<Card
|
|
37
|
+
class:list={`min-w-sm flex max-w-md flex-col justify-between gap-8 p-8 ${i === 0 ? 'bg-transparent' : ''}`}
|
|
38
|
+
>
|
|
39
|
+
<Prose>
|
|
40
|
+
<Tagline text={tagline} />
|
|
41
|
+
<Heading
|
|
42
|
+
depth={(depth + 1) as 3}
|
|
43
|
+
size="3xl"
|
|
44
|
+
text={heading}
|
|
45
|
+
/>
|
|
46
|
+
<Paragraph
|
|
47
|
+
muted={i === 0}
|
|
48
|
+
text={paragraph}
|
|
49
|
+
/>
|
|
50
|
+
<List
|
|
51
|
+
icon={i === 0 ? 'x' : 'check'}
|
|
52
|
+
muted={i === 0}
|
|
53
|
+
size="sm"
|
|
54
|
+
items={list}
|
|
55
|
+
/>
|
|
56
|
+
</Prose>
|
|
57
|
+
</Card>
|
|
58
|
+
)
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
</Stack>
|
|
62
|
+
<Button {...button} />
|
|
63
|
+
</Container>
|
|
64
|
+
</Section>
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import Element from 'fulldev-ui/components/Element.astro'
|
|
2
|
+
import Button from 'fulldev-ui/components/Button.astro'
|
|
3
|
+
import Channels from 'fulldev-ui/components/Channels.astro'
|
|
4
|
+
import Fields from 'fulldev-ui/components/Fields.astro'
|
|
6
5
|
import Form from 'fulldev-ui/components/Form.astro'
|
|
7
6
|
import Heading from 'fulldev-ui/components/Heading.astro'
|
|
8
7
|
import Image from 'fulldev-ui/components/Image.astro'
|
|
9
8
|
import Paragraph from 'fulldev-ui/components/Paragraph.astro'
|
|
10
|
-
import
|
|
9
|
+
import Socials from 'fulldev-ui/components/Socials.astro'
|
|
11
10
|
import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
12
11
|
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
12
|
+
import Container from 'fulldev-ui/structures/Container.astro'
|
|
13
|
+
import Group from 'fulldev-ui/structures/Group.astro'
|
|
14
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
13
15
|
import Section from 'fulldev-ui/structures/Section.astro'
|
|
14
16
|
|
|
15
17
|
interface Props extends BlockSchema {}
|
|
16
18
|
|
|
17
19
|
const {
|
|
18
|
-
|
|
19
|
-
badges,
|
|
20
|
+
depth = 2,
|
|
20
21
|
tagline,
|
|
21
22
|
heading,
|
|
22
|
-
text,
|
|
23
23
|
paragraph,
|
|
24
|
-
|
|
24
|
+
content,
|
|
25
|
+
channels,
|
|
25
26
|
socials,
|
|
26
27
|
form,
|
|
27
28
|
image,
|
|
28
|
-
channels,
|
|
29
29
|
...rest
|
|
30
30
|
} = Astro.props
|
|
31
31
|
---
|
|
@@ -34,38 +34,40 @@ const {
|
|
|
34
34
|
class:list="contact-1"
|
|
35
35
|
{...rest}
|
|
36
36
|
>
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
</
|
|
58
|
-
<Element class:list="contact-1-socials">
|
|
59
|
-
{socials?.map((social) => <Social href={social} />)}
|
|
60
|
-
</Element>
|
|
37
|
+
<Container>
|
|
38
|
+
<Prose
|
|
39
|
+
align="middle"
|
|
40
|
+
class="max-w-xl"
|
|
41
|
+
>
|
|
42
|
+
<Tagline text={tagline} />
|
|
43
|
+
<Heading
|
|
44
|
+
size="4xl"
|
|
45
|
+
text={heading}
|
|
46
|
+
{depth}
|
|
47
|
+
/>
|
|
48
|
+
<Paragraph
|
|
49
|
+
muted
|
|
50
|
+
size="lg"
|
|
51
|
+
text={paragraph}
|
|
52
|
+
/>
|
|
53
|
+
<Fragment set:html={content} />
|
|
54
|
+
<Channels {channels} />
|
|
55
|
+
<Group>
|
|
56
|
+
<Socials {socials} />
|
|
57
|
+
</Group>
|
|
61
58
|
<Form
|
|
62
59
|
action="/thank-you"
|
|
63
60
|
method="POST"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
>
|
|
62
|
+
<Fields fields={form?.fields} />
|
|
63
|
+
<Button
|
|
64
|
+
type="submit"
|
|
65
|
+
text={form?.submit}
|
|
66
|
+
/>
|
|
67
|
+
</Form>
|
|
68
|
+
<Image {...image} />
|
|
69
|
+
</Prose>
|
|
70
|
+
</Container>
|
|
69
71
|
</Section>
|
|
70
72
|
|
|
71
73
|
<style is:global>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
import Button from 'fulldev-ui/components/Button.astro'
|
|
3
|
+
import Channels from 'fulldev-ui/components/Channels.astro'
|
|
4
|
+
import Fields from 'fulldev-ui/components/Fields.astro'
|
|
5
|
+
import Form from 'fulldev-ui/components/Form.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 Socials from 'fulldev-ui/components/Socials.astro'
|
|
10
|
+
import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
11
|
+
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
12
|
+
import Container from 'fulldev-ui/structures/Container.astro'
|
|
13
|
+
import Group from 'fulldev-ui/structures/Group.astro'
|
|
14
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
15
|
+
import Section from 'fulldev-ui/structures/Section.astro'
|
|
16
|
+
import Split from 'fulldev-ui/structures/Split.astro'
|
|
17
|
+
|
|
18
|
+
interface Props extends BlockSchema {}
|
|
19
|
+
|
|
20
|
+
const {
|
|
21
|
+
depth = 2,
|
|
22
|
+
tagline,
|
|
23
|
+
heading,
|
|
24
|
+
paragraph,
|
|
25
|
+
content,
|
|
26
|
+
channels,
|
|
27
|
+
socials,
|
|
28
|
+
form,
|
|
29
|
+
image,
|
|
30
|
+
...rest
|
|
31
|
+
} = Astro.props
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<Section
|
|
35
|
+
class:list="contact-2"
|
|
36
|
+
{...rest}
|
|
37
|
+
>
|
|
38
|
+
<Container>
|
|
39
|
+
<Split>
|
|
40
|
+
<Prose
|
|
41
|
+
align="middle"
|
|
42
|
+
class="max-w-xl"
|
|
43
|
+
>
|
|
44
|
+
<Tagline text={tagline} />
|
|
45
|
+
<Heading
|
|
46
|
+
size="4xl"
|
|
47
|
+
text={heading}
|
|
48
|
+
{depth}
|
|
49
|
+
/>
|
|
50
|
+
<Paragraph
|
|
51
|
+
muted
|
|
52
|
+
size="lg"
|
|
53
|
+
text={paragraph}
|
|
54
|
+
/>
|
|
55
|
+
<Fragment set:html={content} />
|
|
56
|
+
<Channels {channels} />
|
|
57
|
+
<Group>
|
|
58
|
+
<Socials {socials} />
|
|
59
|
+
</Group>
|
|
60
|
+
<Form
|
|
61
|
+
action="/thank-you"
|
|
62
|
+
method="POST"
|
|
63
|
+
>
|
|
64
|
+
<Fields fields={form?.fields} />
|
|
65
|
+
<Button
|
|
66
|
+
type="submit"
|
|
67
|
+
text={form?.submit}
|
|
68
|
+
/>
|
|
69
|
+
</Form>
|
|
70
|
+
</Prose>
|
|
71
|
+
<Image {...image} />
|
|
72
|
+
</Split>
|
|
73
|
+
</Container>
|
|
74
|
+
</Section>
|
|
75
|
+
|
|
76
|
+
<style is:global>
|
|
77
|
+
@layer fulldev {
|
|
78
|
+
.contact-2 {
|
|
79
|
+
@apply relative w-full;
|
|
80
|
+
|
|
81
|
+
.container {
|
|
82
|
+
@apply flex flex-col gap-16;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.contact-2-segment {
|
|
86
|
+
@apply flex flex-col items-start gap-8;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.contact-2-content {
|
|
90
|
+
@apply flex max-w-screen-md flex-col gap-4;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.image {
|
|
94
|
+
@apply rounded-md;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
</style>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import Buttons from 'fulldev-ui/components/Buttons.astro'
|
|
3
3
|
import Heading from 'fulldev-ui/components/Heading.astro'
|
|
4
4
|
import Image from 'fulldev-ui/components/Image.astro'
|
|
5
|
+
import List from 'fulldev-ui/components/List.astro'
|
|
5
6
|
import Paragraph from 'fulldev-ui/components/Paragraph.astro'
|
|
6
7
|
import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
7
8
|
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
@@ -13,16 +14,17 @@ import Split from 'fulldev-ui/structures/Split.astro'
|
|
|
13
14
|
|
|
14
15
|
interface Props extends BlockSchema {}
|
|
15
16
|
|
|
16
|
-
const { depth, tagline, heading, paragraph, buttons, image, content } =
|
|
17
|
+
const { depth, tagline, heading, paragraph, buttons, image, content, list } =
|
|
17
18
|
Astro.props
|
|
18
19
|
---
|
|
19
20
|
|
|
20
21
|
<Section class="content-4">
|
|
21
22
|
<Container>
|
|
22
23
|
<Split align="sticky">
|
|
23
|
-
<Prose>
|
|
24
|
+
<Prose class="lg:max-w-xl">
|
|
24
25
|
<Tagline text={tagline} />
|
|
25
26
|
<Heading
|
|
27
|
+
size="4xl"
|
|
26
28
|
text={heading}
|
|
27
29
|
{depth}
|
|
28
30
|
/>
|
|
@@ -31,6 +33,7 @@ const { depth, tagline, heading, paragraph, buttons, image, content } =
|
|
|
31
33
|
size="lg"
|
|
32
34
|
text={paragraph}
|
|
33
35
|
/>
|
|
36
|
+
<List items={list} />
|
|
34
37
|
<Group>
|
|
35
38
|
<Buttons {buttons} />
|
|
36
39
|
</Group>
|
|
@@ -39,6 +42,10 @@ const { depth, tagline, heading, paragraph, buttons, image, content } =
|
|
|
39
42
|
<Image {...image} />
|
|
40
43
|
<Fragment set:html={content} />
|
|
41
44
|
<slot />
|
|
45
|
+
<Buttons
|
|
46
|
+
class="lg:hidden"
|
|
47
|
+
{buttons}
|
|
48
|
+
/>
|
|
42
49
|
</Prose>
|
|
43
50
|
</Split>
|
|
44
51
|
</Container>
|
|
@@ -30,13 +30,14 @@ const {
|
|
|
30
30
|
<Prose class="mx-auto py-8">
|
|
31
31
|
<Tagline text={tagline} />
|
|
32
32
|
<Heading
|
|
33
|
+
size="5xl"
|
|
33
34
|
text={heading}
|
|
34
35
|
{depth}
|
|
35
36
|
/>
|
|
36
37
|
<Paragraph
|
|
37
|
-
muted
|
|
38
38
|
size="lg"
|
|
39
39
|
text={paragraph}
|
|
40
|
+
muted
|
|
40
41
|
/>
|
|
41
42
|
<Image {...image} />
|
|
42
43
|
<Fragment set:html={content} />
|
package/src/blocks/Cta1.astro
CHANGED
|
@@ -8,8 +8,8 @@ import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
|
8
8
|
import Container from 'fulldev-ui/structures/Container.astro'
|
|
9
9
|
import Group from 'fulldev-ui/structures/Group.astro'
|
|
10
10
|
import Panel from 'fulldev-ui/structures/Panel.astro'
|
|
11
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
11
12
|
import Section from 'fulldev-ui/structures/Section.astro'
|
|
12
|
-
import Writeup from 'fulldev-ui/structures/Writeup.astro'
|
|
13
13
|
|
|
14
14
|
interface Props extends BlockSchema {}
|
|
15
15
|
|
|
@@ -28,7 +28,7 @@ const {
|
|
|
28
28
|
<Section class:list="cta-1">
|
|
29
29
|
<Container>
|
|
30
30
|
<Panel>
|
|
31
|
-
<
|
|
31
|
+
<Prose align="center">
|
|
32
32
|
<Tagline text={tagline} />
|
|
33
33
|
<Heading
|
|
34
34
|
size="5xl"
|
|
@@ -49,7 +49,7 @@ const {
|
|
|
49
49
|
{buttons}
|
|
50
50
|
/>
|
|
51
51
|
</Group>
|
|
52
|
-
</
|
|
52
|
+
</Prose>
|
|
53
53
|
<Image {...image} />
|
|
54
54
|
</Panel>
|
|
55
55
|
</Container>
|
package/src/blocks/Cta2.astro
CHANGED
|
@@ -24,7 +24,7 @@ const { depth, tagline, heading, paragraph, buttons, image, content, ...rest } =
|
|
|
24
24
|
>
|
|
25
25
|
<Container>
|
|
26
26
|
<Panel class="p-0">
|
|
27
|
-
<Split
|
|
27
|
+
<Split align="center">
|
|
28
28
|
<Prose class="px-4 sm:px-8 lg:px-16">
|
|
29
29
|
<Tagline text={tagline} />
|
|
30
30
|
<Heading
|
|
@@ -5,6 +5,7 @@ import Paragraph from 'fulldev-ui/components/Paragraph.astro'
|
|
|
5
5
|
import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
6
6
|
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
7
7
|
import Container from 'fulldev-ui/structures/Container.astro'
|
|
8
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
8
9
|
import Section from 'fulldev-ui/structures/Section.astro'
|
|
9
10
|
import Stack from 'fulldev-ui/structures/Stack.astro'
|
|
10
11
|
import Writeup from 'fulldev-ui/structures/Writeup.astro'
|
|
@@ -19,7 +20,7 @@ const { depth = 2, tagline, heading, paragraph, cards, ...rest } = Astro.props
|
|
|
19
20
|
{...rest}
|
|
20
21
|
>
|
|
21
22
|
<Container>
|
|
22
|
-
<
|
|
23
|
+
<Prose>
|
|
23
24
|
<Tagline
|
|
24
25
|
size="sm"
|
|
25
26
|
text={tagline}
|
|
@@ -33,7 +34,7 @@ const { depth = 2, tagline, heading, paragraph, cards, ...rest } = Astro.props
|
|
|
33
34
|
size="lg"
|
|
34
35
|
text={paragraph}
|
|
35
36
|
/>
|
|
36
|
-
</
|
|
37
|
+
</Prose>
|
|
37
38
|
<Stack>
|
|
38
39
|
{
|
|
39
40
|
cards?.map(({ icon, heading, paragraph }) => (
|
|
@@ -6,6 +6,7 @@ import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
|
6
6
|
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
7
7
|
import Container from 'fulldev-ui/structures/Container.astro'
|
|
8
8
|
import Matrix from 'fulldev-ui/structures/Matrix.astro'
|
|
9
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
9
10
|
import Section from 'fulldev-ui/structures/Section.astro'
|
|
10
11
|
import Writeup from 'fulldev-ui/structures/Writeup.astro'
|
|
11
12
|
|
|
@@ -19,7 +20,7 @@ const { depth = 2, tagline, heading, paragraph, cards, ...rest } = Astro.props
|
|
|
19
20
|
{...rest}
|
|
20
21
|
>
|
|
21
22
|
<Container>
|
|
22
|
-
<
|
|
23
|
+
<Prose>
|
|
23
24
|
<Tagline
|
|
24
25
|
size="sm"
|
|
25
26
|
text={tagline}
|
|
@@ -33,7 +34,7 @@ const { depth = 2, tagline, heading, paragraph, cards, ...rest } = Astro.props
|
|
|
33
34
|
size="lg"
|
|
34
35
|
text={paragraph}
|
|
35
36
|
/>
|
|
36
|
-
</
|
|
37
|
+
</Prose>
|
|
37
38
|
<Matrix size="sm">
|
|
38
39
|
{
|
|
39
40
|
cards?.map(({ icon, heading, paragraph }) => (
|
package/src/blocks/Header.astro
CHANGED
package/src/blocks/Hero1.astro
CHANGED
|
@@ -33,7 +33,7 @@ const {
|
|
|
33
33
|
{...rest}
|
|
34
34
|
>
|
|
35
35
|
<Container class="flex flex-col items-center gap-16">
|
|
36
|
-
<Prose
|
|
36
|
+
<Prose align="center">
|
|
37
37
|
<Proof {...proof} />
|
|
38
38
|
<Chip
|
|
39
39
|
size="lg"
|
|
@@ -62,7 +62,7 @@ const {
|
|
|
62
62
|
</Group>
|
|
63
63
|
</Prose>
|
|
64
64
|
<Image
|
|
65
|
-
class="max-h-[700px] w-auto rounded-lg"
|
|
65
|
+
class="mx-auto max-h-[700px] w-auto rounded-lg"
|
|
66
66
|
{...image}
|
|
67
67
|
/>
|
|
68
68
|
</Container>
|
package/src/blocks/Intro1.astro
CHANGED
|
@@ -7,8 +7,8 @@ import Tagline from 'fulldev-ui/components/Tagline.astro'
|
|
|
7
7
|
import type { BlockSchema } from 'fulldev-ui/schemas/block'
|
|
8
8
|
import Container from 'fulldev-ui/structures/Container.astro'
|
|
9
9
|
import Group from 'fulldev-ui/structures/Group.astro'
|
|
10
|
+
import Prose from 'fulldev-ui/structures/Prose.astro'
|
|
10
11
|
import Section from 'fulldev-ui/structures/Section.astro'
|
|
11
|
-
import Writeup from 'fulldev-ui/structures/Writeup.astro'
|
|
12
12
|
|
|
13
13
|
interface Props extends BlockSchema {}
|
|
14
14
|
|
|
@@ -30,7 +30,7 @@ const {
|
|
|
30
30
|
{...rest}
|
|
31
31
|
>
|
|
32
32
|
<Container>
|
|
33
|
-
<
|
|
33
|
+
<Prose>
|
|
34
34
|
<Tagline
|
|
35
35
|
size="sm"
|
|
36
36
|
text={tagline}
|
|
@@ -49,7 +49,7 @@ const {
|
|
|
49
49
|
{buttons}
|
|
50
50
|
/>
|
|
51
51
|
</Group>
|
|
52
|
-
</
|
|
52
|
+
</Prose>
|
|
53
53
|
<Image {...image} />
|
|
54
54
|
</Container>
|
|
55
55
|
</Section>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { CollectionEntry } from 'astro:content'
|
|
3
|
-
import { getCollection } from 'astro:content'
|
|
3
|
+
import { getCollection, getEntries } from 'astro:content'
|
|
4
4
|
import Heading from 'fulldev-ui/components/Heading.astro'
|
|
5
5
|
import Image from 'fulldev-ui/components/Image.astro'
|
|
6
6
|
import List from 'fulldev-ui/components/List.astro'
|
|
@@ -28,6 +28,8 @@ const jobs = await getCollection('pages', (page) =>
|
|
|
28
28
|
category.slug == slug || pages?.some((p) => p.slug == category.slug)
|
|
29
29
|
)
|
|
30
30
|
)
|
|
31
|
+
|
|
32
|
+
const pageEntries = pages && (await getEntries(pages))
|
|
31
33
|
---
|
|
32
34
|
|
|
33
35
|
<Section
|
|
@@ -47,13 +49,13 @@ const jobs = await getCollection('pages', (page) =>
|
|
|
47
49
|
<Container class="flex flex-col gap-12">
|
|
48
50
|
<Matrix class="gap-2">
|
|
49
51
|
{
|
|
50
|
-
|
|
52
|
+
pageEntries?.map(({ slug, data: { title, image } }) => (
|
|
51
53
|
<Card
|
|
52
54
|
class="grid grid-cols-3 items-center bg-transparent p-0"
|
|
53
55
|
href={getHref(slug)}
|
|
54
56
|
>
|
|
55
57
|
<Image
|
|
56
|
-
class="h-
|
|
58
|
+
class="h-auto w-full rounded-sm object-cover"
|
|
57
59
|
{...image}
|
|
58
60
|
/>
|
|
59
61
|
<Heading
|
|
@@ -28,19 +28,15 @@ const {
|
|
|
28
28
|
|
|
29
29
|
<Section class="projects-1">
|
|
30
30
|
<Container>
|
|
31
|
-
<Split
|
|
32
|
-
<Prose class="
|
|
31
|
+
<Split align="sticky">
|
|
32
|
+
<Prose class="max-w-xl">
|
|
33
33
|
<Tagline text={tagline} />
|
|
34
34
|
<Heading
|
|
35
|
-
size="
|
|
35
|
+
size="3xl"
|
|
36
36
|
text={heading}
|
|
37
37
|
{depth}
|
|
38
38
|
/>
|
|
39
|
-
<Paragraph
|
|
40
|
-
muted
|
|
41
|
-
size="lg"
|
|
42
|
-
text={paragraph}
|
|
43
|
-
/>
|
|
39
|
+
<Paragraph text={paragraph} />
|
|
44
40
|
<Fragment set:html={content} />
|
|
45
41
|
<Group>
|
|
46
42
|
<Buttons
|
|
@@ -51,8 +47,12 @@ const {
|
|
|
51
47
|
</Prose>
|
|
52
48
|
<Element class="flex flex-col gap-8">
|
|
53
49
|
{
|
|
54
|
-
cards?.map(({ image, badges, heading, paragraph }) => (
|
|
55
|
-
<Element
|
|
50
|
+
cards?.map(({ href, image, badges, heading, paragraph }) => (
|
|
51
|
+
<Element
|
|
52
|
+
class="flex flex-col gap-2"
|
|
53
|
+
as="a"
|
|
54
|
+
{href}
|
|
55
|
+
>
|
|
56
56
|
<Image
|
|
57
57
|
class="mb-4"
|
|
58
58
|
{...image}
|
|
@@ -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
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
import Input from 'fulldev-ui/components/Input.astro'
|
|
3
|
+
import Select from 'fulldev-ui/components/Select.astro'
|
|
4
|
+
import Textarea from 'fulldev-ui/components/Textarea.astro'
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
label?: string | undefined
|
|
8
|
+
placeholder?: string | undefined
|
|
9
|
+
value?: string | undefined
|
|
10
|
+
required?: boolean | undefined
|
|
11
|
+
disabled?: boolean | undefined
|
|
12
|
+
type?: keyof typeof components | undefined
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const { type = 'text', ...rest } = Astro.props
|
|
16
|
+
|
|
17
|
+
const components = {
|
|
18
|
+
select: Select,
|
|
19
|
+
textarea: Textarea,
|
|
20
|
+
text: Input,
|
|
21
|
+
number: Input,
|
|
22
|
+
tel: Input,
|
|
23
|
+
email: Input,
|
|
24
|
+
password: Input,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const Component = components[type]
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<Component
|
|
31
|
+
class:list="field"
|
|
32
|
+
{...rest}
|
|
33
|
+
/>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { ComponentProps } from 'astro/types'
|
|
3
|
+
import Field from 'fulldev-ui/components/Field.astro'
|
|
4
|
+
|
|
5
|
+
interface Props extends ComponentProps<typeof Field> {
|
|
6
|
+
field?: ComponentProps<typeof Field> | undefined
|
|
7
|
+
fields?: ComponentProps<typeof Field>[] | undefined
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { field, fields, ...rest } = Astro.props
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
[field, ...(fields || [])].filter(Boolean).map((field) => (
|
|
15
|
+
<Field
|
|
16
|
+
{...rest}
|
|
17
|
+
{...field}
|
|
18
|
+
/>
|
|
19
|
+
))
|
|
20
|
+
}
|
|
@@ -1,28 +1,32 @@
|
|
|
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'
|
|
4
5
|
|
|
5
6
|
interface Props extends HTMLAttributes<'ul' | 'ol'> {
|
|
6
7
|
as?: 'ul' | 'ol' | undefined
|
|
7
8
|
size?: 'sm' | 'md' | 'lg' | undefined
|
|
8
9
|
items?: string[] | undefined
|
|
9
10
|
muted?: boolean | undefined
|
|
11
|
+
icon?: string | undefined
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
const { as = 'ul', items, ...rest } = Astro.props
|
|
14
|
+
const { as = 'ul', items, icon, ...rest } = Astro.props
|
|
13
15
|
---
|
|
14
16
|
|
|
15
17
|
<Element
|
|
16
|
-
class:list=
|
|
18
|
+
class:list={['list', icon ? 'has-icon' : undefined]}
|
|
17
19
|
{as}
|
|
18
20
|
{...rest}
|
|
19
21
|
>
|
|
20
22
|
{
|
|
21
23
|
items?.map((item) => (
|
|
22
|
-
<Element
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
<Element as="li">
|
|
25
|
+
<Icon name={icon} />
|
|
26
|
+
<span>
|
|
27
|
+
<Fragment set:html={item} />
|
|
28
|
+
</span>
|
|
29
|
+
</Element>
|
|
26
30
|
))
|
|
27
31
|
}
|
|
28
32
|
<slot />
|
|
@@ -32,14 +36,14 @@ const { as = 'ul', items, ...rest } = Astro.props
|
|
|
32
36
|
@layer fulldev {
|
|
33
37
|
.list,
|
|
34
38
|
.prose :is(ul, ol) {
|
|
35
|
-
@apply
|
|
39
|
+
@apply pl-4;
|
|
36
40
|
|
|
37
41
|
&:is(ul) {
|
|
38
42
|
@apply list-disc;
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
ul {
|
|
42
|
-
@apply ml-
|
|
46
|
+
@apply ml-5 mt-2 list-disc;
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
&:is(ol) {
|
|
@@ -47,7 +51,7 @@ const { as = 'ul', items, ...rest } = Astro.props
|
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
ol {
|
|
50
|
-
@apply ml-
|
|
54
|
+
@apply ml-5 mt-2 list-decimal;
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
li {
|
|
@@ -57,11 +61,35 @@ const { as = 'ul', items, ...rest } = Astro.props
|
|
|
57
61
|
&.size-sm,
|
|
58
62
|
&:where(.size-sm &) {
|
|
59
63
|
@apply text-sm;
|
|
64
|
+
|
|
65
|
+
.icon {
|
|
66
|
+
@apply mt-0;
|
|
67
|
+
}
|
|
60
68
|
}
|
|
61
69
|
|
|
62
70
|
&.size-lg,
|
|
63
71
|
&:where(.size-lg &) {
|
|
64
72
|
@apply text-lg;
|
|
73
|
+
|
|
74
|
+
.icon {
|
|
75
|
+
@apply mt-1;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&.muted {
|
|
80
|
+
@apply text-muted-foreground;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.icon {
|
|
84
|
+
@apply -ml-5 mt-0.5 shrink-0 text-inherit;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
&.has-icon {
|
|
88
|
+
@apply ml-0 list-none;
|
|
89
|
+
|
|
90
|
+
li {
|
|
91
|
+
@apply flex gap-2;
|
|
92
|
+
}
|
|
65
93
|
}
|
|
66
94
|
}
|
|
67
95
|
}
|
|
@@ -5,7 +5,7 @@ import Icon from 'fulldev-ui/components/Icon.astro'
|
|
|
5
5
|
import Label from 'fulldev-ui/components/Label.astro'
|
|
6
6
|
|
|
7
7
|
interface Props extends HTMLAttributes<'select'> {
|
|
8
|
-
|
|
8
|
+
size?: 'sm' | 'md' | 'lg' | undefined
|
|
9
9
|
label?: string | undefined
|
|
10
10
|
placeholder?: string | undefined
|
|
11
11
|
options?: string[] | undefined
|
|
@@ -23,26 +23,26 @@ const { text, ...rest } = Astro.props
|
|
|
23
23
|
<style is:global>
|
|
24
24
|
@layer fulldev {
|
|
25
25
|
.tagline {
|
|
26
|
-
@apply font-
|
|
26
|
+
@apply font-medium text-primary;
|
|
27
27
|
|
|
28
28
|
&.size-xs {
|
|
29
|
-
@apply text-xs;
|
|
29
|
+
@apply text-xs leading-tight;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
&.size-sm {
|
|
33
|
-
@apply text-sm;
|
|
33
|
+
@apply text-sm leading-tight;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
&.size-md {
|
|
37
|
-
@apply text-base;
|
|
37
|
+
@apply text-base leading-tight;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
&.size-lg {
|
|
41
|
-
@apply text-lg;
|
|
41
|
+
@apply text-lg leading-tight;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
&.size-xl {
|
|
45
|
-
@apply text-xl;
|
|
45
|
+
@apply text-xl leading-tight;
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
package/src/components/Toc.astro
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { MarkdownHeading } from 'astro'
|
|
3
3
|
import type { HTMLAttributes } from 'astro/types'
|
|
4
4
|
import Element from 'fulldev-ui/components/Element.astro'
|
|
5
|
-
import
|
|
5
|
+
import Heading from 'fulldev-ui/components/Heading.astro'
|
|
6
6
|
import Links from './Links.astro'
|
|
7
7
|
|
|
8
8
|
interface Props extends HTMLAttributes<'div'> {
|
|
@@ -26,11 +26,15 @@ const links = filteredHeadings?.map((button: any) => ({
|
|
|
26
26
|
class:list="toc"
|
|
27
27
|
{...rest}
|
|
28
28
|
>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
{
|
|
30
|
+
(links?.length || 0) > 0 && (
|
|
31
|
+
<Heading
|
|
32
|
+
as="h6"
|
|
33
|
+
text={heading}
|
|
34
|
+
size="sm"
|
|
35
|
+
/>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
34
38
|
<Links
|
|
35
39
|
{size}
|
|
36
40
|
{links}
|
|
@@ -40,3 +40,14 @@ import List from 'fulldev-ui/components/List.astro'
|
|
|
40
40
|
<List size="md" items={['First', 'Second', 'Third']} />
|
|
41
41
|
<List size="lg" items={['First', 'Second', 'Third']} />
|
|
42
42
|
```
|
|
43
|
+
|
|
44
|
+
### `icon`
|
|
45
|
+
|
|
46
|
+
```astro live
|
|
47
|
+
---
|
|
48
|
+
import List from 'fulldev-ui/components/List.astro'
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
<List icon="check" items={['First', 'Second', 'Third']} />
|
|
52
|
+
<List icon="x" items={['First', 'Second', 'Third']} />
|
|
53
|
+
```
|
|
@@ -4,8 +4,8 @@ _block: Hero1
|
|
|
4
4
|
|
|
5
5
|
title: Fulldev UI - Astro component and block library, open-source
|
|
6
6
|
description: Make websites rapidly with pre-built components and blocks.
|
|
7
|
-
heading:
|
|
8
|
-
paragraph:
|
|
7
|
+
heading: The Astro UI library for building content sites
|
|
8
|
+
paragraph: Components and blocks to build content-driven websites.
|
|
9
9
|
buttons:
|
|
10
10
|
- text: Get Started
|
|
11
11
|
href: /docs/
|
package/src/css/custom.css
CHANGED
package/src/integration/index.ts
CHANGED
package/src/layouts/Page.astro
CHANGED
package/src/schemas/block.ts
CHANGED
|
@@ -11,12 +11,21 @@ export const blockSchema = cardSchema
|
|
|
11
11
|
search: z.boolean().optional(),
|
|
12
12
|
cart: z.boolean().optional(),
|
|
13
13
|
cards: cardSchema.array().optional(),
|
|
14
|
+
pros: cardSchema.optional(),
|
|
15
|
+
cons: cardSchema.optional(),
|
|
14
16
|
pages: pathSchema('pages').array().optional(),
|
|
15
17
|
records: pathSchema('records').array().optional(),
|
|
16
18
|
soldout: z.boolean().optional(),
|
|
17
19
|
variants: z.record(z.string(), z.string().array()).optional(),
|
|
18
20
|
categories: pathSchema('pages').array().optional(),
|
|
19
21
|
menus: menuSchema.array().optional(),
|
|
22
|
+
form: z
|
|
23
|
+
.object({
|
|
24
|
+
fields: z.array(z.any()).optional(),
|
|
25
|
+
submit: z.string().optional(),
|
|
26
|
+
})
|
|
27
|
+
.strict()
|
|
28
|
+
.optional(),
|
|
20
29
|
headings: z
|
|
21
30
|
.array(
|
|
22
31
|
z.object({
|
package/src/schemas/channel.ts
CHANGED
|
@@ -10,5 +10,6 @@ export const channelSchema = z
|
|
|
10
10
|
href: z.string().optional(),
|
|
11
11
|
size: z.enum(['sm', 'md', 'lg']).optional(),
|
|
12
12
|
variant: z.enum(['secondary', 'outline']).optional(),
|
|
13
|
+
target: z.enum(['_blank', '_self', '_parent', '_top']).optional(),
|
|
13
14
|
})
|
|
14
15
|
.strict() satisfies z.ZodType<ComponentProps<typeof Channel>>
|
|
@@ -27,10 +27,14 @@ const { ...rest } = Astro.props
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
&.align-center {
|
|
30
|
-
@apply mx-auto flex max-w-screen-md;
|
|
30
|
+
@apply mx-auto flex max-w-screen-md flex-col items-center;
|
|
31
31
|
|
|
32
|
-
>
|
|
32
|
+
> * {
|
|
33
33
|
@apply text-center;
|
|
34
|
+
|
|
35
|
+
> * {
|
|
36
|
+
@apply text-left;
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
|
|
@@ -39,16 +43,25 @@ const { ...rest } = Astro.props
|
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
> *,
|
|
42
|
-
.tagline +
|
|
46
|
+
.tagline + *,
|
|
47
|
+
.proof + *,
|
|
48
|
+
.channel + .channel {
|
|
43
49
|
@apply mt-4;
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
> .group,
|
|
47
53
|
> .button,
|
|
48
|
-
> .buttons
|
|
54
|
+
> .buttons,
|
|
55
|
+
> .channel {
|
|
49
56
|
@apply mt-8;
|
|
50
57
|
}
|
|
51
58
|
|
|
59
|
+
> .form,
|
|
60
|
+
> img,
|
|
61
|
+
> p > img {
|
|
62
|
+
@apply my-12;
|
|
63
|
+
}
|
|
64
|
+
|
|
52
65
|
> h2 {
|
|
53
66
|
@apply mt-10;
|
|
54
67
|
}
|
|
@@ -71,11 +84,6 @@ const { ...rest } = Astro.props
|
|
|
71
84
|
@apply rounded-md border border-destructive p-4 text-destructive;
|
|
72
85
|
}
|
|
73
86
|
|
|
74
|
-
> img,
|
|
75
|
-
> p > img {
|
|
76
|
-
@apply my-12 rounded-md;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
87
|
blockquote > p + p {
|
|
80
88
|
@apply !mt-1;
|
|
81
89
|
}
|