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.
Files changed (252) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +7 -1
  3. package/package.json +6 -4
  4. package/public/r/accordion.json +7 -1
  5. package/public/r/alert-dialog.json +7 -1
  6. package/public/r/alert.json +6 -0
  7. package/public/r/article-1.json +7 -1
  8. package/public/r/article-2.json +7 -1
  9. package/public/r/articles-1.json +7 -1
  10. package/public/r/articles-2.json +7 -1
  11. package/public/r/articles-3.json +7 -1
  12. package/public/r/articles-4.json +7 -1
  13. package/public/r/avatar.json +6 -0
  14. package/public/r/badge.json +6 -0
  15. package/public/r/banner-1.json +7 -1
  16. package/public/r/banner-2.json +7 -1
  17. package/public/r/banner.json +7 -1
  18. package/public/r/blocks-1.json +6 -1
  19. package/public/r/blocks.json +92 -0
  20. package/public/r/breadcrumb.json +6 -0
  21. package/public/r/button.json +6 -0
  22. package/public/r/card.json +6 -0
  23. package/public/r/carousel.json +6 -0
  24. package/public/r/checkbox.json +6 -0
  25. package/public/r/collapsible.json +7 -1
  26. package/public/r/combobox.json +6 -0
  27. package/public/r/command.json +6 -0
  28. package/public/r/components.json +14 -3
  29. package/public/r/contact-1.json +10 -2
  30. package/public/r/contact-2.json +10 -2
  31. package/public/r/contact-3.json +10 -2
  32. package/public/r/content-1.json +7 -1
  33. package/public/r/content-2.json +7 -1
  34. package/public/r/content-3.json +7 -1
  35. package/public/r/content-4.json +7 -1
  36. package/public/r/cta-1.json +7 -1
  37. package/public/r/cta-2.json +7 -1
  38. package/public/r/cta-3.json +7 -1
  39. package/public/r/cta-4.json +7 -1
  40. package/public/r/cta-5.json +7 -1
  41. package/public/r/cta-6.json +7 -1
  42. package/public/r/cta-7.json +7 -1
  43. package/public/r/cta-8.json +7 -1
  44. package/public/r/dialog.json +7 -1
  45. package/public/r/doc-1.json +7 -1
  46. package/public/r/dropdown-menu.json +7 -1
  47. package/public/r/empty.json +6 -0
  48. package/public/r/faqs-1.json +7 -1
  49. package/public/r/faqs-2.json +7 -1
  50. package/public/r/faqs-3.json +7 -1
  51. package/public/r/faqs-4.json +7 -1
  52. package/public/r/features-1.json +7 -1
  53. package/public/r/features-2.json +7 -1
  54. package/public/r/features-3.json +7 -1
  55. package/public/r/features-4.json +7 -1
  56. package/public/r/features-5.json +7 -1
  57. package/public/r/features-6.json +7 -1
  58. package/public/r/field.json +6 -0
  59. package/public/r/footer-1.json +7 -1
  60. package/public/r/footer-2.json +7 -1
  61. package/public/r/footer-3.json +7 -1
  62. package/public/r/form.json +6 -0
  63. package/public/r/header-1.json +7 -1
  64. package/public/r/header-2.json +7 -1
  65. package/public/r/header-3.json +7 -1
  66. package/public/r/header-4.json +7 -1
  67. package/public/r/header-5.json +7 -1
  68. package/public/r/header.json +6 -0
  69. package/public/r/hero-1.json +7 -1
  70. package/public/r/hero-10.json +7 -1
  71. package/public/r/hero-11.json +7 -1
  72. package/public/r/hero-12.json +7 -1
  73. package/public/r/hero-13.json +7 -1
  74. package/public/r/hero-2.json +7 -1
  75. package/public/r/hero-3.json +7 -1
  76. package/public/r/hero-4.json +7 -1
  77. package/public/r/hero-5.json +7 -1
  78. package/public/r/hero-6.json +7 -1
  79. package/public/r/hero-7.json +7 -1
  80. package/public/r/hero-8.json +7 -1
  81. package/public/r/hero-9.json +7 -1
  82. package/public/r/hover-card.json +7 -1
  83. package/public/r/icon.json +7 -1
  84. package/public/r/init.json +28 -0
  85. package/public/r/input-group.json +6 -0
  86. package/public/r/input.json +6 -0
  87. package/public/r/item.json +6 -0
  88. package/public/r/kbd.json +6 -0
  89. package/public/r/label.json +6 -0
  90. package/public/r/layout.json +6 -0
  91. package/public/r/links-2.json +7 -1
  92. package/public/r/logo.json +6 -0
  93. package/public/r/logos-1.json +7 -1
  94. package/public/r/logos-2.json +7 -1
  95. package/public/r/logos-3.json +7 -1
  96. package/public/r/marquee.json +6 -0
  97. package/public/r/native-select.json +6 -0
  98. package/public/r/navigation-menu.json +7 -1
  99. package/public/r/popover.json +7 -1
  100. package/public/r/price.json +6 -0
  101. package/public/r/pricing-1.json +7 -1
  102. package/public/r/pricing-2.json +7 -1
  103. package/public/r/pricing-3.json +7 -1
  104. package/public/r/product-1.json +7 -1
  105. package/public/r/products-1.json +7 -1
  106. package/public/r/products-2.json +7 -1
  107. package/public/r/products-3.json +7 -1
  108. package/public/r/products-4.json +7 -1
  109. package/public/r/products-5.json +7 -1
  110. package/public/r/radio-group.json +7 -1
  111. package/public/r/rating.json +6 -0
  112. package/public/r/registry.json +1645 -457
  113. package/public/r/reviews-1.json +7 -1
  114. package/public/r/reviews-2.json +7 -1
  115. package/public/r/reviews-3.json +7 -1
  116. package/public/r/reviews-4.json +7 -1
  117. package/public/r/reviews-5.json +7 -1
  118. package/public/r/section.json +18 -2
  119. package/public/r/select.json +6 -0
  120. package/public/r/separator.json +6 -0
  121. package/public/r/services-1.json +7 -1
  122. package/public/r/services-2.json +7 -1
  123. package/public/r/services-3.json +7 -1
  124. package/public/r/services-4.json +7 -1
  125. package/public/r/services-5.json +7 -1
  126. package/public/r/services-6.json +7 -1
  127. package/public/r/services-7.json +7 -1
  128. package/public/r/sheet.json +8 -2
  129. package/public/r/sidebar-1.json +6 -1
  130. package/public/r/sidebar.json +6 -0
  131. package/public/r/skeleton.json +6 -0
  132. package/public/r/slider.json +7 -1
  133. package/public/r/spinner.json +6 -0
  134. package/public/r/switch.json +7 -1
  135. package/public/r/table.json +6 -0
  136. package/public/r/tabs.json +7 -1
  137. package/public/r/textarea.json +6 -0
  138. package/public/r/theme-toggle.json +6 -0
  139. package/public/r/toc.json +6 -0
  140. package/public/r/toggle.json +7 -1
  141. package/public/r/tooltip.json +7 -1
  142. package/public/r/typography.json +7 -1
  143. package/public/r/video.json +6 -0
  144. package/registry/init/global.css +187 -0
  145. package/registry.json +1137 -454
  146. package/src/components/blocks/article-1.astro +4 -3
  147. package/src/components/blocks/article-2.astro +4 -3
  148. package/src/components/blocks/articles-1.astro +18 -9
  149. package/src/components/blocks/articles-2.astro +4 -3
  150. package/src/components/blocks/articles-3.astro +11 -9
  151. package/src/components/blocks/articles-4.astro +11 -4
  152. package/src/components/blocks/banner-1.astro +4 -3
  153. package/src/components/blocks/banner-2.astro +16 -7
  154. package/src/components/blocks/blocks-1.astro +1 -1
  155. package/src/components/blocks/contact-1.astro +74 -40
  156. package/src/components/blocks/contact-2.astro +71 -36
  157. package/src/components/blocks/contact-3.astro +63 -35
  158. package/src/components/blocks/content-1.astro +15 -10
  159. package/src/components/blocks/content-2.astro +15 -10
  160. package/src/components/blocks/content-3.astro +14 -12
  161. package/src/components/blocks/content-4.astro +15 -10
  162. package/src/components/blocks/cta-1.astro +14 -10
  163. package/src/components/blocks/cta-2.astro +11 -8
  164. package/src/components/blocks/cta-3.astro +15 -8
  165. package/src/components/blocks/cta-4.astro +14 -9
  166. package/src/components/blocks/cta-5.astro +12 -8
  167. package/src/components/blocks/cta-6.astro +11 -8
  168. package/src/components/blocks/cta-7.astro +17 -10
  169. package/src/components/blocks/cta-8.astro +15 -10
  170. package/src/components/blocks/doc-1.astro +1 -1
  171. package/src/components/blocks/faqs-1.astro +22 -11
  172. package/src/components/blocks/faqs-2.astro +19 -9
  173. package/src/components/blocks/faqs-3.astro +19 -9
  174. package/src/components/blocks/faqs-4.astro +12 -9
  175. package/src/components/blocks/features-1.astro +21 -13
  176. package/src/components/blocks/features-2.astro +22 -13
  177. package/src/components/blocks/features-3.astro +14 -13
  178. package/src/components/blocks/features-4.astro +18 -9
  179. package/src/components/blocks/features-5.astro +22 -13
  180. package/src/components/blocks/features-6.astro +19 -9
  181. package/src/components/blocks/footer-1.astro +4 -3
  182. package/src/components/blocks/footer-2.astro +4 -3
  183. package/src/components/blocks/footer-3.astro +4 -3
  184. package/src/components/blocks/header-1.astro +13 -7
  185. package/src/components/blocks/header-2.astro +12 -6
  186. package/src/components/blocks/header-3.astro +12 -6
  187. package/src/components/blocks/header-4.astro +13 -6
  188. package/src/components/blocks/header-5.astro +16 -6
  189. package/src/components/blocks/hero-1.astro +11 -8
  190. package/src/components/blocks/hero-10.astro +7 -3
  191. package/src/components/blocks/hero-11.astro +4 -2
  192. package/src/components/blocks/hero-12.astro +11 -4
  193. package/src/components/blocks/hero-13.astro +11 -4
  194. package/src/components/blocks/hero-2.astro +11 -8
  195. package/src/components/blocks/hero-3.astro +11 -3
  196. package/src/components/blocks/hero-4.astro +4 -2
  197. package/src/components/blocks/hero-5.astro +4 -3
  198. package/src/components/blocks/hero-6.astro +4 -3
  199. package/src/components/blocks/hero-7.astro +4 -3
  200. package/src/components/blocks/hero-8.astro +11 -4
  201. package/src/components/blocks/hero-9.astro +4 -3
  202. package/src/components/blocks/links-2.astro +4 -4
  203. package/src/components/blocks/logos-1.astro +14 -16
  204. package/src/components/blocks/logos-2.astro +14 -12
  205. package/src/components/blocks/logos-3.astro +5 -4
  206. package/src/components/blocks/pricing-1.astro +13 -16
  207. package/src/components/blocks/pricing-2.astro +14 -13
  208. package/src/components/blocks/pricing-3.astro +20 -16
  209. package/src/components/blocks/product-1.astro +4 -3
  210. package/src/components/blocks/products-1.astro +11 -9
  211. package/src/components/blocks/products-2.astro +12 -9
  212. package/src/components/blocks/products-3.astro +12 -9
  213. package/src/components/blocks/products-4.astro +18 -9
  214. package/src/components/blocks/products-5.astro +18 -9
  215. package/src/components/blocks/reviews-1.astro +13 -12
  216. package/src/components/blocks/reviews-2.astro +4 -4
  217. package/src/components/blocks/reviews-3.astro +13 -12
  218. package/src/components/blocks/reviews-4.astro +13 -12
  219. package/src/components/blocks/reviews-5.astro +13 -12
  220. package/src/components/blocks/services-1.astro +19 -9
  221. package/src/components/blocks/services-2.astro +11 -8
  222. package/src/components/blocks/services-3.astro +11 -8
  223. package/src/components/blocks/services-4.astro +19 -9
  224. package/src/components/blocks/services-5.astro +11 -8
  225. package/src/components/blocks/services-6.astro +4 -3
  226. package/src/components/blocks/services-7.astro +12 -8
  227. package/src/components/blocks/sidebar-1.astro +2 -2
  228. package/src/components/ui/accordion/accordion.astro +1 -0
  229. package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
  230. package/src/components/ui/banner/banner.astro +23 -41
  231. package/src/components/ui/collapsible/collapsible.astro +1 -0
  232. package/src/components/ui/dialog/dialog.astro +1 -0
  233. package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
  234. package/src/components/ui/hover-card/hover-card.astro +7 -3
  235. package/src/components/ui/icon/icon.astro +46 -29
  236. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
  237. package/src/components/ui/popover/popover.astro +1 -0
  238. package/src/components/ui/radio-group/radio-group.astro +1 -0
  239. package/src/components/ui/section/index.ts +2 -0
  240. package/src/components/ui/section/section-container.astro +1 -0
  241. package/src/components/ui/section/section-description.astro +20 -0
  242. package/src/components/ui/section/section-title.astro +20 -0
  243. package/src/components/ui/sheet/sheet-close.astro +4 -2
  244. package/src/components/ui/sheet/sheet.astro +1 -0
  245. package/src/components/ui/slider/slider.astro +1 -0
  246. package/src/components/ui/switch/switch.astro +1 -0
  247. package/src/components/ui/tabs/tabs.astro +1 -0
  248. package/src/components/ui/toggle/toggle.astro +1 -0
  249. package/src/components/ui/tooltip/tooltip.astro +1 -0
  250. package/src/components/ui/typography/typography.astro +1 -1
  251. package/src/lib/pages.ts +12 -0
  252. 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 {
@@ -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 { Section, SectionContainer } from "@/components/ui/section"
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
- <h2
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
- </h2>
69
+ </SectionTitle>
67
70
  <p class="text-muted-foreground text-lg leading-relaxed">
68
71
  {description}
69
72
  </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,14 @@ import {
10
11
  AvatarImage,
11
12
  } from "@/components/ui/avatar"
12
13
  import { Button } from "@/components/ui/button"
13
- import { Section, SectionContainer } from "@/components/ui/section"
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?: {
@@ -39,20 +44,22 @@ const {
39
44
  description,
40
45
  buttons,
41
46
  socialProof,
47
+ ...props
42
48
  } = Astro.props
43
49
  ---
44
50
 
45
- <Section class={cn("bg-primary/10 border-primary/15 border-y", className)}>
51
+ <Section
52
+ class={cn("bg-primary/10 border-primary/15 border-y", className)}
53
+ {...props}
54
+ >
46
55
  <SectionContainer class="items-center text-center">
47
56
  <div class="flex max-w-2xl flex-col items-center gap-5">
48
- <h2
49
- class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
50
- >
57
+ <SectionTitle class="leading-[1.1]">
51
58
  {title}
52
- </h2>
53
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
59
+ </SectionTitle>
60
+ <SectionDescription>
54
61
  {description}
55
- </p>
62
+ </SectionDescription>
56
63
  </div>
57
64
  {
58
65
  buttons?.length && (
@@ -1,10 +1,16 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Button } from "@/components/ui/button"
4
- import { Section, SectionContainer } from "@/components/ui/section"
6
+ import {
7
+ Section,
8
+ SectionContainer,
9
+ SectionDescription,
10
+ SectionTitle,
11
+ } from "@/components/ui/section"
5
12
 
6
- type Props = {
7
- class?: string
13
+ type Props = HTMLAttributes<"section"> & {
8
14
  title: string
9
15
  description: string
10
16
  buttons?: {
@@ -14,25 +20,24 @@ type Props = {
14
20
  }[]
15
21
  }
16
22
 
17
- const { class: className, title, description, buttons } = Astro.props
23
+ const { class: className, title, description, buttons, ...props } = Astro.props
18
24
  ---
19
25
 
20
26
  <Section
21
27
  variant="floating"
22
28
  class={cn("border-primary/20 shadow-none", className)}
29
+ {...props}
23
30
  >
24
31
  <SectionContainer
25
32
  class="before:from-primary/20 relative items-center before:absolute before:top-full before:left-1/2 before:-z-10 before:h-[200%] before:w-full before:-translate-x-1/2 before:rounded-full before:bg-gradient-to-b before:to-transparent before:blur-3xl"
26
33
  >
27
34
  <div class="flex max-w-2xl flex-col items-center gap-5 text-center">
28
- <h2
29
- class="text-foreground text-3xl leading-[1.1] font-semibold tracking-tight text-balance sm:text-4xl"
30
- >
35
+ <SectionTitle class="leading-[1.1]">
31
36
  {title}
32
- </h2>
33
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
37
+ </SectionTitle>
38
+ <SectionDescription>
34
39
  {description}
35
- </p>
40
+ </SectionDescription>
36
41
  </div>
37
42
  {
38
43
  buttons?.length && (
@@ -99,7 +99,7 @@ const showCopyButton = Boolean(copyButton)
99
99
  const showOpenButton = Boolean(markdownUrl)
100
100
  const showPagination = Boolean(previousPage || nextPage)
101
101
  const assistantPrompt = markdownUrl
102
- ? `Read ${markdownUrl}, I want to ask questions about it.`
102
+ ? `Read ${new URL(markdownUrl, Astro.site ?? Astro.url.origin).href}, I want to ask questions about it.`
103
103
  : ""
104
104
  const openLinks = markdownUrl
105
105
  ? [
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import {
4
6
  Accordion,
@@ -7,10 +9,14 @@ import {
7
9
  AccordionTrigger,
8
10
  } from "@/components/ui/accordion"
9
11
  import { Button } from "@/components/ui/button"
10
- import { Section, SectionContainer } from "@/components/ui/section"
12
+ import {
13
+ Section,
14
+ SectionContainer,
15
+ SectionDescription,
16
+ SectionTitle,
17
+ } from "@/components/ui/section"
11
18
 
12
- type Props = {
13
- class?: string
19
+ type Props = HTMLAttributes<"section"> & {
14
20
  title: string
15
21
  description: string
16
22
  faqs: {
@@ -25,20 +31,25 @@ type Props = {
25
31
  }[]
26
32
  }
27
33
 
28
- const { class: className, title, description, faqs, buttons } = Astro.props
34
+ const {
35
+ class: className,
36
+ title,
37
+ description,
38
+ faqs,
39
+ buttons,
40
+ ...props
41
+ } = Astro.props
29
42
  ---
30
43
 
31
- <Section class={cn("", className)}>
44
+ <Section class={cn("", className)} {...props}>
32
45
  <SectionContainer class="items-center text-center">
33
46
  <div class="flex max-w-2xl flex-col items-center gap-5">
34
- <h2
35
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
36
- >
47
+ <SectionTitle>
37
48
  {title}
38
- </h2>
39
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
49
+ </SectionTitle>
50
+ <SectionDescription>
40
51
  {description}
41
- </p>
52
+ </SectionDescription>
42
53
  </div>
43
54
  {
44
55
  buttons?.length && (
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import {
4
6
  Accordion,
@@ -7,10 +9,13 @@ import {
7
9
  AccordionTrigger,
8
10
  } from "@/components/ui/accordion"
9
11
  import { Button } from "@/components/ui/button"
10
- import { Section, SectionContainer } from "@/components/ui/section"
12
+ import {
13
+ Section,
14
+ SectionContainer,
15
+ SectionTitle,
16
+ } from "@/components/ui/section"
11
17
 
12
- type Props = {
13
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
14
19
  title: string
15
20
  description: string
16
21
  faqs: {
@@ -25,20 +30,25 @@ type Props = {
25
30
  }[]
26
31
  }
27
32
 
28
- const { class: className, title, description, faqs, buttons } = Astro.props
33
+ const {
34
+ class: className,
35
+ title,
36
+ description,
37
+ faqs,
38
+ buttons,
39
+ ...props
40
+ } = Astro.props
29
41
  ---
30
42
 
31
- <Section class={cn("", className)}>
43
+ <Section class={cn("", className)} {...props}>
32
44
  <SectionContainer>
33
45
  <div
34
46
  class="grid gap-12 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.5fr)] lg:gap-16"
35
47
  >
36
48
  <div class="lg:sticky lg:top-24 lg:self-start">
37
- <h2
38
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
39
- >
49
+ <SectionTitle>
40
50
  {title}
41
- </h2>
51
+ </SectionTitle>
42
52
  <p
43
53
  class="text-muted-foreground mt-4 text-base leading-relaxed text-balance"
44
54
  >
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import {
4
6
  Accordion,
@@ -7,10 +9,13 @@ import {
7
9
  AccordionTrigger,
8
10
  } from "@/components/ui/accordion"
9
11
  import { Badge } from "@/components/ui/badge"
10
- import { Section, SectionContainer } from "@/components/ui/section"
12
+ import {
13
+ Section,
14
+ SectionContainer,
15
+ SectionTitle,
16
+ } from "@/components/ui/section"
11
17
 
12
- type Props = {
13
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
14
19
  badge?: string
15
20
  title: string
16
21
  description: string
@@ -21,18 +26,23 @@ type Props = {
21
26
  }[]
22
27
  }
23
28
 
24
- const { class: className, badge, title, description, faqs } = Astro.props
29
+ const {
30
+ class: className,
31
+ badge,
32
+ title,
33
+ description,
34
+ faqs,
35
+ ...props
36
+ } = Astro.props
25
37
  ---
26
38
 
27
- <Section class={cn("", className)}>
39
+ <Section class={cn("", className)} {...props}>
28
40
  <SectionContainer class="items-center text-center">
29
41
  <div class="flex max-w-2xl flex-col items-center gap-5">
30
42
  {badge && <Badge variant="secondary">{badge}</Badge>}
31
- <h2
32
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
33
- >
43
+ <SectionTitle>
34
44
  {title}
35
- </h2>
45
+ </SectionTitle>
36
46
  <p class="text-muted-foreground text-base leading-relaxed text-balance">
37
47
  {description}
38
48
  </p>
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import {
4
6
  Accordion,
@@ -6,10 +8,13 @@ import {
6
8
  AccordionItem,
7
9
  AccordionTrigger,
8
10
  } from "@/components/ui/accordion"
9
- import { Section, SectionContainer } from "@/components/ui/section"
11
+ import {
12
+ Section,
13
+ SectionContainer,
14
+ SectionTitle,
15
+ } from "@/components/ui/section"
10
16
 
11
- type Props = {
12
- class?: string
17
+ type Props = HTMLAttributes<"section"> & {
13
18
  title: string
14
19
  faqs: {
15
20
  id: string
@@ -18,17 +23,15 @@ type Props = {
18
23
  }[]
19
24
  }
20
25
 
21
- const { class: className, title, faqs } = Astro.props
26
+ const { class: className, title, faqs, ...props } = Astro.props
22
27
  ---
23
28
 
24
- <Section class={cn("", className)}>
29
+ <Section class={cn("", className)} {...props}>
25
30
  <SectionContainer class="items-center">
26
31
  <div class="mx-auto w-full max-w-3xl">
27
- <h2
28
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
29
- >
32
+ <SectionTitle>
30
33
  {title}
31
- </h2>
34
+ </SectionTitle>
32
35
  <div class="mt-10">
33
36
  <Accordion collapsible>
34
37
  {
@@ -1,13 +1,18 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
6
  import { Button } from "@/components/ui/button"
6
7
  import { Icon } from "@/components/ui/icon"
7
- import { Section, SectionContainer } from "@/components/ui/section"
8
+ import {
9
+ Section,
10
+ SectionContainer,
11
+ SectionDescription,
12
+ SectionTitle,
13
+ } from "@/components/ui/section"
8
14
 
9
- type Props = {
10
- class?: string
15
+ type Props = HTMLAttributes<"section"> & {
11
16
  title: string
12
17
  description: string
13
18
  buttons?: {
@@ -24,22 +29,25 @@ type Props = {
24
29
  }[]
25
30
  }
26
31
 
27
- const { class: className, title, description, buttons, features } = Astro.props
32
+ const {
33
+ class: className,
34
+ title,
35
+ description,
36
+ buttons,
37
+ features,
38
+ ...props
39
+ } = Astro.props
28
40
  ---
29
41
 
30
- <Section class={cn("", className)}>
42
+ <Section class={cn("", className)} {...props}>
31
43
  <SectionContainer class="items-center gap-6 text-center">
32
44
  <div class="flex max-w-2xl flex-col items-center gap-4">
33
- <h2
34
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
35
- >
45
+ <SectionTitle>
36
46
  {title}
37
- </h2>
38
- <p
39
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
40
- >
47
+ </SectionTitle>
48
+ <SectionDescription class="max-w-2xl">
41
49
  {description}
42
- </p>
50
+ </SectionDescription>
43
51
  </div>
44
52
  {
45
53
  buttons?.length && (
@@ -1,11 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Button } from "@/components/ui/button"
4
6
  import { Icon } from "@/components/ui/icon"
5
- import { Section, SectionContainer } from "@/components/ui/section"
7
+ import {
8
+ Section,
9
+ SectionContainer,
10
+ SectionDescription,
11
+ SectionTitle,
12
+ } from "@/components/ui/section"
6
13
 
7
- type Props = {
8
- class?: string
14
+ type Props = HTMLAttributes<"section"> & {
9
15
  title: string
10
16
  description: string
11
17
  buttons?: {
@@ -20,22 +26,25 @@ type Props = {
20
26
  }[]
21
27
  }
22
28
 
23
- const { class: className, title, description, buttons, features } = Astro.props
29
+ const {
30
+ class: className,
31
+ title,
32
+ description,
33
+ buttons,
34
+ features,
35
+ ...props
36
+ } = Astro.props
24
37
  ---
25
38
 
26
- <Section class={cn("", className)}>
39
+ <Section class={cn("", className)} {...props}>
27
40
  <SectionContainer class="items-center gap-6 text-center">
28
41
  <div class="flex max-w-2xl flex-col items-center gap-4">
29
- <h2
30
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
31
- >
42
+ <SectionTitle>
32
43
  {title}
33
- </h2>
34
- <p
35
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
36
- >
44
+ </SectionTitle>
45
+ <SectionDescription class="max-w-2xl">
37
46
  {description}
38
- </p>
47
+ </SectionDescription>
39
48
  </div>
40
49
  {
41
50
  buttons?.length && (
@@ -1,12 +1,17 @@
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
- import { Section, SectionContainer } from "@/components/ui/section"
7
+ import {
8
+ Section,
9
+ SectionContainer,
10
+ SectionDescription,
11
+ SectionTitle,
12
+ } from "@/components/ui/section"
7
13
 
8
- type Props = {
9
- class?: string
14
+ type Props = HTMLAttributes<"section"> & {
10
15
  title: string
11
16
  description: string
12
17
  features: {
@@ -19,22 +24,18 @@ type Props = {
19
24
  }[]
20
25
  }
21
26
 
22
- const { class: className, title, description, features } = Astro.props
27
+ const { class: className, title, description, features, ...props } = Astro.props
23
28
  ---
24
29
 
25
- <Section class={cn("", className)}>
30
+ <Section class={cn("", className)} {...props}>
26
31
  <SectionContainer class="items-center gap-6 text-center">
27
32
  <div class="flex max-w-2xl flex-col items-center gap-4">
28
- <h2
29
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
30
- >
33
+ <SectionTitle>
31
34
  {title}
32
- </h2>
33
- <p
34
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
35
- >
35
+ </SectionTitle>
36
+ <SectionDescription class="max-w-2xl">
36
37
  {description}
37
- </p>
38
+ </SectionDescription>
38
39
  </div>
39
40
  </SectionContainer>
40
41
  <SectionContainer>
@@ -1,13 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
3
4
 
4
5
  import { cn } from "@/lib/utils"
5
6
  import { Button } from "@/components/ui/button"
6
7
  import { Icon } from "@/components/ui/icon"
7
- import { Section, SectionContainer } from "@/components/ui/section"
8
+ import {
9
+ Section,
10
+ SectionContainer,
11
+ SectionTitle,
12
+ } from "@/components/ui/section"
8
13
 
9
- type Props = {
10
- class?: string
14
+ type Props = HTMLAttributes<"section"> & {
11
15
  title: string
12
16
  description: string
13
17
  buttons?: {
@@ -24,18 +28,23 @@ type Props = {
24
28
  }[]
25
29
  }
26
30
 
27
- const { class: className, title, description, buttons, features } = Astro.props
31
+ const {
32
+ class: className,
33
+ title,
34
+ description,
35
+ buttons,
36
+ features,
37
+ ...props
38
+ } = Astro.props
28
39
  ---
29
40
 
30
- <Section class={cn("", className)}>
41
+ <Section class={cn("", className)} {...props}>
31
42
  <SectionContainer>
32
43
  <div class="grid gap-12 lg:grid-cols-[1fr_2fr] lg:items-start">
33
44
  <div class="lg:sticky lg:top-28">
34
- <h2
35
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
36
- >
45
+ <SectionTitle>
37
46
  {title}
38
- </h2>
47
+ </SectionTitle>
39
48
  <p
40
49
  class="text-muted-foreground mt-4 text-base leading-relaxed text-balance"
41
50
  >
@@ -1,11 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Button } from "@/components/ui/button"
4
6
  import { Icon } from "@/components/ui/icon"
5
- import { Section, SectionContainer } from "@/components/ui/section"
7
+ import {
8
+ Section,
9
+ SectionContainer,
10
+ SectionDescription,
11
+ SectionTitle,
12
+ } from "@/components/ui/section"
6
13
 
7
- type Props = {
8
- class?: string
14
+ type Props = HTMLAttributes<"section"> & {
9
15
  title: string
10
16
  description: string
11
17
  buttons?: {
@@ -20,22 +26,25 @@ type Props = {
20
26
  }[]
21
27
  }
22
28
 
23
- const { class: className, title, description, buttons, features } = Astro.props
29
+ const {
30
+ class: className,
31
+ title,
32
+ description,
33
+ buttons,
34
+ features,
35
+ ...props
36
+ } = Astro.props
24
37
  ---
25
38
 
26
- <Section variant="floating" class={cn("", className)}>
39
+ <Section variant="floating" class={cn("", className)} {...props}>
27
40
  <SectionContainer class="items-center gap-6 text-center">
28
41
  <div class="flex max-w-2xl flex-col items-center gap-4">
29
- <h2
30
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
31
- >
42
+ <SectionTitle>
32
43
  {title}
33
- </h2>
34
- <p
35
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
36
- >
44
+ </SectionTitle>
45
+ <SectionDescription class="max-w-2xl">
37
46
  {description}
38
- </p>
47
+ </SectionDescription>
39
48
  </div>
40
49
  {
41
50
  buttons?.length && (