fulldev-ui 0.10.0 → 0.11.0
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 +8 -2
- package/public/r/alert-dialog.json +9 -3
- 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 +6 -0
- 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 +9 -3
- 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 +9 -2
- 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 +11 -5
- 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 +9 -3
- package/public/r/sidebar-1.json +5 -0
- package/public/r/sidebar.json +9 -3
- 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 +8 -2
- 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 +6 -0
- package/public/r/video.json +6 -0
- package/registry/init/global.css +187 -0
- package/registry.json +1138 -455
- 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 +10 -4
- package/src/components/blocks/blocks-1.astro +1 -1
- package/src/components/blocks/contact-1.astro +72 -39
- package/src/components/blocks/contact-2.astro +69 -35
- package/src/components/blocks/contact-3.astro +61 -34
- 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/ui/accordion/accordion-content.astro +2 -1
- package/src/components/ui/accordion/accordion.astro +1 -0
- package/src/components/ui/alert-dialog/alert-dialog-content.astro +1 -1
- package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +1 -1
- package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
- package/src/components/ui/collapsible/collapsible.astro +1 -0
- package/src/components/ui/dialog/dialog-content.astro +1 -1
- package/src/components/ui/dialog/dialog-overlay.astro +1 -1
- 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 +10 -3
- package/src/components/ui/icon/icon.astro +46 -29
- package/src/components/ui/navigation-menu/navigation-menu-content.astro +2 -0
- package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +2 -1
- package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +2 -0
- 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-content.astro +2 -2
- package/src/components/ui/sheet/sheet.astro +2 -89
- package/src/components/ui/sidebar/sidebar-menu-button.astro +0 -1
- package/src/components/ui/sidebar/sidebar-provider.astro +36 -2
- package/src/components/ui/sidebar/sidebar.astro +0 -1
- package/src/components/ui/slider/slider.astro +4 -3
- package/src/components/ui/switch/switch.astro +5 -2
- package/src/components/ui/tabs/tabs-content.astro +2 -1
- package/src/components/ui/tabs/tabs.astro +1 -0
- package/src/components/ui/toggle/toggle.astro +3 -0
- package/src/components/ui/tooltip/tooltip.astro +1 -0
- package/src/lib/pages.ts +12 -0
|
@@ -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>
|
|
@@ -102,36 +110,55 @@ const {
|
|
|
102
110
|
}
|
|
103
111
|
</div>
|
|
104
112
|
<div class="rounded-xl border p-6">
|
|
105
|
-
<
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
<
|
|
109
|
-
<
|
|
110
|
-
<
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
<Form id={formId} action={form.action} method={form.method ?? "post"}>
|
|
114
|
+
<FieldSet>
|
|
115
|
+
<FieldLegend class="sr-only">{form.legend}</FieldLegend>
|
|
116
|
+
<FieldGroup>
|
|
117
|
+
<div class="grid gap-4 md:grid-cols-2">
|
|
118
|
+
<Field>
|
|
119
|
+
<FieldLabel for={`${formId}-name`}
|
|
120
|
+
>{form.nameLabel}</FieldLabel
|
|
121
|
+
>
|
|
122
|
+
<Input
|
|
123
|
+
id={`${formId}-name`}
|
|
124
|
+
name="name"
|
|
125
|
+
autocomplete="name"
|
|
126
|
+
required
|
|
127
|
+
placeholder={form.namePlaceholder}
|
|
128
|
+
/>
|
|
129
|
+
</Field>
|
|
130
|
+
<Field>
|
|
131
|
+
<FieldLabel for={`${formId}-email`}
|
|
132
|
+
>{form.emailLabel}</FieldLabel
|
|
133
|
+
>
|
|
134
|
+
<Input
|
|
135
|
+
id={`${formId}-email`}
|
|
136
|
+
name="email"
|
|
137
|
+
autocomplete="email"
|
|
138
|
+
required
|
|
139
|
+
type="email"
|
|
140
|
+
placeholder={form.emailPlaceholder}
|
|
141
|
+
/>
|
|
142
|
+
</Field>
|
|
143
|
+
</div>
|
|
113
144
|
<Field>
|
|
114
|
-
<FieldLabel for=
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
145
|
+
<FieldLabel for={`${formId}-message`}
|
|
146
|
+
>{form.messageLabel}</FieldLabel
|
|
147
|
+
>
|
|
148
|
+
<Textarea
|
|
149
|
+
id={`${formId}-message`}
|
|
150
|
+
name="message"
|
|
151
|
+
required
|
|
152
|
+
rows={5}
|
|
153
|
+
placeholder={form.messagePlaceholder}
|
|
119
154
|
/>
|
|
120
155
|
</Field>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
<FieldLabel for="contact-message-3"
|
|
124
|
-
>{form.messageLabel}</FieldLabel
|
|
156
|
+
<Button type="submit" size="lg" class="w-full"
|
|
157
|
+
>{form.actionLabel}</Button
|
|
125
158
|
>
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
placeholder={form.messagePlaceholder}
|
|
130
|
-
/>
|
|
131
|
-
</Field>
|
|
132
|
-
<Button size="lg" class="w-full">{form.actionLabel}</Button>
|
|
133
|
-
</FieldGroup>
|
|
134
|
-
</FieldSet>
|
|
159
|
+
</FieldGroup>
|
|
160
|
+
</FieldSet>
|
|
161
|
+
</Form>
|
|
135
162
|
</div>
|
|
136
163
|
</div>
|
|
137
164
|
<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>
|
|
@@ -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,10 +49,11 @@ 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 class={cn("", className)}>
|
|
56
|
+
<Section class={cn("", className)} {...props}>
|
|
52
57
|
<SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
|
|
53
58
|
<Image
|
|
54
59
|
src={image.src}
|
|
@@ -59,11 +64,9 @@ const {
|
|
|
59
64
|
/>
|
|
60
65
|
<div class="flex flex-col gap-6">
|
|
61
66
|
<div class="flex flex-col gap-4">
|
|
62
|
-
<
|
|
63
|
-
class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
|
|
64
|
-
>
|
|
67
|
+
<SectionTitle class="leading-[1.1]">
|
|
65
68
|
{title}
|
|
66
|
-
</
|
|
69
|
+
</SectionTitle>
|
|
67
70
|
<p class="text-muted-foreground text-lg leading-relaxed">
|
|
68
71
|
{description}
|
|
69
72
|
</p>
|