fulldev-ui 0.10.1 → 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.
Files changed (248) hide show
  1. package/CHANGELOG.md +6 -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 +6 -0
  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 +5 -0
  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 +6 -0
  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 +10 -4
  154. package/src/components/blocks/blocks-1.astro +1 -1
  155. package/src/components/blocks/contact-1.astro +72 -39
  156. package/src/components/blocks/contact-2.astro +69 -35
  157. package/src/components/blocks/contact-3.astro +61 -34
  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/ui/accordion/accordion.astro +1 -0
  228. package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
  229. package/src/components/ui/collapsible/collapsible.astro +1 -0
  230. package/src/components/ui/dialog/dialog.astro +1 -0
  231. package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
  232. package/src/components/ui/hover-card/hover-card.astro +7 -3
  233. package/src/components/ui/icon/icon.astro +46 -29
  234. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
  235. package/src/components/ui/popover/popover.astro +1 -0
  236. package/src/components/ui/radio-group/radio-group.astro +1 -0
  237. package/src/components/ui/section/index.ts +2 -0
  238. package/src/components/ui/section/section-container.astro +1 -0
  239. package/src/components/ui/section/section-description.astro +20 -0
  240. package/src/components/ui/section/section-title.astro +20 -0
  241. package/src/components/ui/sheet/sheet-close.astro +4 -2
  242. package/src/components/ui/sheet/sheet.astro +1 -0
  243. package/src/components/ui/slider/slider.astro +1 -0
  244. package/src/components/ui/switch/switch.astro +1 -0
  245. package/src/components/ui/tabs/tabs.astro +1 -0
  246. package/src/components/ui/toggle/toggle.astro +1 -0
  247. package/src/components/ui/tooltip/tooltip.astro +1 -0
  248. package/src/lib/pages.ts +12 -0
@@ -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 && (
@@ -1,11 +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
+ SectionTitle,
10
+ } from "@/components/ui/section"
5
11
  import { Separator } from "@/components/ui/separator"
6
12
 
7
- type Props = {
8
- class?: string
13
+ type Props = HTMLAttributes<"section"> & {
9
14
  title: string
10
15
  description: string
11
16
  buttons?: {
@@ -19,17 +24,22 @@ type Props = {
19
24
  }[]
20
25
  }
21
26
 
22
- const { class: className, title, description, buttons, features } = Astro.props
27
+ const {
28
+ class: className,
29
+ title,
30
+ description,
31
+ buttons,
32
+ features,
33
+ ...props
34
+ } = Astro.props
23
35
  ---
24
36
 
25
- <Section class={cn("", className)}>
37
+ <Section class={cn("", className)} {...props}>
26
38
  <SectionContainer>
27
39
  <div class="flex max-w-2xl flex-col gap-4">
28
- <h2
29
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
30
- >
40
+ <SectionTitle>
31
41
  {title}
32
- </h2>
42
+ </SectionTitle>
33
43
  <p class="text-muted-foreground text-base leading-relaxed text-balance">
34
44
  {description}
35
45
  </p>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import Discord from "simple-icons-astro/Discord"
3
4
  import Github from "simple-icons-astro/Github"
4
5
  import X from "simple-icons-astro/X"
@@ -8,8 +9,7 @@ import { Logo, LogoText } from "@/components/ui/logo"
8
9
  import { Section, SectionContainer } from "@/components/ui/section"
9
10
  import { Separator } from "@/components/ui/separator"
10
11
 
11
- type Props = {
12
- class?: string
12
+ type Props = HTMLAttributes<"footer"> & {
13
13
  brandName: string
14
14
  brandHref: string
15
15
  description: string
@@ -36,6 +36,7 @@ const {
36
36
  socials,
37
37
  columns,
38
38
  copyright,
39
+ ...props
39
40
  } = Astro.props
40
41
 
41
42
  const iconMap: Record<string, any> = {
@@ -45,7 +46,7 @@ const iconMap: Record<string, any> = {
45
46
  }
46
47
  ---
47
48
 
48
- <footer class={cn("", className)}>
49
+ <footer class={cn("", className)} {...props}>
49
50
  <Section class="py-16 lg:py-20">
50
51
  <SectionContainer>
51
52
  <div class="grid gap-10 lg:grid-cols-[1fr_2fr]">