fulldev-ui 0.10.1 → 0.11.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/CHANGELOG.md +12 -0
- package/README.md +7 -1
- package/package.json +6 -4
- package/public/r/accordion.json +7 -1
- package/public/r/alert-dialog.json +7 -1
- package/public/r/alert.json +6 -0
- package/public/r/article-1.json +7 -1
- package/public/r/article-2.json +7 -1
- package/public/r/articles-1.json +7 -1
- package/public/r/articles-2.json +7 -1
- package/public/r/articles-3.json +7 -1
- package/public/r/articles-4.json +7 -1
- package/public/r/avatar.json +6 -0
- package/public/r/badge.json +6 -0
- package/public/r/banner-1.json +7 -1
- package/public/r/banner-2.json +7 -1
- package/public/r/banner.json +7 -1
- package/public/r/blocks-1.json +6 -1
- package/public/r/blocks.json +92 -0
- package/public/r/breadcrumb.json +6 -0
- package/public/r/button.json +6 -0
- package/public/r/card.json +6 -0
- package/public/r/carousel.json +6 -0
- package/public/r/checkbox.json +6 -0
- package/public/r/collapsible.json +7 -1
- package/public/r/combobox.json +6 -0
- package/public/r/command.json +6 -0
- package/public/r/components.json +14 -3
- package/public/r/contact-1.json +10 -2
- package/public/r/contact-2.json +10 -2
- package/public/r/contact-3.json +10 -2
- package/public/r/content-1.json +7 -1
- package/public/r/content-2.json +7 -1
- package/public/r/content-3.json +7 -1
- package/public/r/content-4.json +7 -1
- package/public/r/cta-1.json +7 -1
- package/public/r/cta-2.json +7 -1
- package/public/r/cta-3.json +7 -1
- package/public/r/cta-4.json +7 -1
- package/public/r/cta-5.json +7 -1
- package/public/r/cta-6.json +7 -1
- package/public/r/cta-7.json +7 -1
- package/public/r/cta-8.json +7 -1
- package/public/r/dialog.json +7 -1
- package/public/r/doc-1.json +7 -1
- package/public/r/dropdown-menu.json +7 -1
- package/public/r/empty.json +6 -0
- package/public/r/faqs-1.json +7 -1
- package/public/r/faqs-2.json +7 -1
- package/public/r/faqs-3.json +7 -1
- package/public/r/faqs-4.json +7 -1
- package/public/r/features-1.json +7 -1
- package/public/r/features-2.json +7 -1
- package/public/r/features-3.json +7 -1
- package/public/r/features-4.json +7 -1
- package/public/r/features-5.json +7 -1
- package/public/r/features-6.json +7 -1
- package/public/r/field.json +6 -0
- package/public/r/footer-1.json +7 -1
- package/public/r/footer-2.json +7 -1
- package/public/r/footer-3.json +7 -1
- package/public/r/form.json +6 -0
- package/public/r/header-1.json +7 -1
- package/public/r/header-2.json +7 -1
- package/public/r/header-3.json +7 -1
- package/public/r/header-4.json +7 -1
- package/public/r/header-5.json +7 -1
- package/public/r/header.json +6 -0
- package/public/r/hero-1.json +7 -1
- package/public/r/hero-10.json +7 -1
- package/public/r/hero-11.json +7 -1
- package/public/r/hero-12.json +7 -1
- package/public/r/hero-13.json +7 -1
- package/public/r/hero-2.json +7 -1
- package/public/r/hero-3.json +7 -1
- package/public/r/hero-4.json +7 -1
- package/public/r/hero-5.json +7 -1
- package/public/r/hero-6.json +7 -1
- package/public/r/hero-7.json +7 -1
- package/public/r/hero-8.json +7 -1
- package/public/r/hero-9.json +7 -1
- package/public/r/hover-card.json +7 -1
- package/public/r/icon.json +7 -1
- package/public/r/init.json +28 -0
- package/public/r/input-group.json +6 -0
- package/public/r/input.json +6 -0
- package/public/r/item.json +6 -0
- package/public/r/kbd.json +6 -0
- package/public/r/label.json +6 -0
- package/public/r/layout.json +6 -0
- package/public/r/links-2.json +7 -1
- package/public/r/logo.json +6 -0
- package/public/r/logos-1.json +7 -1
- package/public/r/logos-2.json +7 -1
- package/public/r/logos-3.json +7 -1
- package/public/r/marquee.json +6 -0
- package/public/r/native-select.json +6 -0
- package/public/r/navigation-menu.json +7 -1
- package/public/r/popover.json +7 -1
- package/public/r/price.json +6 -0
- package/public/r/pricing-1.json +7 -1
- package/public/r/pricing-2.json +7 -1
- package/public/r/pricing-3.json +7 -1
- package/public/r/product-1.json +7 -1
- package/public/r/products-1.json +7 -1
- package/public/r/products-2.json +7 -1
- package/public/r/products-3.json +7 -1
- package/public/r/products-4.json +7 -1
- package/public/r/products-5.json +7 -1
- package/public/r/radio-group.json +7 -1
- package/public/r/rating.json +6 -0
- package/public/r/registry.json +1645 -457
- package/public/r/reviews-1.json +7 -1
- package/public/r/reviews-2.json +7 -1
- package/public/r/reviews-3.json +7 -1
- package/public/r/reviews-4.json +7 -1
- package/public/r/reviews-5.json +7 -1
- package/public/r/section.json +18 -2
- package/public/r/select.json +6 -0
- package/public/r/separator.json +6 -0
- package/public/r/services-1.json +7 -1
- package/public/r/services-2.json +7 -1
- package/public/r/services-3.json +7 -1
- package/public/r/services-4.json +7 -1
- package/public/r/services-5.json +7 -1
- package/public/r/services-6.json +7 -1
- package/public/r/services-7.json +7 -1
- package/public/r/sheet.json +8 -2
- package/public/r/sidebar-1.json +6 -1
- package/public/r/sidebar.json +6 -0
- package/public/r/skeleton.json +6 -0
- package/public/r/slider.json +7 -1
- package/public/r/spinner.json +6 -0
- package/public/r/switch.json +7 -1
- package/public/r/table.json +6 -0
- package/public/r/tabs.json +7 -1
- package/public/r/textarea.json +6 -0
- package/public/r/theme-toggle.json +6 -0
- package/public/r/toc.json +6 -0
- package/public/r/toggle.json +7 -1
- package/public/r/tooltip.json +7 -1
- package/public/r/typography.json +7 -1
- package/public/r/video.json +6 -0
- package/registry/init/global.css +187 -0
- package/registry.json +1137 -454
- package/src/components/blocks/article-1.astro +4 -3
- package/src/components/blocks/article-2.astro +4 -3
- package/src/components/blocks/articles-1.astro +18 -9
- package/src/components/blocks/articles-2.astro +4 -3
- package/src/components/blocks/articles-3.astro +11 -9
- package/src/components/blocks/articles-4.astro +11 -4
- package/src/components/blocks/banner-1.astro +4 -3
- package/src/components/blocks/banner-2.astro +16 -7
- package/src/components/blocks/blocks-1.astro +1 -1
- package/src/components/blocks/contact-1.astro +74 -40
- package/src/components/blocks/contact-2.astro +71 -36
- package/src/components/blocks/contact-3.astro +63 -35
- package/src/components/blocks/content-1.astro +15 -10
- package/src/components/blocks/content-2.astro +15 -10
- package/src/components/blocks/content-3.astro +14 -12
- package/src/components/blocks/content-4.astro +15 -10
- package/src/components/blocks/cta-1.astro +14 -10
- package/src/components/blocks/cta-2.astro +11 -8
- package/src/components/blocks/cta-3.astro +15 -8
- package/src/components/blocks/cta-4.astro +14 -9
- package/src/components/blocks/cta-5.astro +12 -8
- package/src/components/blocks/cta-6.astro +11 -8
- package/src/components/blocks/cta-7.astro +17 -10
- package/src/components/blocks/cta-8.astro +15 -10
- package/src/components/blocks/doc-1.astro +1 -1
- package/src/components/blocks/faqs-1.astro +22 -11
- package/src/components/blocks/faqs-2.astro +19 -9
- package/src/components/blocks/faqs-3.astro +19 -9
- package/src/components/blocks/faqs-4.astro +12 -9
- package/src/components/blocks/features-1.astro +21 -13
- package/src/components/blocks/features-2.astro +22 -13
- package/src/components/blocks/features-3.astro +14 -13
- package/src/components/blocks/features-4.astro +18 -9
- package/src/components/blocks/features-5.astro +22 -13
- package/src/components/blocks/features-6.astro +19 -9
- package/src/components/blocks/footer-1.astro +4 -3
- package/src/components/blocks/footer-2.astro +4 -3
- package/src/components/blocks/footer-3.astro +4 -3
- package/src/components/blocks/header-1.astro +13 -7
- package/src/components/blocks/header-2.astro +12 -6
- package/src/components/blocks/header-3.astro +12 -6
- package/src/components/blocks/header-4.astro +13 -6
- package/src/components/blocks/header-5.astro +16 -6
- package/src/components/blocks/hero-1.astro +11 -8
- package/src/components/blocks/hero-10.astro +7 -3
- package/src/components/blocks/hero-11.astro +4 -2
- package/src/components/blocks/hero-12.astro +11 -4
- package/src/components/blocks/hero-13.astro +11 -4
- package/src/components/blocks/hero-2.astro +11 -8
- package/src/components/blocks/hero-3.astro +11 -3
- package/src/components/blocks/hero-4.astro +4 -2
- package/src/components/blocks/hero-5.astro +4 -3
- package/src/components/blocks/hero-6.astro +4 -3
- package/src/components/blocks/hero-7.astro +4 -3
- package/src/components/blocks/hero-8.astro +11 -4
- package/src/components/blocks/hero-9.astro +4 -3
- package/src/components/blocks/links-2.astro +4 -4
- package/src/components/blocks/logos-1.astro +14 -16
- package/src/components/blocks/logos-2.astro +14 -12
- package/src/components/blocks/logos-3.astro +5 -4
- package/src/components/blocks/pricing-1.astro +13 -16
- package/src/components/blocks/pricing-2.astro +14 -13
- package/src/components/blocks/pricing-3.astro +20 -16
- package/src/components/blocks/product-1.astro +4 -3
- package/src/components/blocks/products-1.astro +11 -9
- package/src/components/blocks/products-2.astro +12 -9
- package/src/components/blocks/products-3.astro +12 -9
- package/src/components/blocks/products-4.astro +18 -9
- package/src/components/blocks/products-5.astro +18 -9
- package/src/components/blocks/reviews-1.astro +13 -12
- package/src/components/blocks/reviews-2.astro +4 -4
- package/src/components/blocks/reviews-3.astro +13 -12
- package/src/components/blocks/reviews-4.astro +13 -12
- package/src/components/blocks/reviews-5.astro +13 -12
- package/src/components/blocks/services-1.astro +19 -9
- package/src/components/blocks/services-2.astro +11 -8
- package/src/components/blocks/services-3.astro +11 -8
- package/src/components/blocks/services-4.astro +19 -9
- package/src/components/blocks/services-5.astro +11 -8
- package/src/components/blocks/services-6.astro +4 -3
- package/src/components/blocks/services-7.astro +12 -8
- package/src/components/blocks/sidebar-1.astro +2 -2
- package/src/components/ui/accordion/accordion.astro +1 -0
- package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
- package/src/components/ui/banner/banner.astro +23 -41
- package/src/components/ui/collapsible/collapsible.astro +1 -0
- package/src/components/ui/dialog/dialog.astro +1 -0
- package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
- package/src/components/ui/hover-card/hover-card.astro +7 -3
- package/src/components/ui/icon/icon.astro +46 -29
- package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
- package/src/components/ui/popover/popover.astro +1 -0
- package/src/components/ui/radio-group/radio-group.astro +1 -0
- package/src/components/ui/section/index.ts +2 -0
- package/src/components/ui/section/section-container.astro +1 -0
- package/src/components/ui/section/section-description.astro +20 -0
- package/src/components/ui/section/section-title.astro +20 -0
- package/src/components/ui/sheet/sheet-close.astro +4 -2
- package/src/components/ui/sheet/sheet.astro +1 -0
- package/src/components/ui/slider/slider.astro +1 -0
- package/src/components/ui/switch/switch.astro +1 -0
- package/src/components/ui/tabs/tabs.astro +1 -0
- package/src/components/ui/toggle/toggle.astro +1 -0
- package/src/components/ui/tooltip/tooltip.astro +1 -0
- package/src/components/ui/typography/typography.astro +1 -1
- package/src/lib/pages.ts +12 -0
- package/src/styles/global.css +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import { Button } from "@/components/ui/button"
|
|
@@ -11,14 +12,18 @@ import {
|
|
|
11
12
|
FieldLegend,
|
|
12
13
|
FieldSet,
|
|
13
14
|
} from "@/components/ui/field"
|
|
15
|
+
import { Form } from "@/components/ui/form"
|
|
14
16
|
import { Icon } from "@/components/ui/icon"
|
|
15
17
|
import { Input } from "@/components/ui/input"
|
|
16
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
Section,
|
|
20
|
+
SectionContainer,
|
|
21
|
+
SectionTitle,
|
|
22
|
+
} from "@/components/ui/section"
|
|
17
23
|
import { Textarea } from "@/components/ui/textarea"
|
|
18
24
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
19
25
|
|
|
20
|
-
type Props = {
|
|
21
|
-
class?: string
|
|
26
|
+
type Props = HTMLAttributes<"section"> & {
|
|
22
27
|
title: string
|
|
23
28
|
description: string
|
|
24
29
|
contactItems: {
|
|
@@ -28,6 +33,9 @@ type Props = {
|
|
|
28
33
|
href?: string
|
|
29
34
|
}[]
|
|
30
35
|
form: {
|
|
36
|
+
id?: string
|
|
37
|
+
action?: string
|
|
38
|
+
method?: "get" | "post"
|
|
31
39
|
legend: string
|
|
32
40
|
nameLabel: string
|
|
33
41
|
namePlaceholder: string
|
|
@@ -50,18 +58,18 @@ const {
|
|
|
50
58
|
contactItems,
|
|
51
59
|
form,
|
|
52
60
|
image = { src: PlaceholderImage, alt: "Contact image" },
|
|
61
|
+
...props
|
|
53
62
|
} = Astro.props
|
|
63
|
+
const formId = form.id ?? `contact-${crypto.randomUUID()}`
|
|
54
64
|
---
|
|
55
65
|
|
|
56
|
-
<Section class={cn("", className)}>
|
|
66
|
+
<Section class={cn("", className)} {...props}>
|
|
57
67
|
<SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-start">
|
|
58
68
|
<div class="flex flex-col gap-8">
|
|
59
69
|
<div class="flex flex-col gap-4">
|
|
60
|
-
<
|
|
61
|
-
class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
|
|
62
|
-
>
|
|
70
|
+
<SectionTitle>
|
|
63
71
|
{title}
|
|
64
|
-
</
|
|
72
|
+
</SectionTitle>
|
|
65
73
|
<p class="text-muted-foreground max-w-xl text-base leading-relaxed">
|
|
66
74
|
{description}
|
|
67
75
|
</p>
|
|
@@ -83,10 +91,11 @@ const {
|
|
|
83
91
|
</Button>
|
|
84
92
|
) : (
|
|
85
93
|
<Button
|
|
94
|
+
as="span"
|
|
86
95
|
variant="secondary"
|
|
87
96
|
size="icon"
|
|
88
97
|
class="text-primary shrink-0"
|
|
89
|
-
aria-
|
|
98
|
+
aria-hidden="true"
|
|
90
99
|
>
|
|
91
100
|
<Icon name={item.icon} />
|
|
92
101
|
</Button>
|
|
@@ -102,36 +111,55 @@ const {
|
|
|
102
111
|
}
|
|
103
112
|
</div>
|
|
104
113
|
<div class="rounded-xl border p-6">
|
|
105
|
-
<
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
<
|
|
109
|
-
<
|
|
110
|
-
<
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
<Form id={formId} action={form.action} method={form.method ?? "post"}>
|
|
115
|
+
<FieldSet>
|
|
116
|
+
<FieldLegend class="sr-only">{form.legend}</FieldLegend>
|
|
117
|
+
<FieldGroup>
|
|
118
|
+
<div class="grid gap-4 md:grid-cols-2">
|
|
119
|
+
<Field>
|
|
120
|
+
<FieldLabel for={`${formId}-name`}
|
|
121
|
+
>{form.nameLabel}</FieldLabel
|
|
122
|
+
>
|
|
123
|
+
<Input
|
|
124
|
+
id={`${formId}-name`}
|
|
125
|
+
name="name"
|
|
126
|
+
autocomplete="name"
|
|
127
|
+
required
|
|
128
|
+
placeholder={form.namePlaceholder}
|
|
129
|
+
/>
|
|
130
|
+
</Field>
|
|
131
|
+
<Field>
|
|
132
|
+
<FieldLabel for={`${formId}-email`}
|
|
133
|
+
>{form.emailLabel}</FieldLabel
|
|
134
|
+
>
|
|
135
|
+
<Input
|
|
136
|
+
id={`${formId}-email`}
|
|
137
|
+
name="email"
|
|
138
|
+
autocomplete="email"
|
|
139
|
+
required
|
|
140
|
+
type="email"
|
|
141
|
+
placeholder={form.emailPlaceholder}
|
|
142
|
+
/>
|
|
143
|
+
</Field>
|
|
144
|
+
</div>
|
|
113
145
|
<Field>
|
|
114
|
-
<FieldLabel for=
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
146
|
+
<FieldLabel for={`${formId}-message`}
|
|
147
|
+
>{form.messageLabel}</FieldLabel
|
|
148
|
+
>
|
|
149
|
+
<Textarea
|
|
150
|
+
id={`${formId}-message`}
|
|
151
|
+
name="message"
|
|
152
|
+
required
|
|
153
|
+
rows={5}
|
|
154
|
+
placeholder={form.messagePlaceholder}
|
|
119
155
|
/>
|
|
120
156
|
</Field>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
<FieldLabel for="contact-message-3"
|
|
124
|
-
>{form.messageLabel}</FieldLabel
|
|
157
|
+
<Button type="submit" size="lg" class="w-full"
|
|
158
|
+
>{form.actionLabel}</Button
|
|
125
159
|
>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
placeholder={form.messagePlaceholder}
|
|
130
|
-
/>
|
|
131
|
-
</Field>
|
|
132
|
-
<Button size="lg" class="w-full">{form.actionLabel}</Button>
|
|
133
|
-
</FieldGroup>
|
|
134
|
-
</FieldSet>
|
|
160
|
+
</FieldGroup>
|
|
161
|
+
</FieldSet>
|
|
162
|
+
</Form>
|
|
135
163
|
</div>
|
|
136
164
|
</div>
|
|
137
165
|
<Image
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
import { CheckIcon } from "@lucide/astro"
|
|
5
6
|
|
|
6
7
|
import { cn } from "@/lib/utils"
|
|
7
8
|
import { Button } from "@/components/ui/button"
|
|
8
|
-
import {
|
|
9
|
+
import { Icon } from "@/components/ui/icon"
|
|
10
|
+
import {
|
|
11
|
+
Section,
|
|
12
|
+
SectionContainer,
|
|
13
|
+
SectionDescription,
|
|
14
|
+
SectionTitle,
|
|
15
|
+
} from "@/components/ui/section"
|
|
9
16
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
10
17
|
|
|
11
|
-
type Props = {
|
|
12
|
-
class?: string
|
|
18
|
+
type Props = HTMLAttributes<"section"> & {
|
|
13
19
|
title: string
|
|
14
20
|
description: string
|
|
15
21
|
features?: string[]
|
|
@@ -31,20 +37,19 @@ const {
|
|
|
31
37
|
features,
|
|
32
38
|
buttons,
|
|
33
39
|
image = { src: PlaceholderImage, alt: "Content image" },
|
|
40
|
+
...props
|
|
34
41
|
} = Astro.props
|
|
35
42
|
---
|
|
36
43
|
|
|
37
|
-
<Section class={cn("", className)}>
|
|
44
|
+
<Section class={cn("", className)} {...props}>
|
|
38
45
|
<SectionContainer class="gap-6">
|
|
39
46
|
<div class="flex flex-col gap-4">
|
|
40
|
-
<
|
|
41
|
-
class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
|
|
42
|
-
>
|
|
47
|
+
<SectionTitle>
|
|
43
48
|
{title}
|
|
44
|
-
</
|
|
45
|
-
<
|
|
49
|
+
</SectionTitle>
|
|
50
|
+
<SectionDescription>
|
|
46
51
|
{description}
|
|
47
|
-
</
|
|
52
|
+
</SectionDescription>
|
|
48
53
|
</div>
|
|
49
54
|
{
|
|
50
55
|
features?.length && (
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
import { CheckIcon } from "@lucide/astro"
|
|
5
6
|
|
|
6
7
|
import { cn } from "@/lib/utils"
|
|
7
8
|
import { Button } from "@/components/ui/button"
|
|
8
|
-
import {
|
|
9
|
+
import { Icon } from "@/components/ui/icon"
|
|
10
|
+
import {
|
|
11
|
+
Section,
|
|
12
|
+
SectionContainer,
|
|
13
|
+
SectionDescription,
|
|
14
|
+
SectionTitle,
|
|
15
|
+
} from "@/components/ui/section"
|
|
9
16
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
10
17
|
|
|
11
|
-
type Props = {
|
|
12
|
-
class?: string
|
|
18
|
+
type Props = HTMLAttributes<"section"> & {
|
|
13
19
|
title: string
|
|
14
20
|
description: string
|
|
15
21
|
features?: string[]
|
|
@@ -31,21 +37,20 @@ const {
|
|
|
31
37
|
features,
|
|
32
38
|
buttons,
|
|
33
39
|
image = { src: PlaceholderImage, alt: "Content image" },
|
|
40
|
+
...props
|
|
34
41
|
} = Astro.props
|
|
35
42
|
---
|
|
36
43
|
|
|
37
|
-
<Section class={cn("", className)}>
|
|
44
|
+
<Section class={cn("", className)} {...props}>
|
|
38
45
|
<SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
|
|
39
46
|
<div class="flex flex-col gap-6">
|
|
40
47
|
<div class="flex flex-col gap-4">
|
|
41
|
-
<
|
|
42
|
-
class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
|
|
43
|
-
>
|
|
48
|
+
<SectionTitle>
|
|
44
49
|
{title}
|
|
45
|
-
</
|
|
46
|
-
<
|
|
50
|
+
</SectionTitle>
|
|
51
|
+
<SectionDescription>
|
|
47
52
|
{description}
|
|
48
|
-
</
|
|
53
|
+
</SectionDescription>
|
|
49
54
|
</div>
|
|
50
55
|
{
|
|
51
56
|
features?.length && (
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import { Button } from "@/components/ui/button"
|
|
7
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
Section,
|
|
10
|
+
SectionContainer,
|
|
11
|
+
SectionDescription,
|
|
12
|
+
SectionTitle,
|
|
13
|
+
} from "@/components/ui/section"
|
|
8
14
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
9
15
|
|
|
10
|
-
type Props = {
|
|
11
|
-
class?: string
|
|
16
|
+
type Props = HTMLAttributes<"section"> & {
|
|
12
17
|
title: string
|
|
13
18
|
description: string
|
|
14
19
|
buttons?: {
|
|
@@ -28,25 +33,22 @@ const {
|
|
|
28
33
|
description,
|
|
29
34
|
buttons,
|
|
30
35
|
image = { src: PlaceholderImage, alt: "Content image" },
|
|
36
|
+
...props
|
|
31
37
|
} = Astro.props
|
|
32
38
|
---
|
|
33
39
|
|
|
34
|
-
<Section class={cn("", className)}>
|
|
40
|
+
<Section class={cn("", className)} {...props}>
|
|
35
41
|
<SectionContainer class="gap-8">
|
|
36
42
|
<div
|
|
37
43
|
class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between"
|
|
38
44
|
>
|
|
39
45
|
<div class="max-w-2xl">
|
|
40
|
-
<
|
|
41
|
-
class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
|
|
42
|
-
>
|
|
46
|
+
<SectionTitle>
|
|
43
47
|
{title}
|
|
44
|
-
</
|
|
45
|
-
<
|
|
46
|
-
class="text-muted-foreground mt-4 text-lg leading-relaxed text-balance"
|
|
47
|
-
>
|
|
48
|
+
</SectionTitle>
|
|
49
|
+
<SectionDescription class="mt-4">
|
|
48
50
|
{description}
|
|
49
|
-
</
|
|
51
|
+
</SectionDescription>
|
|
50
52
|
</div>
|
|
51
53
|
{
|
|
52
54
|
buttons?.length && (
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
import { CheckIcon } from "@lucide/astro"
|
|
5
6
|
|
|
6
7
|
import { cn } from "@/lib/utils"
|
|
7
8
|
import { Button } from "@/components/ui/button"
|
|
8
|
-
import {
|
|
9
|
+
import { Icon } from "@/components/ui/icon"
|
|
10
|
+
import {
|
|
11
|
+
Section,
|
|
12
|
+
SectionContainer,
|
|
13
|
+
SectionDescription,
|
|
14
|
+
SectionTitle,
|
|
15
|
+
} from "@/components/ui/section"
|
|
9
16
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
10
17
|
|
|
11
|
-
type Props = {
|
|
12
|
-
class?: string
|
|
18
|
+
type Props = HTMLAttributes<"section"> & {
|
|
13
19
|
title: string
|
|
14
20
|
description: string
|
|
15
21
|
features?: string[]
|
|
@@ -31,22 +37,21 @@ const {
|
|
|
31
37
|
features,
|
|
32
38
|
buttons,
|
|
33
39
|
image = { src: PlaceholderImage, alt: "Content image" },
|
|
40
|
+
...props
|
|
34
41
|
} = Astro.props
|
|
35
42
|
---
|
|
36
43
|
|
|
37
|
-
<Section class={cn("", className)}>
|
|
44
|
+
<Section class={cn("", className)} {...props}>
|
|
38
45
|
<SectionContainer>
|
|
39
46
|
<div class="grid gap-12 lg:grid-cols-[1fr_2fr] lg:items-center">
|
|
40
47
|
<div class="flex flex-col gap-6">
|
|
41
48
|
<div class="flex flex-col gap-4">
|
|
42
|
-
<
|
|
43
|
-
class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
|
|
44
|
-
>
|
|
49
|
+
<SectionTitle>
|
|
45
50
|
{title}
|
|
46
|
-
</
|
|
47
|
-
<
|
|
51
|
+
</SectionTitle>
|
|
52
|
+
<SectionDescription>
|
|
48
53
|
{description}
|
|
49
|
-
</
|
|
54
|
+
</SectionDescription>
|
|
50
55
|
</div>
|
|
51
56
|
{
|
|
52
57
|
features?.length && (
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
4
|
|
|
4
5
|
import { cn } from "@/lib/utils"
|
|
5
6
|
import {
|
|
@@ -10,10 +11,14 @@ import {
|
|
|
10
11
|
} from "@/components/ui/avatar"
|
|
11
12
|
import { Button } from "@/components/ui/button"
|
|
12
13
|
import { Rating } from "@/components/ui/rating"
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
Section,
|
|
16
|
+
SectionContainer,
|
|
17
|
+
SectionDescription,
|
|
18
|
+
SectionTitle,
|
|
19
|
+
} from "@/components/ui/section"
|
|
14
20
|
|
|
15
|
-
type Props = {
|
|
16
|
-
class?: string
|
|
21
|
+
type Props = HTMLAttributes<"section"> & {
|
|
17
22
|
title: string
|
|
18
23
|
description: string
|
|
19
24
|
buttons?: {
|
|
@@ -38,10 +43,11 @@ const {
|
|
|
38
43
|
description,
|
|
39
44
|
buttons,
|
|
40
45
|
socialProof,
|
|
46
|
+
...props
|
|
41
47
|
} = Astro.props
|
|
42
48
|
---
|
|
43
49
|
|
|
44
|
-
<Section variant="floating" class={cn("", className)}>
|
|
50
|
+
<Section variant="floating" class={cn("", className)} {...props}>
|
|
45
51
|
<SectionContainer class="items-center text-center">
|
|
46
52
|
{
|
|
47
53
|
socialProof && (
|
|
@@ -67,14 +73,12 @@ const {
|
|
|
67
73
|
)
|
|
68
74
|
}
|
|
69
75
|
<div class="flex max-w-2xl flex-col items-center gap-5">
|
|
70
|
-
<
|
|
71
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
72
|
-
>
|
|
76
|
+
<SectionTitle class="leading-[1.1]">
|
|
73
77
|
{title}
|
|
74
|
-
</
|
|
75
|
-
<
|
|
78
|
+
</SectionTitle>
|
|
79
|
+
<SectionDescription>
|
|
76
80
|
{description}
|
|
77
|
-
</
|
|
81
|
+
</SectionDescription>
|
|
78
82
|
</div>
|
|
79
83
|
{
|
|
80
84
|
buttons?.length && (
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -11,11 +12,14 @@ import {
|
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
14
|
import { Rating } from "@/components/ui/rating"
|
|
14
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
Section,
|
|
17
|
+
SectionContainer,
|
|
18
|
+
SectionTitle,
|
|
19
|
+
} from "@/components/ui/section"
|
|
15
20
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
16
21
|
|
|
17
|
-
type Props = {
|
|
18
|
-
class?: string
|
|
22
|
+
type Props = HTMLAttributes<"section"> & {
|
|
19
23
|
title: string
|
|
20
24
|
description: string
|
|
21
25
|
buttons?: {
|
|
@@ -45,18 +49,17 @@ const {
|
|
|
45
49
|
buttons,
|
|
46
50
|
socialProof,
|
|
47
51
|
image = { src: PlaceholderImage, alt: "CTA image" },
|
|
52
|
+
...props
|
|
48
53
|
} = Astro.props
|
|
49
54
|
---
|
|
50
55
|
|
|
51
|
-
<Section variant="floating" class={cn("", className)}>
|
|
56
|
+
<Section variant="floating" class={cn("", className)} {...props}>
|
|
52
57
|
<SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
|
|
53
58
|
<div class="flex flex-col gap-6">
|
|
54
59
|
<div class="flex flex-col gap-4">
|
|
55
|
-
<
|
|
56
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
57
|
-
>
|
|
60
|
+
<SectionTitle class="leading-[1.1]">
|
|
58
61
|
{title}
|
|
59
|
-
</
|
|
62
|
+
</SectionTitle>
|
|
60
63
|
<p class="text-muted-foreground text-lg leading-relaxed">
|
|
61
64
|
{description}
|
|
62
65
|
</p>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
|
+
import type { HTMLAttributes } from "astro/types"
|
|
3
4
|
|
|
4
5
|
import { cn } from "@/lib/utils"
|
|
5
6
|
import {
|
|
@@ -10,10 +11,13 @@ import {
|
|
|
10
11
|
} from "@/components/ui/avatar"
|
|
11
12
|
import { Button } from "@/components/ui/button"
|
|
12
13
|
import { Rating } from "@/components/ui/rating"
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
Section,
|
|
16
|
+
SectionContainer,
|
|
17
|
+
SectionTitle,
|
|
18
|
+
} from "@/components/ui/section"
|
|
14
19
|
|
|
15
|
-
type Props = {
|
|
16
|
-
class?: string
|
|
20
|
+
type Props = HTMLAttributes<"section"> & {
|
|
17
21
|
title: string
|
|
18
22
|
description: string
|
|
19
23
|
buttons?: {
|
|
@@ -38,19 +42,22 @@ const {
|
|
|
38
42
|
description,
|
|
39
43
|
buttons,
|
|
40
44
|
socialProof,
|
|
45
|
+
...props
|
|
41
46
|
} = Astro.props
|
|
42
47
|
---
|
|
43
48
|
|
|
44
|
-
<Section
|
|
49
|
+
<Section
|
|
50
|
+
variant="floating"
|
|
51
|
+
class={cn("bg-accent/50 shadow-none", className)}
|
|
52
|
+
{...props}
|
|
53
|
+
>
|
|
45
54
|
<SectionContainer
|
|
46
55
|
class="grid gap-8 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center"
|
|
47
56
|
>
|
|
48
57
|
<div class="flex flex-col gap-5">
|
|
49
|
-
<
|
|
50
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
51
|
-
>
|
|
58
|
+
<SectionTitle class="leading-[1.1]">
|
|
52
59
|
{title}
|
|
53
|
-
</
|
|
60
|
+
</SectionTitle>
|
|
54
61
|
<p class="text-muted-foreground max-w-2xl text-lg leading-relaxed">
|
|
55
62
|
{description}
|
|
56
63
|
</p>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -11,11 +12,15 @@ import {
|
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
14
|
import { Rating } from "@/components/ui/rating"
|
|
14
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
Section,
|
|
17
|
+
SectionContainer,
|
|
18
|
+
SectionDescription,
|
|
19
|
+
SectionTitle,
|
|
20
|
+
} from "@/components/ui/section"
|
|
15
21
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
16
22
|
|
|
17
|
-
type Props = {
|
|
18
|
-
class?: string
|
|
23
|
+
type Props = HTMLAttributes<"section"> & {
|
|
19
24
|
title: string
|
|
20
25
|
description: string
|
|
21
26
|
buttons?: {
|
|
@@ -45,12 +50,14 @@ const {
|
|
|
45
50
|
buttons,
|
|
46
51
|
socialProof,
|
|
47
52
|
image = { src: PlaceholderImage, alt: "CTA image" },
|
|
53
|
+
...props
|
|
48
54
|
} = Astro.props
|
|
49
55
|
---
|
|
50
56
|
|
|
51
57
|
<Section
|
|
52
58
|
variant="floating"
|
|
53
59
|
class={cn("dark bg-background overflow-hidden", className)}
|
|
60
|
+
{...props}
|
|
54
61
|
>
|
|
55
62
|
<Image
|
|
56
63
|
src={image.src}
|
|
@@ -61,14 +68,12 @@ const {
|
|
|
61
68
|
/>
|
|
62
69
|
<SectionContainer class="items-center text-center">
|
|
63
70
|
<div class="flex max-w-2xl flex-col items-center gap-5">
|
|
64
|
-
<
|
|
65
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
66
|
-
>
|
|
71
|
+
<SectionTitle class="leading-[1.1]">
|
|
67
72
|
{title}
|
|
68
|
-
</
|
|
69
|
-
<
|
|
73
|
+
</SectionTitle>
|
|
74
|
+
<SectionDescription>
|
|
70
75
|
{description}
|
|
71
|
-
</
|
|
76
|
+
</SectionDescription>
|
|
72
77
|
</div>
|
|
73
78
|
{
|
|
74
79
|
buttons?.length && (
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import type { HTMLAttributes } from "astro/types"
|
|
4
5
|
import { CheckIcon } from "@lucide/astro"
|
|
5
6
|
|
|
6
7
|
import { cn } from "@/lib/utils"
|
|
7
8
|
import { Button } from "@/components/ui/button"
|
|
8
|
-
import {
|
|
9
|
+
import { Icon } from "@/components/ui/icon"
|
|
10
|
+
import {
|
|
11
|
+
Section,
|
|
12
|
+
SectionContainer,
|
|
13
|
+
SectionTitle,
|
|
14
|
+
} from "@/components/ui/section"
|
|
9
15
|
import PlaceholderImage from "@/assets/placeholder.webp"
|
|
10
16
|
|
|
11
|
-
type Props = {
|
|
12
|
-
class?: string
|
|
17
|
+
type Props = HTMLAttributes<"section"> & {
|
|
13
18
|
title: string
|
|
14
19
|
description: string
|
|
15
20
|
features?: string[]
|
|
@@ -31,18 +36,17 @@ const {
|
|
|
31
36
|
features,
|
|
32
37
|
buttons,
|
|
33
38
|
image = { src: PlaceholderImage, alt: "CTA image" },
|
|
39
|
+
...props
|
|
34
40
|
} = Astro.props
|
|
35
41
|
---
|
|
36
42
|
|
|
37
|
-
<Section class={cn("", className)}>
|
|
43
|
+
<Section class={cn("", className)} {...props}>
|
|
38
44
|
<SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
|
|
39
45
|
<div class="flex flex-col gap-6">
|
|
40
46
|
<div class="flex flex-col gap-4">
|
|
41
|
-
<
|
|
42
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
43
|
-
>
|
|
47
|
+
<SectionTitle class="leading-[1.1]">
|
|
44
48
|
{title}
|
|
45
|
-
</
|
|
49
|
+
</SectionTitle>
|
|
46
50
|
<p class="text-muted-foreground text-lg leading-relaxed">
|
|
47
51
|
{description}
|
|
48
52
|
</p>
|