fulldev-ui 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) 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 +8 -2
  5. package/public/r/alert-dialog.json +9 -3
  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 +9 -3
  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 +9 -2
  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 +11 -5
  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 +9 -3
  129. package/public/r/sidebar-1.json +5 -0
  130. package/public/r/sidebar.json +9 -3
  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 +8 -2
  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 +1138 -455
  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-content.astro +2 -1
  228. package/src/components/ui/accordion/accordion.astro +1 -0
  229. package/src/components/ui/alert-dialog/alert-dialog-content.astro +1 -1
  230. package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +1 -1
  231. package/src/components/ui/alert-dialog/alert-dialog.astro +1 -0
  232. package/src/components/ui/collapsible/collapsible.astro +1 -0
  233. package/src/components/ui/dialog/dialog-content.astro +1 -1
  234. package/src/components/ui/dialog/dialog-overlay.astro +1 -1
  235. package/src/components/ui/dialog/dialog.astro +1 -0
  236. package/src/components/ui/dropdown-menu/dropdown-menu.astro +1 -0
  237. package/src/components/ui/hover-card/hover-card.astro +10 -3
  238. package/src/components/ui/icon/icon.astro +46 -29
  239. package/src/components/ui/navigation-menu/navigation-menu-content.astro +2 -0
  240. package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +2 -1
  241. package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
  242. package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +2 -0
  243. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -0
  244. package/src/components/ui/popover/popover.astro +1 -0
  245. package/src/components/ui/radio-group/radio-group.astro +1 -0
  246. package/src/components/ui/section/index.ts +2 -0
  247. package/src/components/ui/section/section-container.astro +1 -0
  248. package/src/components/ui/section/section-description.astro +20 -0
  249. package/src/components/ui/section/section-title.astro +20 -0
  250. package/src/components/ui/sheet/sheet-close.astro +4 -2
  251. package/src/components/ui/sheet/sheet-content.astro +2 -2
  252. package/src/components/ui/sheet/sheet.astro +2 -89
  253. package/src/components/ui/sidebar/sidebar-menu-button.astro +0 -1
  254. package/src/components/ui/sidebar/sidebar-provider.astro +36 -2
  255. package/src/components/ui/sidebar/sidebar.astro +0 -1
  256. package/src/components/ui/slider/slider.astro +4 -3
  257. package/src/components/ui/switch/switch.astro +5 -2
  258. package/src/components/ui/tabs/tabs-content.astro +2 -1
  259. package/src/components/ui/tabs/tabs.astro +1 -0
  260. package/src/components/ui/toggle/toggle.astro +3 -0
  261. package/src/components/ui/tooltip/tooltip.astro +1 -0
  262. 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
  import { CheckIcon } from "@lucide/astro"
5
6
 
6
7
  import { cn } from "@/lib/utils"
@@ -14,8 +15,7 @@ import { Button } from "@/components/ui/button"
14
15
  import { Rating } from "@/components/ui/rating"
15
16
  import { Section, SectionContainer } from "@/components/ui/section"
16
17
 
17
- type Props = {
18
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
19
19
  title: string
20
20
  description: string
21
21
  features: string[]
@@ -47,10 +47,11 @@ const {
47
47
  buttons,
48
48
  socialProof,
49
49
  image,
50
+ ...props
50
51
  } = Astro.props
51
52
  ---
52
53
 
53
- <Section class={cn("", className)}>
54
+ <Section class={cn("", className)} {...props}>
54
55
  <SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
55
56
  <Image
56
57
  src={image.src}
@@ -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 { CheckIcon } from "@lucide/astro"
5
6
 
6
7
  import { cn } from "@/lib/utils"
@@ -14,8 +15,7 @@ import { Button } from "@/components/ui/button"
14
15
  import { Rating } from "@/components/ui/rating"
15
16
  import { Section, SectionContainer } from "@/components/ui/section"
16
17
 
17
- type Props = {
18
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
19
19
  title: string
20
20
  description: string
21
21
  features: string[]
@@ -47,10 +47,11 @@ const {
47
47
  buttons,
48
48
  socialProof,
49
49
  image,
50
+ ...props
50
51
  } = Astro.props
51
52
  ---
52
53
 
53
- <Section class={cn("", className)}>
54
+ <Section class={cn("", className)} {...props}>
54
55
  <SectionContainer
55
56
  class="grid gap-12 lg:grid-cols-[2fr_3fr] lg:items-center lg:gap-0"
56
57
  >
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
3
  import { Image } from "astro:assets"
4
+ import type { HTMLAttributes } from "astro/types"
4
5
 
5
6
  import { cn } from "@/lib/utils"
6
7
  import { Button } from "@/components/ui/button"
7
8
  import { Section, SectionContainer } from "@/components/ui/section"
8
9
 
9
- type Props = {
10
- class?: string
10
+ type Props = HTMLAttributes<"section"> & {
11
11
  title: string
12
12
  description: string
13
13
  buttons: {
@@ -21,10 +21,17 @@ type Props = {
21
21
  }
22
22
  }
23
23
 
24
- const { class: className, title, description, buttons, image } = Astro.props
24
+ const {
25
+ class: className,
26
+ title,
27
+ description,
28
+ buttons,
29
+ image,
30
+ ...props
31
+ } = Astro.props
25
32
  ---
26
33
 
27
- <Section class={cn("", className)}>
34
+ <Section class={cn("", className)} {...props}>
28
35
  <SectionContainer
29
36
  class="grid gap-12 lg:grid-cols-[1fr_3fr] lg:items-center lg:gap-0"
30
37
  >
@@ -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 { CheckIcon } from "@lucide/astro"
5
6
 
6
7
  import { cn } from "@/lib/utils"
@@ -14,8 +15,7 @@ import { Button } from "@/components/ui/button"
14
15
  import { Rating } from "@/components/ui/rating"
15
16
  import { Section, SectionContainer } from "@/components/ui/section"
16
17
 
17
- type Props = {
18
- class?: string
18
+ type Props = HTMLAttributes<"section"> & {
19
19
  title: string
20
20
  description: string
21
21
  features: string[]
@@ -47,10 +47,11 @@ const {
47
47
  buttons,
48
48
  socialProof,
49
49
  image,
50
+ ...props
50
51
  } = Astro.props
51
52
  ---
52
53
 
53
- <Section class={cn("dark bg-background", className)}>
54
+ <Section class={cn("dark bg-background", className)} {...props}>
54
55
  <SectionContainer class="grid gap-12 lg:grid-cols-2 lg:items-center">
55
56
  <div class="relative z-10 flex flex-col gap-6">
56
57
  <div class="flex flex-col gap-4">
@@ -1,11 +1,11 @@
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 { Section, SectionContainer } from "@/components/ui/section"
6
7
 
7
- type Props = {
8
- class?: string
8
+ type Props = HTMLAttributes<"section"> & {
9
9
  title: string
10
10
  description: string
11
11
  links: {
@@ -16,10 +16,10 @@ type Props = {
16
16
  }[]
17
17
  }
18
18
 
19
- const { class: className, title, description, links } = Astro.props
19
+ const { class: className, title, description, links, ...props } = Astro.props
20
20
  ---
21
21
 
22
- <Section class={cn("", className)}>
22
+ <Section class={cn("", className)} {...props}>
23
23
  <SectionContainer class="gap-10">
24
24
  <div class="flex min-w-0 flex-col gap-4 border-b pb-8">
25
25
  <h2
@@ -1,10 +1,16 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Logo, LogoText } from "@/components/ui/logo"
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
  brands: {
@@ -13,24 +19,16 @@ type Props = {
13
19
  }[]
14
20
  }
15
21
 
16
- const { class: className, title, description, brands } = Astro.props
22
+ const { class: className, title, description, brands, ...props } = Astro.props
17
23
  ---
18
24
 
19
- <Section class={cn("", className)}>
25
+ <Section class={cn("", className)} {...props}>
20
26
  <SectionContainer class="items-center gap-10 text-center">
21
27
  <div class="flex max-w-2xl flex-col items-center gap-4">
22
- <h2
23
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
24
- >
28
+ <SectionTitle>
25
29
  {title}
26
- </h2>
27
- {
28
- description && (
29
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
30
- {description}
31
- </p>
32
- )
33
- }
30
+ </SectionTitle>
31
+ {description && <SectionDescription>{description}</SectionDescription>}
34
32
  </div>
35
33
  <div
36
34
  class="text-muted-foreground flex w-full flex-wrap items-center justify-center gap-x-12 gap-y-6"
@@ -1,11 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Logo, LogoText } from "@/components/ui/logo"
4
6
  import { Marquee } from "@/components/ui/marquee"
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
  brands: {
@@ -14,22 +20,18 @@ type Props = {
14
20
  }[]
15
21
  }
16
22
 
17
- const { class: className, title, description, brands } = Astro.props
23
+ const { class: className, title, description, brands, ...props } = Astro.props
18
24
  ---
19
25
 
20
- <Section class={cn("", className)}>
26
+ <Section class={cn("", className)} {...props}>
21
27
  {
22
28
  (title || description) && (
23
29
  <SectionContainer class="items-center gap-4 text-center">
24
- {title && (
25
- <h2 class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl">
26
- {title}
27
- </h2>
28
- )}
30
+ {title && <SectionTitle>{title}</SectionTitle>}
29
31
  {description && (
30
- <p class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance">
32
+ <SectionDescription class="max-w-2xl">
31
33
  {description}
32
- </p>
34
+ </SectionDescription>
33
35
  )}
34
36
  </SectionContainer>
35
37
  )
@@ -1,20 +1,21 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Logo, LogoText } from "@/components/ui/logo"
4
6
  import { Section, SectionContainer } from "@/components/ui/section"
5
7
 
6
- type Props = {
7
- class?: string
8
+ type Props = HTMLAttributes<"section"> & {
8
9
  brands: {
9
10
  name: string
10
11
  href?: string
11
12
  }[]
12
13
  }
13
14
 
14
- const { class: className, brands } = Astro.props
15
+ const { class: className, brands, ...props } = Astro.props
15
16
  ---
16
17
 
17
- <Section class={cn("py-12 lg:py-16", className)}>
18
+ <Section class={cn("py-12 lg:py-16", className)} {...props}>
18
19
  <SectionContainer>
19
20
  <div
20
21
  class="text-muted-foreground flex flex-wrap items-center justify-center gap-x-12 gap-y-6"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import { CheckIcon } from "@lucide/astro"
3
4
 
4
5
  import { cn } from "@/lib/utils"
@@ -13,11 +14,15 @@ 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
+ SectionDescription,
21
+ SectionTitle,
22
+ } from "@/components/ui/section"
17
23
  import { Separator } from "@/components/ui/separator"
18
24
 
19
- type Props = {
20
- class?: string
25
+ type Props = HTMLAttributes<"section"> & {
21
26
  title: string
22
27
  description?: string
23
28
  plans: {
@@ -36,24 +41,16 @@ type Props = {
36
41
  }[]
37
42
  }
38
43
 
39
- const { class: className, title, description, plans } = Astro.props
44
+ const { class: className, title, description, plans, ...props } = Astro.props
40
45
  ---
41
46
 
42
- <Section class={cn("", className)}>
47
+ <Section class={cn("", className)} {...props}>
43
48
  <SectionContainer class="items-center gap-8 text-center">
44
49
  <div class="flex max-w-2xl flex-col items-center gap-4">
45
- <h2
46
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
47
- >
50
+ <SectionTitle>
48
51
  {title}
49
- </h2>
50
- {
51
- description && (
52
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
53
- {description}
54
- </p>
55
- )
56
- }
52
+ </SectionTitle>
53
+ {description && <SectionDescription>{description}</SectionDescription>}
57
54
  </div>
58
55
  </SectionContainer>
59
56
  <SectionContainer>
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import { CheckIcon } from "@lucide/astro"
3
4
 
4
5
  import { cn } from "@/lib/utils"
@@ -12,11 +13,15 @@ import {
12
13
  CardTitle,
13
14
  } from "@/components/ui/card"
14
15
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
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
  import { Separator } from "@/components/ui/separator"
17
23
 
18
- type Props = {
19
- class?: string
24
+ type Props = HTMLAttributes<"section"> & {
20
25
  title: string
21
26
  description: string
22
27
  plans: {
@@ -35,22 +40,18 @@ type Props = {
35
40
  }[]
36
41
  }
37
42
 
38
- const { class: className, title, description, plans } = Astro.props
43
+ const { class: className, title, description, plans, ...props } = Astro.props
39
44
  ---
40
45
 
41
- <Section class={cn("", className)}>
46
+ <Section class={cn("", className)} {...props}>
42
47
  <SectionContainer class="gap-8">
43
48
  <div class="mx-auto max-w-2xl text-center">
44
- <h2
45
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
46
- >
49
+ <SectionTitle>
47
50
  {title}
48
- </h2>
49
- <p
50
- class="text-muted-foreground mt-4 text-lg leading-relaxed text-balance"
51
- >
51
+ </SectionTitle>
52
+ <SectionDescription class="mt-4">
52
53
  {description}
53
- </p>
54
+ </SectionDescription>
54
55
  </div>
55
56
  <div
56
57
  class="mx-auto grid w-full justify-center gap-6 sm:grid-cols-2 lg:grid-cols-[repeat(auto-fit,minmax(16rem,18rem))]"
@@ -1,4 +1,5 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
2
3
  import { CheckIcon } from "@lucide/astro"
3
4
 
4
5
  import { cn } from "@/lib/utils"
@@ -13,11 +14,15 @@ 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
+ SectionDescription,
21
+ SectionTitle,
22
+ } from "@/components/ui/section"
17
23
  import { Separator } from "@/components/ui/separator"
18
24
 
19
- type Props = {
20
- class?: string
25
+ type Props = HTMLAttributes<"section"> & {
21
26
  badge?: string
22
27
  title: string
23
28
  description?: string
@@ -36,25 +41,24 @@ type Props = {
36
41
  }
37
42
  }
38
43
 
39
- const { class: className, badge, title, description, offer } = Astro.props
44
+ const {
45
+ class: className,
46
+ badge,
47
+ title,
48
+ description,
49
+ offer,
50
+ ...props
51
+ } = Astro.props
40
52
  ---
41
53
 
42
- <Section class={cn("", className)}>
54
+ <Section class={cn("", className)} {...props}>
43
55
  <SectionContainer class="items-center gap-8 text-center">
44
56
  <div class="flex max-w-2xl flex-col items-center gap-4">
45
57
  {badge && <Badge variant="secondary">{badge}</Badge>}
46
- <h2
47
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
48
- >
58
+ <SectionTitle>
49
59
  {title}
50
- </h2>
51
- {
52
- description && (
53
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
54
- {description}
55
- </p>
56
- )
57
- }
60
+ </SectionTitle>
61
+ {description && <SectionDescription>{description}</SectionDescription>}
58
62
  </div>
59
63
  <Card class="ring-primary w-full max-w-md ring-2">
60
64
  <CardHeader class="text-left">
@@ -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"
@@ -8,8 +9,7 @@ import { Button } from "@/components/ui/button"
8
9
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
9
10
  import { Section, SectionContainer } from "@/components/ui/section"
10
11
 
11
- type Props = {
12
- class?: string
12
+ type Props = HTMLAttributes<"section"> & {
13
13
  badge: string
14
14
  title: string
15
15
  description: string
@@ -39,10 +39,11 @@ const {
39
39
  price,
40
40
  note,
41
41
  buttons,
42
+ ...props
42
43
  } = Astro.props
43
44
  ---
44
45
 
45
- <Section class={cn("", className)}>
46
+ <Section class={cn("", className)} {...props}>
46
47
  <SectionContainer class="grid gap-8 lg:grid-cols-2 lg:items-center">
47
48
  <Image
48
49
  src={image.src}
@@ -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"
@@ -12,10 +13,13 @@ import {
12
13
  CardTitle,
13
14
  } from "@/components/ui/card"
14
15
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
15
- import { Section, SectionContainer } from "@/components/ui/section"
16
+ import {
17
+ Section,
18
+ SectionContainer,
19
+ SectionTitle,
20
+ } from "@/components/ui/section"
16
21
 
17
- type Props = {
18
- class?: string
22
+ type Props = HTMLAttributes<"section"> & {
19
23
  badge: string
20
24
  title: string
21
25
  products: {
@@ -33,18 +37,16 @@ type Props = {
33
37
  }[]
34
38
  }
35
39
 
36
- const { class: className, badge, title, products } = Astro.props
40
+ const { class: className, badge, title, products, ...props } = Astro.props
37
41
  ---
38
42
 
39
- <Section class={cn("", className)}>
43
+ <Section class={cn("", className)} {...props}>
40
44
  <SectionContainer class="gap-8">
41
45
  <div class="mx-auto max-w-2xl text-center">
42
46
  <Badge variant="secondary">{badge}</Badge>
43
- <h2
44
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
45
- >
47
+ <SectionTitle class="mt-4">
46
48
  {title}
47
- </h2>
49
+ </SectionTitle>
48
50
  </div>
49
51
  <div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
50
52
  {
@@ -1,12 +1,17 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Badge } from "@/components/ui/badge"
4
6
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
5
- import { Section, SectionContainer } from "@/components/ui/section"
7
+ import {
8
+ Section,
9
+ SectionContainer,
10
+ SectionTitle,
11
+ } from "@/components/ui/section"
6
12
  import { Separator } from "@/components/ui/separator"
7
13
 
8
- type Props = {
9
- class?: string
14
+ type Props = HTMLAttributes<"section"> & {
10
15
  badge: string
11
16
  title: string
12
17
  products: {
@@ -20,18 +25,16 @@ type Props = {
20
25
  }[]
21
26
  }
22
27
 
23
- const { class: className, badge, title, products } = Astro.props
28
+ const { class: className, badge, title, products, ...props } = Astro.props
24
29
  ---
25
30
 
26
- <Section class={cn("", className)}>
31
+ <Section class={cn("", className)} {...props}>
27
32
  <SectionContainer class="gap-8">
28
33
  <div class="max-w-2xl">
29
34
  <Badge variant="secondary">{badge}</Badge>
30
- <h2
31
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
32
- >
35
+ <SectionTitle class="mt-4">
33
36
  {title}
34
- </h2>
37
+ </SectionTitle>
35
38
  </div>
36
39
  <div class="grid gap-3">
37
40
  {
@@ -1,4 +1,6 @@
1
1
  ---
2
+ import type { HTMLAttributes } from "astro/types"
3
+
2
4
  import { cn } from "@/lib/utils"
3
5
  import { Badge } from "@/components/ui/badge"
4
6
  import {
@@ -9,10 +11,13 @@ import {
9
11
  CardTitle,
10
12
  } from "@/components/ui/card"
11
13
  import { Price, PriceValue } from "@/components/ui/price"
12
- import { Section, SectionContainer } from "@/components/ui/section"
14
+ import {
15
+ Section,
16
+ SectionContainer,
17
+ SectionTitle,
18
+ } from "@/components/ui/section"
13
19
 
14
- type Props = {
15
- class?: string
20
+ type Props = HTMLAttributes<"section"> & {
16
21
  badge: string
17
22
  title: string
18
23
  products: {
@@ -25,18 +30,16 @@ type Props = {
25
30
  }[]
26
31
  }
27
32
 
28
- const { class: className, badge, title, products } = Astro.props
33
+ const { class: className, badge, title, products, ...props } = Astro.props
29
34
  ---
30
35
 
31
- <Section class={cn("", className)}>
36
+ <Section class={cn("", className)} {...props}>
32
37
  <SectionContainer class="gap-8">
33
38
  <div class="mx-auto max-w-2xl text-center">
34
39
  <Badge variant="secondary">{badge}</Badge>
35
- <h2
36
- class="mt-4 text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
37
- >
40
+ <SectionTitle class="mt-4">
38
41
  {title}
39
- </h2>
42
+ </SectionTitle>
40
43
  </div>
41
44
  <div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
42
45
  {
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
3
  import { Image } from "astro:assets"
4
+ import type { HTMLAttributes } from "astro/types"
4
5
 
5
6
  import { cn } from "@/lib/utils"
6
7
  import { Button } from "@/components/ui/button"
@@ -12,10 +13,13 @@ import {
12
13
  CardTitle,
13
14
  } from "@/components/ui/card"
14
15
  import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
15
- import { Section, SectionContainer } from "@/components/ui/section"
16
+ import {
17
+ Section,
18
+ SectionContainer,
19
+ SectionTitle,
20
+ } from "@/components/ui/section"
16
21
 
17
- type Props = {
18
- class?: string
22
+ type Props = HTMLAttributes<"section"> & {
19
23
  title: string
20
24
  description: string
21
25
  buttons: {
@@ -38,20 +42,25 @@ type Props = {
38
42
  }[]
39
43
  }
40
44
 
41
- const { class: className, title, description, buttons, products } = Astro.props
45
+ const {
46
+ class: className,
47
+ title,
48
+ description,
49
+ buttons,
50
+ products,
51
+ ...props
52
+ } = Astro.props
42
53
  ---
43
54
 
44
- <Section class={cn("", className)}>
55
+ <Section class={cn("", className)} {...props}>
45
56
  <SectionContainer class="gap-8">
46
57
  <div
47
58
  class="flex flex-col gap-4 md:flex-row md:items-end md:justify-between"
48
59
  >
49
60
  <div class="max-w-2xl">
50
- <h2
51
- class="text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
52
- >
61
+ <SectionTitle>
53
62
  {title}
54
- </h2>
63
+ </SectionTitle>
55
64
  <p class="text-muted-foreground mt-3 text-lg leading-8">
56
65
  {description}
57
66
  </p>