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,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
@@ -33,6 +33,7 @@ const {
33
33
  links,
34
34
  socials,
35
35
  copyright,
36
+ ...props
36
37
  } = Astro.props
37
38
 
38
39
  const iconMap: Record<string, any> = {
@@ -42,7 +43,7 @@ const iconMap: Record<string, any> = {
42
43
  }
43
44
  ---
44
45
 
45
- <footer class={cn("", className)}>
46
+ <footer class={cn("", className)} {...props}>
46
47
  <Section class="py-12 lg:py-16">
47
48
  <SectionContainer class="items-center text-center">
48
49
  <Logo href={brandHref}>
@@ -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
@@ -41,6 +41,7 @@ const {
41
41
  columns,
42
42
  copyright,
43
43
  bottomLinks,
44
+ ...props
44
45
  } = Astro.props
45
46
 
46
47
  const iconMap: Record<string, any> = {
@@ -50,7 +51,7 @@ const iconMap: Record<string, any> = {
50
51
  }
51
52
  ---
52
53
 
53
- <footer class={cn("", className)}>
54
+ <footer class={cn("", className)} {...props}>
54
55
  <Section class="py-16 lg:py-20">
55
56
  <SectionContainer>
56
57
  <div class="grid gap-10 lg:grid-cols-[1fr_2fr]">
@@ -1,4 +1,6 @@
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 { Header, HeaderContainer, HeaderGroup } from "@/components/ui/header"
@@ -20,8 +22,7 @@ import {
20
22
  SheetTrigger,
21
23
  } from "@/components/ui/sheet"
22
24
 
23
- type Props = {
24
- class?: string
25
+ type Props = HTMLAttributes<"header"> & {
25
26
  logo: {
26
27
  label: string
27
28
  href: string
@@ -46,11 +47,11 @@ type Props = {
46
47
  }[]
47
48
  }
48
49
 
49
- const { class: className, logo, navigation, buttons } = Astro.props
50
+ const { class: className, logo, navigation, buttons, ...props } = Astro.props
50
51
  ---
51
52
 
52
- <Header class={cn("", className)}>
53
- <HeaderContainer class="justify-between gap-4">
53
+ <Header class={cn("", className)} {...props}>
54
+ <HeaderContainer class="items-center justify-between gap-4">
54
55
  <HeaderGroup>
55
56
  <Logo href={logo.href}>
56
57
  <LogoImage
@@ -111,14 +112,19 @@ const { class: className, logo, navigation, buttons } = Astro.props
111
112
  <nav aria-label="Main navigation" class="flex flex-col gap-1">
112
113
  {
113
114
  navigation.map((item) => (
114
- <SheetClose variant="ghost" class="justify-start">
115
+ <SheetClose
116
+ as="a"
117
+ href={item.href}
118
+ variant="ghost"
119
+ class="justify-start"
120
+ >
115
121
  {item.label}
116
122
  </SheetClose>
117
123
  ))
118
124
  }
119
125
  </nav>
120
126
  <div class="mt-auto flex flex-col gap-2">
121
- <slot />
127
+ <slot name="mobile" />
122
128
  </div>
123
129
  </div>
124
130
  </SheetContent>
@@ -1,4 +1,6 @@
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 { Header, HeaderContainer, HeaderGroup } from "@/components/ui/header"
@@ -20,8 +22,7 @@ import {
20
22
  SheetTrigger,
21
23
  } from "@/components/ui/sheet"
22
24
 
23
- type Props = {
24
- class?: string
25
+ type Props = HTMLAttributes<"header"> & {
25
26
  logo: {
26
27
  label: string
27
28
  href: string
@@ -46,10 +47,10 @@ type Props = {
46
47
  }[]
47
48
  }
48
49
 
49
- const { class: className, logo, navigation, buttons } = Astro.props
50
+ const { class: className, logo, navigation, buttons, ...props } = Astro.props
50
51
  ---
51
52
 
52
- <Header variant="floating" class={cn("", className)}>
53
+ <Header variant="floating" class={cn("", className)} {...props}>
53
54
  <HeaderContainer class="justify-between">
54
55
  <HeaderGroup>
55
56
  <Logo href={logo.href}>
@@ -113,14 +114,19 @@ const { class: className, logo, navigation, buttons } = Astro.props
113
114
  <nav aria-label="Main navigation" class="flex flex-col gap-1">
114
115
  {
115
116
  navigation.map((item) => (
116
- <SheetClose variant="ghost" class="justify-start">
117
+ <SheetClose
118
+ as="a"
119
+ href={item.href}
120
+ variant="ghost"
121
+ class="justify-start"
122
+ >
117
123
  {item.label}
118
124
  </SheetClose>
119
125
  ))
120
126
  }
121
127
  </nav>
122
128
  <div class="mt-auto flex flex-col gap-2">
123
- <slot />
129
+ <slot name="mobile" />
124
130
  </div>
125
131
  </div>
126
132
  </SheetContent>
@@ -1,4 +1,6 @@
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 { Header, HeaderContainer, HeaderGroup } from "@/components/ui/header"
@@ -21,8 +23,7 @@ import {
21
23
  SheetTrigger,
22
24
  } from "@/components/ui/sheet"
23
25
 
24
- type Props = {
25
- class?: string
26
+ type Props = HTMLAttributes<"header"> & {
26
27
  logo: {
27
28
  label: string
28
29
  href: string
@@ -47,10 +48,10 @@ type Props = {
47
48
  }[]
48
49
  }
49
50
 
50
- const { class: className, logo, navigation, buttons } = Astro.props
51
+ const { class: className, logo, navigation, buttons, ...props } = Astro.props
51
52
  ---
52
53
 
53
- <Header class={cn("border-b", className)}>
54
+ <Header class={cn("border-b", className)} {...props}>
54
55
  <HeaderContainer class="justify-between">
55
56
  <HeaderGroup>
56
57
  <Logo href={logo.href}>
@@ -116,7 +117,12 @@ const { class: className, logo, navigation, buttons } = Astro.props
116
117
  <nav aria-label="Main navigation" class="flex flex-col gap-1">
117
118
  {
118
119
  navigation.map((item) => (
119
- <SheetClose variant="ghost" class="justify-start">
120
+ <SheetClose
121
+ as="a"
122
+ href={item.href}
123
+ variant="ghost"
124
+ class="justify-start"
125
+ >
120
126
  {item.label}
121
127
  </SheetClose>
122
128
  ))
@@ -124,7 +130,7 @@ const { class: className, logo, navigation, buttons } = Astro.props
124
130
  </nav>
125
131
  <Separator />
126
132
  <div class="mt-auto flex flex-col gap-2">
127
- <slot />
133
+ <slot name="mobile" />
128
134
  </div>
129
135
  </div>
130
136
  </SheetContent>
@@ -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"
@@ -26,8 +27,7 @@ import {
26
27
  SheetTrigger,
27
28
  } from "@/components/ui/sheet"
28
29
 
29
- type Props = {
30
- class?: string
30
+ type Props = HTMLAttributes<"header"> & {
31
31
  logo: {
32
32
  label: string
33
33
  href: string
@@ -61,10 +61,10 @@ type Props = {
61
61
  }[]
62
62
  }
63
63
 
64
- const { class: className, logo, navigation, buttons } = Astro.props
64
+ const { class: className, logo, navigation, buttons, ...props } = Astro.props
65
65
  ---
66
66
 
67
- <Header class={cn("border-b", className)}>
67
+ <Header class={cn("border-b", className)} {...props}>
68
68
  <HeaderContainer class="justify-between">
69
69
  <HeaderGroup>
70
70
  <Logo href={logo.href}>
@@ -189,13 +189,20 @@ const { class: className, logo, navigation, buttons } = Astro.props
189
189
  {
190
190
  navigation.map((item) => (
191
191
  <div class="grid gap-1">
192
- <SheetClose variant="ghost" class="justify-start font-medium">
192
+ <SheetClose
193
+ as="a"
194
+ href={item.href}
195
+ variant="ghost"
196
+ class="justify-start font-medium"
197
+ >
193
198
  {item.label}
194
199
  </SheetClose>
195
200
  {item.links?.length && (
196
201
  <div class="border-border ml-3 grid gap-1 border-l pl-3">
197
202
  {item.links.map((link) => (
198
203
  <SheetClose
204
+ as="a"
205
+ href={link.href}
199
206
  variant="ghost"
200
207
  class="text-muted-foreground justify-start"
201
208
  >
@@ -210,7 +217,7 @@ const { class: className, logo, navigation, buttons } = Astro.props
210
217
  }
211
218
  </nav>
212
219
  <div class="mt-auto flex flex-col gap-2">
213
- <slot />
220
+ <slot name="mobile" />
214
221
  </div>
215
222
  </div>
216
223
  </SheetContent>
@@ -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"
@@ -27,8 +28,7 @@ import {
27
28
  SheetTrigger,
28
29
  } from "@/components/ui/sheet"
29
30
 
30
- type Props = {
31
- class?: string
31
+ type Props = HTMLAttributes<"header"> & {
32
32
  logo: {
33
33
  label: string
34
34
  href: string
@@ -62,10 +62,13 @@ type Props = {
62
62
  }[]
63
63
  }
64
64
 
65
- const { class: className, logo, navigation, buttons } = Astro.props
65
+ const { class: className, logo, navigation, buttons, ...props } = Astro.props
66
66
  ---
67
67
 
68
- <Header class={cn("flex-col items-stretch gap-0 border-b py-0", className)}>
68
+ <Header
69
+ class={cn("flex-col items-stretch gap-0 border-b py-0", className)}
70
+ {...props}
71
+ >
69
72
  <HeaderContainer class="min-h-14 justify-between">
70
73
  <HeaderGroup>
71
74
  <Logo href={logo.href}>
@@ -115,13 +118,20 @@ const { class: className, logo, navigation, buttons } = Astro.props
115
118
  {
116
119
  navigation.map((item) => (
117
120
  <div class="grid gap-1">
118
- <SheetClose variant="ghost" class="justify-start font-medium">
121
+ <SheetClose
122
+ as="a"
123
+ href={item.href}
124
+ variant="ghost"
125
+ class="justify-start font-medium"
126
+ >
119
127
  {item.label}
120
128
  </SheetClose>
121
129
  {item.links?.length && (
122
130
  <div class="border-border ml-3 grid gap-1 border-l pl-3">
123
131
  {item.links.map((link) => (
124
132
  <SheetClose
133
+ as="a"
134
+ href={link.href}
125
135
  variant="ghost"
126
136
  class="text-muted-foreground justify-start"
127
137
  >
@@ -137,7 +147,7 @@ const { class: className, logo, navigation, buttons } = Astro.props
137
147
  </nav>
138
148
  <Separator />
139
149
  <div class="mt-auto flex flex-col gap-2">
140
- <slot />
150
+ <slot name="mobile" />
141
151
  </div>
142
152
  </div>
143
153
  </SheetContent>
@@ -1,14 +1,18 @@
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
+ SectionDescription,
13
+ } from "@/components/ui/section"
9
14
 
10
- type Props = {
11
- class?: string
15
+ type Props = HTMLAttributes<"section"> & {
12
16
  title: string
13
17
  description: string
14
18
  badge?: {
@@ -33,10 +37,11 @@ const {
33
37
  badge,
34
38
  buttons,
35
39
  image,
40
+ ...props
36
41
  } = Astro.props
37
42
  ---
38
43
 
39
- <Section class={cn("", className)}>
44
+ <Section class={cn("", className)} {...props}>
40
45
  <SectionContainer class="items-center gap-8 text-center">
41
46
  {
42
47
  badge && (
@@ -50,11 +55,9 @@ const {
50
55
  >
51
56
  {title}
52
57
  </h1>
53
- <p
54
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
55
- >
58
+ <SectionDescription class="max-w-2xl">
56
59
  {description}
57
- </p>
60
+ </SectionDescription>
58
61
  <div class="flex flex-wrap justify-center gap-3">
59
62
  {
60
63
  buttons.map(({ href, label, ...button }, index) => (
@@ -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 {
@@ -13,8 +14,7 @@ import { Button } from "@/components/ui/button"
13
14
  import { Rating } from "@/components/ui/rating"
14
15
  import { Section, SectionContainer } from "@/components/ui/section"
15
16
 
16
- type Props = {
17
- class?: string
17
+ type Props = HTMLAttributes<"section"> & {
18
18
  title: string
19
19
  description: string
20
20
  buttons: {
@@ -44,10 +44,14 @@ const {
44
44
  buttons,
45
45
  socialProof,
46
46
  image,
47
+ ...props
47
48
  } = Astro.props
48
49
  ---
49
50
 
50
- <Section class={cn("dark bg-background min-h-screen justify-start", className)}>
51
+ <Section
52
+ class={cn("dark bg-background min-h-screen justify-start", className)}
53
+ {...props}
54
+ >
51
55
  <SectionContainer
52
56
  class="relative z-10 grid gap-8 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center"
53
57
  >
@@ -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 {
@@ -13,8 +14,7 @@ import { Button } from "@/components/ui/button"
13
14
  import { Rating } from "@/components/ui/rating"
14
15
  import { Section, SectionContainer } from "@/components/ui/section"
15
16
 
16
- type Props = {
17
- class?: string
17
+ type Props = HTMLAttributes<"section"> & {
18
18
  title: string
19
19
  description: string
20
20
  buttons: {
@@ -44,11 +44,13 @@ const {
44
44
  buttons,
45
45
  socialProof,
46
46
  image,
47
+ ...props
47
48
  } = Astro.props
48
49
  ---
49
50
 
50
51
  <Section
51
52
  class={cn("dark bg-background min-h-screen justify-center", className)}
53
+ {...props}
52
54
  >
53
55
  <SectionContainer class="relative z-10 items-center gap-8 text-center">
54
56
  <h1
@@ -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("gap-8 pt-8", className)}>
34
+ <Section class={cn("gap-8 pt-8", className)} {...props}>
28
35
  <SectionContainer class="border-y py-8">
29
36
  <div
30
37
  class="flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between"
@@ -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 class="grid gap-12 lg:grid-cols-[1fr_3fr] lg:items-start">
29
36
  <div class="flex flex-col gap-6 pt-8">
30
37
  <div class="flex flex-col gap-4">
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
3
  import { Image } from "astro:assets"
4
+ import type { HTMLAttributes } from "astro/types"
4
5
 
5
6
  import { cn } from "@/lib/utils"
6
7
  import {
@@ -11,10 +12,13 @@ import {
11
12
  } from "@/components/ui/avatar"
12
13
  import { Button } from "@/components/ui/button"
13
14
  import { Rating } from "@/components/ui/rating"
14
- import { Section, SectionContainer } from "@/components/ui/section"
15
+ import {
16
+ Section,
17
+ SectionContainer,
18
+ SectionDescription,
19
+ } from "@/components/ui/section"
15
20
 
16
- type Props = {
17
- class?: string
21
+ type Props = HTMLAttributes<"section"> & {
18
22
  title: string
19
23
  description: string
20
24
  buttons: {
@@ -44,10 +48,11 @@ const {
44
48
  buttons,
45
49
  socialProof,
46
50
  image,
51
+ ...props
47
52
  } = Astro.props
48
53
  ---
49
54
 
50
- <Section class={cn("", className)}>
55
+ <Section class={cn("", className)} {...props}>
51
56
  <SectionContainer class="items-center gap-8 text-center">
52
57
  <div class="flex flex-col items-center gap-3">
53
58
  <AvatarGroup>
@@ -73,11 +78,9 @@ const {
73
78
  >
74
79
  {title}
75
80
  </h1>
76
- <p
77
- class="text-muted-foreground max-w-2xl text-lg leading-relaxed text-balance"
78
- >
81
+ <SectionDescription class="max-w-2xl">
79
82
  {description}
80
- </p>
83
+ </SectionDescription>
81
84
  <div class="flex flex-wrap justify-center gap-3">
82
85
  {
83
86
  buttons.map(({ href, label, ...button }, index) => (
@@ -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,11 +21,19 @@ 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
34
  <Section
28
35
  class={cn("dark bg-background min-h-[80vh] justify-center", className)}
36
+ {...props}
29
37
  >
30
38
  <SectionContainer class="relative z-10 items-center gap-8 text-center">
31
39
  <h1
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  import type { ImageMetadata } from "astro"
3
3
  import { Image } from "astro:assets"
4
+ import type { HTMLAttributes } from "astro/types"
4
5
  import { CheckIcon } from "@lucide/astro"
5
6
 
6
7
  import { cn } from "@/lib/utils"
7
8
  import { Button } from "@/components/ui/button"
8
9
  import { Section, SectionContainer } from "@/components/ui/section"
9
10
 
10
- type Props = {
11
- class?: string
11
+ type Props = HTMLAttributes<"section"> & {
12
12
  title: string
13
13
  description: string
14
14
  features: string[]
@@ -30,11 +30,13 @@ const {
30
30
  features,
31
31
  buttons,
32
32
  image,
33
+ ...props
33
34
  } = Astro.props
34
35
  ---
35
36
 
36
37
  <Section
37
38
  class={cn("dark bg-background min-h-screen justify-center", className)}
39
+ {...props}
38
40
  >
39
41
  <SectionContainer class="relative z-10 items-center gap-8 text-center">
40
42
  <h1
@@ -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
  <div class="flex flex-col gap-6">
56
57
  <div class="flex flex-col gap-4">