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,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 { Badge } from "@/components/ui/badge"
@@ -13,10 +14,13 @@ import {
13
14
  CardTitle,
14
15
  } from "@/components/ui/card"
15
16
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
16
- import { Section, SectionContainer } from "@/components/ui/section"
17
+ import {
18
+ Section,
19
+ SectionContainer,
20
+ SectionTitle,
21
+ } from "@/components/ui/section"
17
22
 
18
- type Props = {
19
- class?: string
23
+ type Props = HTMLAttributes<"section"> & {
20
24
  badge: string
21
25
  title: string
22
26
  buttons: {
@@ -39,18 +43,23 @@ type Props = {
39
43
  }[]
40
44
  }
41
45
 
42
- const { class: className, badge, title, buttons, products } = Astro.props
46
+ const {
47
+ class: className,
48
+ badge,
49
+ title,
50
+ buttons,
51
+ products,
52
+ ...props
53
+ } = Astro.props
43
54
  ---
44
55
 
45
- <Section class={cn("", className)}>
56
+ <Section class={cn("", className)} {...props}>
46
57
  <SectionContainer class="gap-8">
47
58
  <div class="mx-auto max-w-2xl text-center">
48
59
  <Badge variant="secondary">{badge}</Badge>
49
- <h2
50
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
51
- >
60
+ <SectionTitle class="mt-4">
52
61
  {title}
53
- </h2>
62
+ </SectionTitle>
54
63
  <div class="mt-4 flex flex-wrap justify-center gap-3">
55
64
  {
56
65
  buttons.map(({ href, label, ...button }) => (
@@ -1,15 +1,20 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
+ import type { HTMLAttributes } from "astro/types"
3
4
  import QuoteIcon from "@lucide/astro/icons/quote"
4
5
 
5
6
  import { cn } from "@/lib/utils"
6
7
  import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
7
8
  import { Card, CardContent } from "@/components/ui/card"
8
9
  import { Rating } from "@/components/ui/rating"
9
- import { Section, SectionContainer } from "@/components/ui/section"
10
+ import {
11
+ Section,
12
+ SectionContainer,
13
+ SectionDescription,
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
  description?: string
15
20
  reviews: {
@@ -22,22 +27,18 @@ type Props = {
22
27
  }[]
23
28
  }
24
29
 
25
- const { class: className, title, description, reviews } = Astro.props
30
+ const { class: className, title, description, reviews, ...props } = Astro.props
26
31
  ---
27
32
 
28
- <Section class={cn("", className)}>
33
+ <Section class={cn("", className)} {...props}>
29
34
  {
30
35
  (title || description) && (
31
36
  <SectionContainer class="items-center gap-4 text-center">
32
- {title && (
33
- <h2 class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
34
- {title}
35
- </h2>
36
- )}
37
+ {title && <SectionTitle>{title}</SectionTitle>}
37
38
  {description && (
38
- <p class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance">
39
+ <SectionDescription class="max-w-2xl">
39
40
  {description}
40
- </p>
41
+ </SectionDescription>
41
42
  )}
42
43
  </SectionContainer>
43
44
  )
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
+ import type { HTMLAttributes } from "astro/types"
3
4
  import QuoteIcon from "@lucide/astro/icons/quote"
4
5
 
5
6
  import { cn } from "@/lib/utils"
@@ -8,8 +9,7 @@ import { Rating } from "@/components/ui/rating"
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<"section"> & {
13
13
  featured: {
14
14
  quote: string
15
15
  image?: ImageMetadata
@@ -27,10 +27,10 @@ type Props = {
27
27
  }[]
28
28
  }
29
29
 
30
- const { class: className, featured, reviews } = Astro.props
30
+ const { class: className, featured, reviews, ...props } = Astro.props
31
31
  ---
32
32
 
33
- <Section class={cn("", className)}>
33
+ <Section class={cn("", className)} {...props}>
34
34
  <SectionContainer
35
35
  class="grid gap-10 lg:grid-cols-[minmax(0,1.3fr)_minmax(0,1fr)] lg:items-start"
36
36
  >
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
+ import type { HTMLAttributes } from "astro/types"
3
4
  import QuoteIcon from "@lucide/astro/icons/quote"
4
5
 
5
6
  import { cn } from "@/lib/utils"
@@ -12,10 +13,14 @@ import {
12
13
  CarouselPrevious,
13
14
  } from "@/components/ui/carousel"
14
15
  import { Rating } from "@/components/ui/rating"
15
- import { Section, SectionContainer } from "@/components/ui/section"
16
+ import {
17
+ Section,
18
+ SectionContainer,
19
+ SectionDescription,
20
+ SectionTitle,
21
+ } from "@/components/ui/section"
16
22
 
17
- type Props = {
18
- class?: string
23
+ type Props = HTMLAttributes<"section"> & {
19
24
  title?: string
20
25
  description?: string
21
26
  reviews: {
@@ -28,22 +33,18 @@ type Props = {
28
33
  }[]
29
34
  }
30
35
 
31
- const { class: className, title, description, reviews } = Astro.props
36
+ const { class: className, title, description, reviews, ...props } = Astro.props
32
37
  ---
33
38
 
34
- <Section class={cn("", className)}>
39
+ <Section class={cn("", className)} {...props}>
35
40
  {
36
41
  (title || description) && (
37
42
  <SectionContainer class="items-center gap-4 text-center">
38
- {title && (
39
- <h2 class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
40
- {title}
41
- </h2>
42
- )}
43
+ {title && <SectionTitle>{title}</SectionTitle>}
43
44
  {description && (
44
- <p class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance">
45
+ <SectionDescription class="max-w-2xl">
45
46
  {description}
46
- </p>
47
+ </SectionDescription>
47
48
  )}
48
49
  </SectionContainer>
49
50
  )
@@ -1,15 +1,20 @@
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 { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
6
7
  import { Card, CardContent } from "@/components/ui/card"
7
8
  import { Marquee } from "@/components/ui/marquee"
8
9
  import { Rating } from "@/components/ui/rating"
9
- import { Section, SectionContainer } from "@/components/ui/section"
10
+ import {
11
+ Section,
12
+ SectionContainer,
13
+ SectionDescription,
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
  description?: string
15
20
  reviews: {
@@ -22,26 +27,22 @@ type Props = {
22
27
  }[]
23
28
  }
24
29
 
25
- const { class: className, title, description, reviews } = Astro.props
30
+ const { class: className, title, description, reviews, ...props } = Astro.props
26
31
 
27
32
  const half = Math.ceil(reviews.length / 2)
28
33
  const topRow = reviews.slice(0, half)
29
34
  const bottomRow = reviews.slice(half)
30
35
  ---
31
36
 
32
- <Section class={cn("", className)}>
37
+ <Section class={cn("", className)} {...props}>
33
38
  {
34
39
  (title || description) && (
35
40
  <SectionContainer class="items-center gap-4 text-center">
36
- {title && (
37
- <h2 class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
38
- {title}
39
- </h2>
40
- )}
41
+ {title && <SectionTitle>{title}</SectionTitle>}
41
42
  {description && (
42
- <p class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance">
43
+ <SectionDescription class="max-w-2xl">
43
44
  {description}
44
- </p>
45
+ </SectionDescription>
45
46
  )}
46
47
  </SectionContainer>
47
48
  )
@@ -1,15 +1,20 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
+ import type { HTMLAttributes } from "astro/types"
3
4
  import QuoteIcon from "@lucide/astro/icons/quote"
4
5
 
5
6
  import { cn } from "@/lib/utils"
6
7
  import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
7
8
  import { Marquee } from "@/components/ui/marquee"
8
9
  import { Rating } from "@/components/ui/rating"
9
- import { Section, SectionContainer } from "@/components/ui/section"
10
+ import {
11
+ Section,
12
+ SectionContainer,
13
+ SectionDescription,
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
  description?: string
15
20
  reviews: {
@@ -22,7 +27,7 @@ type Props = {
22
27
  }[]
23
28
  }
24
29
 
25
- const { class: className, title, description, reviews } = Astro.props
30
+ const { class: className, title, description, reviews, ...props } = Astro.props
26
31
 
27
32
  const third = Math.ceil(reviews.length / 3)
28
33
  const row1 = reviews.slice(0, third)
@@ -30,19 +35,15 @@ const row2 = reviews.slice(third, third * 2)
30
35
  const row3 = reviews.slice(third * 2)
31
36
  ---
32
37
 
33
- <Section class={cn("", className)}>
38
+ <Section class={cn("", className)} {...props}>
34
39
  {
35
40
  (title || description) && (
36
41
  <SectionContainer class="items-center gap-4 text-center">
37
- {title && (
38
- <h2 class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
39
- {title}
40
- </h2>
41
- )}
42
+ {title && <SectionTitle>{title}</SectionTitle>}
42
43
  {description && (
43
- <p class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance">
44
+ <SectionDescription class="max-w-2xl">
44
45
  {description}
45
- </p>
46
+ </SectionDescription>
46
47
  )}
47
48
  </SectionContainer>
48
49
  )
@@ -1,16 +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 ArrowRightIcon from "@lucide/astro/icons/arrow-right"
5
6
 
6
7
  import { cn } from "@/lib/utils"
7
8
  import { Badge } from "@/components/ui/badge"
8
9
  import { Button } from "@/components/ui/button"
9
- import { Section, SectionContainer } from "@/components/ui/section"
10
+ import { Icon } from "@/components/ui/icon"
11
+ import {
12
+ Section,
13
+ SectionContainer,
14
+ SectionTitle,
15
+ } from "@/components/ui/section"
10
16
  import PlaceholderImage from "@/assets/placeholder.webp"
11
17
 
12
- type Props = {
13
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
14
19
  badge?: string
15
20
  title: string
16
21
  buttons?: {
@@ -30,21 +35,26 @@ type Props = {
30
35
  }[]
31
36
  }
32
37
 
33
- const { class: className, badge, title, buttons, services } = Astro.props
38
+ const {
39
+ class: className,
40
+ badge,
41
+ title,
42
+ buttons,
43
+ services,
44
+ ...props
45
+ } = Astro.props
34
46
  ---
35
47
 
36
- <Section class={cn("", className)}>
48
+ <Section class={cn("", className)} {...props}>
37
49
  <SectionContainer class="gap-8">
38
50
  <div
39
51
  class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between"
40
52
  >
41
53
  <div class="max-w-2xl">
42
54
  {badge && <Badge variant="secondary">{badge}</Badge>}
43
- <h2
44
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
45
- >
55
+ <SectionTitle class="mt-4">
46
56
  {title}
47
- </h2>
57
+ </SectionTitle>
48
58
  </div>
49
59
  {
50
60
  buttons?.length && (
@@ -1,15 +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 { Badge } from "@/components/ui/badge"
7
8
  import { Button } from "@/components/ui/button"
8
- import { Section, SectionContainer } from "@/components/ui/section"
9
+ import {
10
+ Section,
11
+ SectionContainer,
12
+ SectionTitle,
13
+ } from "@/components/ui/section"
9
14
  import PlaceholderImage from "@/assets/placeholder.webp"
10
15
 
11
- type Props = {
12
- class?: string
16
+ type Props = HTMLAttributes<"section"> & {
13
17
  badge?: string
14
18
  title: string
15
19
  description?: string
@@ -40,18 +44,17 @@ const {
40
44
  description,
41
45
  buttons,
42
46
  services,
47
+ ...props
43
48
  } = Astro.props
44
49
  ---
45
50
 
46
- <Section class={cn("", className)}>
51
+ <Section class={cn("", className)} {...props}>
47
52
  <SectionContainer class="gap-12">
48
53
  <div class="mx-auto max-w-2xl text-center">
49
54
  {badge && <Badge variant="secondary">{badge}</Badge>}
50
- <h2
51
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
52
- >
55
+ <SectionTitle class="mt-4">
53
56
  {title}
54
- </h2>
57
+ </SectionTitle>
55
58
  {
56
59
  description && (
57
60
  <p class="text-muted-foreground mt-4 text-base leading-relaxed text-balance">
@@ -1,15 +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 { Badge } from "@/components/ui/badge"
7
8
  import { Button } from "@/components/ui/button"
8
- import { Section, SectionContainer } from "@/components/ui/section"
9
+ import {
10
+ Section,
11
+ SectionContainer,
12
+ SectionTitle,
13
+ } from "@/components/ui/section"
9
14
  import PlaceholderImage from "@/assets/placeholder.webp"
10
15
 
11
- type Props = {
12
- class?: string
16
+ type Props = HTMLAttributes<"section"> & {
13
17
  badge?: string
14
18
  title: string
15
19
  description?: string
@@ -39,18 +43,17 @@ const {
39
43
  description,
40
44
  buttons,
41
45
  services,
46
+ ...props
42
47
  } = Astro.props
43
48
  ---
44
49
 
45
- <Section class={cn("", className)}>
50
+ <Section class={cn("", className)} {...props}>
46
51
  <SectionContainer class="gap-8">
47
52
  <div class="mx-auto max-w-2xl text-center">
48
53
  {badge && <Badge variant="secondary">{badge}</Badge>}
49
- <h2
50
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
51
- >
54
+ <SectionTitle class="mt-4">
52
55
  {title}
53
- </h2>
56
+ </SectionTitle>
54
57
  {
55
58
  description && (
56
59
  <p class="text-muted-foreground mt-4 text-base leading-relaxed text-balance">
@@ -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 ArrowRightIcon from "@lucide/astro/icons/arrow-right"
5
6
 
6
7
  import { cn } from "@/lib/utils"
7
8
  import { Button } from "@/components/ui/button"
8
- import { Section, SectionContainer } from "@/components/ui/section"
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
  buttons?: {
@@ -28,20 +33,25 @@ type Props = {
28
33
  }[]
29
34
  }
30
35
 
31
- const { class: className, title, description, buttons, services } = Astro.props
36
+ const {
37
+ class: className,
38
+ title,
39
+ description,
40
+ buttons,
41
+ services,
42
+ ...props
43
+ } = Astro.props
32
44
  ---
33
45
 
34
- <Section class={cn("", className)}>
46
+ <Section class={cn("", className)} {...props}>
35
47
  <SectionContainer class="gap-8">
36
48
  <div
37
49
  class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between"
38
50
  >
39
51
  <div class="max-w-2xl">
40
- <h2
41
- class="text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
42
- >
52
+ <SectionTitle>
43
53
  {title}
44
- </h2>
54
+ </SectionTitle>
45
55
  {
46
56
  description && (
47
57
  <p class="text-muted-foreground mt-4 text-base leading-relaxed text-balance">
@@ -1,14 +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 { Badge } from "@/components/ui/badge"
6
7
  import { Button } from "@/components/ui/button"
7
8
  import { Icon } from "@/components/ui/icon"
8
- import { Section, SectionContainer } from "@/components/ui/section"
9
+ import {
10
+ Section,
11
+ SectionContainer,
12
+ SectionTitle,
13
+ } from "@/components/ui/section"
9
14
 
10
- type Props = {
11
- class?: string
15
+ type Props = HTMLAttributes<"section"> & {
12
16
  badge?: string
13
17
  title: string
14
18
  description?: string
@@ -32,18 +36,17 @@ const {
32
36
  description,
33
37
  buttons,
34
38
  services,
39
+ ...props
35
40
  } = Astro.props
36
41
  ---
37
42
 
38
- <Section class={cn("", className)}>
43
+ <Section class={cn("", className)} {...props}>
39
44
  <SectionContainer class="gap-12">
40
45
  <div class="mx-auto max-w-2xl text-center">
41
46
  {badge && <Badge variant="secondary">{badge}</Badge>}
42
- <h2
43
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
44
- >
47
+ <SectionTitle class="mt-4">
45
48
  {title}
46
- </h2>
49
+ </SectionTitle>
47
50
  {
48
51
  description && (
49
52
  <p class="text-muted-foreground mt-4 text-base leading-relaxed text-balance">
@@ -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
  import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
5
6
 
6
7
  import { cn } from "@/lib/utils"
@@ -9,8 +10,7 @@ import { Button } from "@/components/ui/button"
9
10
  import { Section, SectionContainer } from "@/components/ui/section"
10
11
  import PlaceholderImage from "@/assets/placeholder.webp"
11
12
 
12
- type Props = {
13
- class?: string
13
+ type Props = HTMLAttributes<"section"> & {
14
14
  badge?: string
15
15
  title: string
16
16
  description?: string
@@ -37,10 +37,11 @@ const {
37
37
  description,
38
38
  buttons,
39
39
  services,
40
+ ...props
40
41
  } = Astro.props
41
42
  ---
42
43
 
43
- <Section class={cn("", className)}>
44
+ <Section class={cn("", className)} {...props}>
44
45
  <SectionContainer
45
46
  class="grid gap-8 lg:grid-cols-[20rem_minmax(0,1fr)] lg:items-start"
46
47
  >
@@ -1,16 +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 ArrowRightIcon from "@lucide/astro/icons/arrow-right"
5
6
 
6
7
  import { cn } from "@/lib/utils"
7
8
  import { Badge } from "@/components/ui/badge"
8
9
  import { Button } from "@/components/ui/button"
9
- import { Section, SectionContainer } from "@/components/ui/section"
10
+ import { Icon } from "@/components/ui/icon"
11
+ import {
12
+ Section,
13
+ SectionContainer,
14
+ SectionTitle,
15
+ } from "@/components/ui/section"
10
16
  import PlaceholderImage from "@/assets/placeholder.webp"
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
@@ -38,21 +43,20 @@ const {
38
43
  description,
39
44
  buttons,
40
45
  services,
46
+ ...props
41
47
  } = Astro.props
42
48
  ---
43
49
 
44
- <Section class={cn("", className)}>
50
+ <Section class={cn("", className)} {...props}>
45
51
  <SectionContainer class="gap-8">
46
52
  <div
47
53
  class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between"
48
54
  >
49
55
  <div class="max-w-2xl">
50
56
  {badge && <Badge variant="secondary">{badge}</Badge>}
51
- <h2
52
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
53
- >
57
+ <SectionTitle class="mt-4">
54
58
  {title}
55
- </h2>
59
+ </SectionTitle>
56
60
  {
57
61
  description && (
58
62
  <p class="text-muted-foreground mt-4 text-base leading-relaxed text-balance">
@@ -49,4 +49,5 @@ const serializedDefaultValue = Array.isArray(defaultValue)
49
49
  import { create } from "@data-slot/accordion"
50
50
 
51
51
  create()
52
+ document.addEventListener("astro:page-load", () => create())
52
53
  </script>
@@ -34,4 +34,5 @@ const {
34
34
  import { create } from "@data-slot/alert-dialog"
35
35
 
36
36
  create()
37
+ document.addEventListener("astro:page-load", () => create())
37
38
  </script>
@@ -30,4 +30,5 @@ const {
30
30
  import { create } from "@data-slot/collapsible"
31
31
 
32
32
  create()
33
+ document.addEventListener("astro:page-load", () => create())
33
34
  </script>
@@ -37,4 +37,5 @@ const {
37
37
  import { create } from "@data-slot/dialog"
38
38
 
39
39
  create()
40
+ document.addEventListener("astro:page-load", () => create())
40
41
  </script>
@@ -68,4 +68,5 @@ const defaultValuesAttr =
68
68
  import { create } from "@data-slot/dropdown-menu"
69
69
 
70
70
  create()
71
+ document.addEventListener("astro:page-load", () => create())
71
72
  </script>