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.
- package/astro.config.ts +6 -8
- package/cloudcannon.config.yml +57 -86
- package/package.json +2 -1
- package/public/images/block-code.png +0 -0
- package/public/images/component-code.png +0 -0
- package/src/blocks/Banner.astro +3 -5
- package/src/blocks/Colleagues1.astro +4 -3
- package/src/blocks/Contact1.astro +42 -42
- package/src/blocks/Contact2.astro +98 -0
- package/src/blocks/Content1.astro +6 -27
- package/src/blocks/Content2.astro +26 -49
- package/src/blocks/Content3.astro +26 -54
- package/src/blocks/Content4.astro +34 -50
- package/src/blocks/Content5.astro +7 -36
- package/src/blocks/Content6.astro +57 -0
- package/src/blocks/Content7.astro +65 -0
- package/src/blocks/Content8.astro +48 -0
- package/src/blocks/Cta1.astro +9 -12
- package/src/blocks/Cta2.astro +52 -0
- package/src/blocks/Features1.astro +8 -6
- package/src/blocks/Features2.astro +71 -0
- package/src/blocks/Footer.astro +2 -6
- package/src/blocks/Header.astro +9 -25
- package/src/blocks/Hero1.astro +19 -27
- package/src/blocks/Intro1.astro +6 -7
- package/src/blocks/{Industries1.astro → JobCategories1.astro} +13 -38
- package/src/blocks/JobCategory1.astro +92 -0
- package/src/blocks/Jobs1.astro +7 -10
- package/src/blocks/Logos1.astro +4 -4
- package/src/blocks/Pages1.astro +85 -0
- package/src/blocks/Pricings1.astro +61 -0
- package/src/blocks/Products1.astro +7 -10
- package/src/blocks/Projects1.astro +59 -83
- package/src/blocks/Reviews1.astro +10 -10
- package/src/blocks/Subheader.astro +4 -9
- package/src/components/Avatar.astro +40 -0
- package/src/components/Avatars.astro +20 -0
- package/src/components/Badge.astro +6 -35
- package/src/components/Block.astro +20 -4
- package/src/components/Channel.astro +4 -0
- package/src/components/Chip.astro +73 -0
- package/src/components/Element.astro +1 -0
- package/src/components/Field.astro +33 -0
- package/src/components/Fields.astro +20 -0
- package/src/components/Heading.astro +12 -5
- package/src/components/Image.astro +1 -1
- package/src/components/Link.astro +1 -1
- package/src/components/Menu.astro +9 -5
- package/src/components/Proof.astro +52 -0
- package/src/components/Select.astro +1 -1
- package/src/components/Tagline.astro +6 -6
- package/src/components/Toc.astro +33 -31
- package/src/content/config.ts +5 -0
- package/src/content/layouts/base.yml +135 -142
- package/src/content/pages/{base → _base}/toggle.mdx +1 -1
- package/src/content/pages/_showcase/stark-vulcanising-products.md +0 -1
- package/src/content/pages/docs/blocks/_categories.mdx +1 -17
- package/src/content/pages/docs/blocks/banner.mdx +1 -1
- package/src/content/pages/docs/blocks/colleagues.mdx +1 -1
- package/src/content/pages/docs/blocks/content.mdx +162 -1
- package/src/content/pages/docs/blocks/cta.mdx +1 -1
- package/src/content/pages/docs/blocks/features.mdx +66 -1
- package/src/content/pages/docs/blocks/footer.mdx +1 -1
- package/src/content/pages/docs/blocks/header.mdx +1 -1
- package/src/content/pages/docs/blocks/hero.mdx +1 -1
- package/src/content/pages/docs/blocks/intro.mdx +1 -1
- package/src/content/pages/docs/blocks/logos.mdx +1 -1
- package/src/content/pages/docs/blocks/projects.mdx +1 -1
- package/src/content/pages/docs/blocks/reviews.mdx +1 -1
- package/src/content/pages/docs/blocks.mdx +1 -7
- package/src/content/pages/docs/collections/images.mdx +1 -1
- package/src/content/pages/docs/collections/pages.mdx +1 -1
- package/src/content/pages/docs/collections/presets.mdx +1 -1
- package/src/content/pages/docs/components/_localeswitcher.mdx +1 -1
- package/src/content/pages/docs/components/_table.mdx +1 -1
- package/src/content/pages/docs/components/_tagline.mdx +1 -1
- package/src/content/pages/docs/components/_themer.mdx +1 -1
- package/src/content/pages/docs/components/_toggle.mdx +1 -1
- package/src/content/pages/docs/components/avatar.mdx +32 -0
- package/src/content/pages/docs/components/badge.mdx +1 -34
- package/src/content/pages/docs/components/badges.mdx +1 -13
- package/src/content/pages/docs/components/button.mdx +1 -1
- package/src/content/pages/docs/components/buttons.mdx +1 -1
- package/src/content/pages/docs/components/channel.mdx +1 -1
- package/src/content/pages/docs/components/channels.mdx +1 -1
- package/src/content/pages/docs/components/checkbox.mdx +1 -1
- package/src/content/pages/docs/components/chip.mdx +75 -0
- package/src/content/pages/docs/components/heading.mdx +1 -1
- package/src/content/pages/docs/components/icon.mdx +1 -1
- package/src/content/pages/docs/components/image.mdx +2 -1
- package/src/content/pages/docs/components/input.mdx +1 -1
- package/src/content/pages/docs/components/label.mdx +1 -1
- package/src/content/pages/docs/components/link.mdx +1 -1
- package/src/content/pages/docs/components/links.mdx +11 -52
- package/src/content/pages/docs/components/list.mdx +1 -1
- package/src/content/pages/docs/components/logo.mdx +1 -1
- package/src/content/pages/docs/components/menu.mdx +5 -18
- package/src/content/pages/docs/components/paragraph.mdx +1 -1
- package/src/content/pages/docs/components/rating.mdx +1 -1
- package/src/content/pages/docs/components/select.mdx +1 -1
- package/src/content/pages/docs/components/social.mdx +1 -1
- package/src/content/pages/docs/components/socials.mdx +1 -1
- package/src/content/pages/docs/components/switch.mdx +1 -1
- package/src/content/pages/docs/components/tagline.mdx +1 -1
- package/src/content/pages/docs/components/textarea.mdx +1 -1
- package/src/content/pages/docs/components.mdx +1 -1
- package/src/content/pages/docs/customization.mdx +1 -1
- package/src/content/pages/docs/frameworks.mdx +1 -1
- package/src/content/pages/docs/index.mdx +1 -1
- package/src/content/pages/docs/installation.mdx +1 -24
- package/src/content/pages/docs/layouts/doc.mdx +1 -1
- package/src/content/pages/docs/layouts/page.mdx +1 -1
- package/src/content/pages/docs/pages.mdx +1 -1
- package/src/content/pages/docs/structures/_card.mdx +1 -1
- package/src/content/pages/docs/structures/_dialog.mdx +1 -1
- package/src/content/pages/docs/structures/_drawer.mdx +1 -1
- package/src/content/pages/docs/structures/card.mdx +1 -1
- package/src/content/pages/docs/structures/code.mdx +1 -1
- package/src/content/pages/docs/structures/container.mdx +1 -1
- package/src/content/pages/docs/structures/drawer.mdx +1 -1
- package/src/content/pages/docs/structures/group.mdx +1 -1
- package/src/content/pages/docs/structures/layout.mdx +1 -1
- package/src/content/pages/docs/structures/masonry.mdx +1 -1
- package/src/content/pages/docs/structures/matrix.mdx +1 -1
- package/src/content/pages/docs/structures/panel.mdx +1 -1
- package/src/content/pages/docs/structures/prose.mdx +1 -1
- package/src/content/pages/docs/structures/section.mdx +1 -1
- package/src/content/pages/docs/structures/stack.mdx +1 -1
- package/src/content/pages/docs/structures/writeup.mdx +1 -1
- package/src/content/pages/docs/structures.mdx +1 -1
- package/src/content/pages/index.mdx +20 -25
- package/src/css/custom.css +4 -0
- package/src/integration/index.ts +1 -0
- package/src/layouts/Page.astro +45 -10
- package/src/layouts/{Product.astro → _Product.astro} +6 -6
- package/src/pages/test.astro +16 -0
- package/src/schemas/block.ts +22 -41
- package/src/schemas/button.ts +2 -0
- package/src/schemas/card.ts +43 -0
- package/src/schemas/channel.ts +1 -0
- package/src/schemas/{badge.ts → chip.ts} +3 -3
- package/src/schemas/page.ts +4 -18
- package/src/schemas/proof.ts +12 -0
- package/src/structures/Drawer.astro +2 -3
- package/src/structures/Prose.astro +40 -41
- package/src/structures/Section.astro +1 -1
- package/src/structures/Sidebar.astro +3 -4
- package/src/structures/Split.astro +38 -0
- package/tailwind.config.ts +4 -1
- package/pnpm-lock.yaml +0 -5186
- package/src/blocks/_Hero.astro +0 -245
- package/src/components/Blocks.astro +0 -26
- package/src/components/Sidebar.astro +0 -43
- package/src/content/pages/docs/blocks/feature.mdx +0 -17
- package/src/content/pages/docs/layouts.mdx +0 -80
- package/src/layouts/Block.astro +0 -81
- package/src/layouts/Category.astro +0 -136
- package/src/layouts/Doc.astro +0 -96
- package/src/layouts/Job.astro +0 -60
- package/src/layouts/Jobs.astro +0 -72
- package/src/layouts/Post.astro +0 -53
- /package/src/content/pages/{posts → _posts}/post.md +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { HTMLAttributes } from 'astro/types'
|
|
3
|
+
import Element from 'fulldev-ui/components/Element.astro'
|
|
4
|
+
import Icon from 'fulldev-ui/components/Icon.astro'
|
|
5
|
+
|
|
6
|
+
interface Props extends HTMLAttributes<'a'>, HTMLAttributes<'div'> {
|
|
7
|
+
variant?: 'primary' | 'secondary' | 'outline' | undefined
|
|
8
|
+
size?: 'sm' | 'md' | 'lg' | undefined
|
|
9
|
+
text?: string | undefined
|
|
10
|
+
icon?: string | undefined
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const { variant = 'outline', size = 'md', text, icon, ...rest } = Astro.props
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<Element
|
|
17
|
+
class:list="chip"
|
|
18
|
+
as={rest.href ? 'a' : 'div'}
|
|
19
|
+
{variant}
|
|
20
|
+
{size}
|
|
21
|
+
{...rest}
|
|
22
|
+
>
|
|
23
|
+
<Icon
|
|
24
|
+
size="sm"
|
|
25
|
+
name={icon}
|
|
26
|
+
/>
|
|
27
|
+
<Element as="span">
|
|
28
|
+
<Fragment set:html={text} />
|
|
29
|
+
<slot />
|
|
30
|
+
</Element>
|
|
31
|
+
</Element>
|
|
32
|
+
|
|
33
|
+
<style is:global>
|
|
34
|
+
@layer fulldev {
|
|
35
|
+
.chip {
|
|
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
|
+
}
|
|
51
|
+
|
|
52
|
+
&.variant-primary {
|
|
53
|
+
@apply bg-primary text-primary-foreground hover:bg-primary-hover;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&.variant-secondary {
|
|
57
|
+
@apply bg-secondary text-secondary-foreground hover:bg-secondary-hover;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&.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;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
</style>
|
|
@@ -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
|
+
}
|
|
@@ -5,8 +5,8 @@ import Element from 'fulldev-ui/components/Element.astro'
|
|
|
5
5
|
interface Props
|
|
6
6
|
extends HTMLAttributes<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'> {
|
|
7
7
|
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | undefined
|
|
8
|
+
depth?: 1 | 2 | 3 | 4 | 5 | 6 | number | undefined
|
|
8
9
|
text?: string | undefined
|
|
9
|
-
muted?: boolean | undefined
|
|
10
10
|
size?:
|
|
11
11
|
| 'xs'
|
|
12
12
|
| 'sm'
|
|
@@ -21,7 +21,7 @@ interface Props
|
|
|
21
21
|
| undefined
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const {
|
|
24
|
+
const { depth = 2, as = `h${depth}`, text, ...rest } = Astro.props
|
|
25
25
|
---
|
|
26
26
|
|
|
27
27
|
<Element
|
|
@@ -34,11 +34,12 @@ const { as = 'h2', text, ...rest } = Astro.props
|
|
|
34
34
|
</Element>
|
|
35
35
|
|
|
36
36
|
<style is:global>
|
|
37
|
-
.heading
|
|
37
|
+
.heading,
|
|
38
|
+
.prose > :is(h1, h2, h3, h4, h5, h6) {
|
|
38
39
|
@apply scroll-mt-20 font-bold tracking-tight text-foreground;
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
@apply
|
|
41
|
+
code {
|
|
42
|
+
@apply rounded-sm bg-muted px-1 py-0.5 font-mono;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
&.size-xs {
|
|
@@ -49,22 +50,27 @@ const { as = 'h2', text, ...rest } = Astro.props
|
|
|
49
50
|
@apply text-sm;
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
&:where(.prose > h6),
|
|
52
54
|
&.size-md {
|
|
53
55
|
@apply text-base;
|
|
54
56
|
}
|
|
55
57
|
|
|
58
|
+
&:where(.prose > h5),
|
|
56
59
|
&.size-lg {
|
|
57
60
|
@apply text-lg;
|
|
58
61
|
}
|
|
59
62
|
|
|
63
|
+
&:where(.prose > h4),
|
|
60
64
|
&.size-xl {
|
|
61
65
|
@apply text-xl;
|
|
62
66
|
}
|
|
63
67
|
|
|
68
|
+
&:where(.prose > h3),
|
|
64
69
|
&.size-2xl {
|
|
65
70
|
@apply text-2xl;
|
|
66
71
|
}
|
|
67
72
|
|
|
73
|
+
&:where(.prose > h2),
|
|
68
74
|
&.size-3xl {
|
|
69
75
|
@apply text-3xl;
|
|
70
76
|
}
|
|
@@ -73,6 +79,7 @@ const { as = 'h2', text, ...rest } = Astro.props
|
|
|
73
79
|
@apply text-4xl;
|
|
74
80
|
}
|
|
75
81
|
|
|
82
|
+
&:where(.prose > h1),
|
|
76
83
|
&.size-5xl {
|
|
77
84
|
@apply text-4xl lg:text-5xl;
|
|
78
85
|
}
|
|
@@ -30,7 +30,7 @@ const { variant = 'muted', size = 'md', text, icon, ...rest } = Astro.props
|
|
|
30
30
|
@layer fulldev {
|
|
31
31
|
.link,
|
|
32
32
|
.prose-content > *:not(.prose-footer) > a {
|
|
33
|
-
@apply ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
|
|
33
|
+
@apply cursor-pointer ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
|
|
34
34
|
|
|
35
35
|
&.variant-primary,
|
|
36
36
|
&:is(.prose-content > *:not(.prose-footer) > a) {
|
|
@@ -19,11 +19,15 @@ const { size = 'md', heading, links, ...rest } = Astro.props
|
|
|
19
19
|
class:list="menu"
|
|
20
20
|
{...rest}
|
|
21
21
|
>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
{
|
|
23
|
+
links && links.length > 0 && (
|
|
24
|
+
<Heading
|
|
25
|
+
text={heading}
|
|
26
|
+
as="h6"
|
|
27
|
+
{size}
|
|
28
|
+
/>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
27
31
|
<Links
|
|
28
32
|
{size}
|
|
29
33
|
{links}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
import type { ComponentProps, HTMLAttributes } from 'astro/types'
|
|
3
|
+
import Avatars from 'fulldev-ui/components/Avatars.astro'
|
|
4
|
+
import Element from 'fulldev-ui/components/Element.astro'
|
|
5
|
+
import Label from 'fulldev-ui/components/Label.astro'
|
|
6
|
+
import Rating from 'fulldev-ui/components/Rating.astro'
|
|
7
|
+
|
|
8
|
+
interface Props extends HTMLAttributes<'div'> {
|
|
9
|
+
avatar?: ComponentProps<typeof Avatars>['avatar']
|
|
10
|
+
avatars?: ComponentProps<typeof Avatars>['avatars']
|
|
11
|
+
rating?: number | undefined
|
|
12
|
+
text?: string | undefined
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const { avatar, avatars, rating, text, ...rest } = Astro.props
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
<Element
|
|
19
|
+
class:list="proof"
|
|
20
|
+
{...rest}
|
|
21
|
+
>
|
|
22
|
+
<Avatars
|
|
23
|
+
{avatar}
|
|
24
|
+
{avatars}
|
|
25
|
+
/>
|
|
26
|
+
<Element class="proof-segment">
|
|
27
|
+
<Rating
|
|
28
|
+
score={rating}
|
|
29
|
+
size="sm"
|
|
30
|
+
/>
|
|
31
|
+
<Label
|
|
32
|
+
size="md"
|
|
33
|
+
text={text}
|
|
34
|
+
/>
|
|
35
|
+
</Element>
|
|
36
|
+
</Element>
|
|
37
|
+
|
|
38
|
+
<style is:global>
|
|
39
|
+
@layer fulldev {
|
|
40
|
+
.proof {
|
|
41
|
+
@apply flex items-center;
|
|
42
|
+
|
|
43
|
+
> .avatar {
|
|
44
|
+
@apply -mr-5 last-of-type:mr-2;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.proof-segment {
|
|
48
|
+
@apply flex flex-col gap-1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
</style>
|
|
@@ -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
|
@@ -3,20 +3,17 @@ import type { MarkdownHeading } from 'astro'
|
|
|
3
3
|
import type { HTMLAttributes } from 'astro/types'
|
|
4
4
|
import Element from 'fulldev-ui/components/Element.astro'
|
|
5
5
|
import Heading from 'fulldev-ui/components/Heading.astro'
|
|
6
|
-
import
|
|
6
|
+
import Links from './Links.astro'
|
|
7
7
|
|
|
8
8
|
interface Props extends HTMLAttributes<'div'> {
|
|
9
|
-
|
|
9
|
+
size?: 'sm' | 'md' | 'lg' | undefined
|
|
10
10
|
heading?: string | undefined
|
|
11
|
+
headings?: MarkdownHeading[] | undefined
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
const {
|
|
14
|
-
|
|
15
|
-
const filteredHeadings = headings?.filter(
|
|
16
|
-
(heading: any) => heading.depth >= 2 && heading.depth <= 4
|
|
17
|
-
)
|
|
14
|
+
const { size = 'md', heading, headings, ...rest } = Astro.props
|
|
18
15
|
|
|
19
|
-
const
|
|
16
|
+
const filteredHeadings = headings?.filter((heading: any) => heading.depth <= 4)
|
|
20
17
|
|
|
21
18
|
const links = filteredHeadings?.map((button: any) => ({
|
|
22
19
|
text: button.text,
|
|
@@ -27,34 +24,39 @@ const links = filteredHeadings?.map((button: any) => ({
|
|
|
27
24
|
|
|
28
25
|
<Element
|
|
29
26
|
class:list="toc"
|
|
30
|
-
show={filteredHeadings?.length}
|
|
31
27
|
{...rest}
|
|
32
28
|
>
|
|
33
|
-
<Heading text={h1?.text || heading} />
|
|
34
29
|
{
|
|
35
|
-
links?.
|
|
36
|
-
<
|
|
37
|
-
|
|
30
|
+
(links?.length || 0) > 0 && (
|
|
31
|
+
<Heading
|
|
32
|
+
as="h6"
|
|
33
|
+
text={heading}
|
|
38
34
|
size="sm"
|
|
39
|
-
{...link}
|
|
40
35
|
/>
|
|
41
|
-
)
|
|
36
|
+
)
|
|
42
37
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
38
|
+
<Links
|
|
39
|
+
{size}
|
|
40
|
+
{links}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
<style is:global>
|
|
44
|
+
@layer fulldev {
|
|
45
|
+
.toc {
|
|
46
|
+
@apply flex flex-col gap-2;
|
|
47
|
+
|
|
48
|
+
.link:first-child {
|
|
49
|
+
@apply font-bold text-foreground;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.link.depth-3 {
|
|
53
|
+
@apply pl-3;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.link.depth-4 {
|
|
57
|
+
@apply pl-6;
|
|
58
|
+
}
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
|
|
60
|
-
</
|
|
61
|
+
</style>
|
|
62
|
+
</Element>
|
package/src/content/config.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineCollection } from 'astro:content'
|
|
2
|
+
import { cardSchema } from 'fulldev-ui/schemas/card.ts'
|
|
2
3
|
import { pageSchema } from 'fulldev-ui/schemas/page.ts'
|
|
3
4
|
|
|
4
5
|
export const collections = {
|
|
@@ -10,4 +11,8 @@ export const collections = {
|
|
|
10
11
|
type: 'data',
|
|
11
12
|
schema: pageSchema,
|
|
12
13
|
}),
|
|
14
|
+
records: defineCollection({
|
|
15
|
+
type: 'data',
|
|
16
|
+
schema: cardSchema,
|
|
17
|
+
}),
|
|
13
18
|
}
|