fulldev-ui 0.9.3 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +100 -16
  3. package/package.json +3 -2
  4. package/public/r/accordion.json +4 -6
  5. package/public/r/alert-dialog.json +3 -3
  6. package/public/r/alert.json +0 -5
  7. package/public/r/article-1.json +1 -1
  8. package/public/r/article-2.json +1 -1
  9. package/public/r/articles-1.json +1 -1
  10. package/public/r/articles-2.json +1 -1
  11. package/public/r/articles-3.json +1 -1
  12. package/public/r/avatar.json +1 -16
  13. package/public/r/badge.json +1 -1
  14. package/public/r/banner-1.json +5 -3
  15. package/public/r/banner-2.json +1 -1
  16. package/public/r/banner.json +5 -3
  17. package/public/r/blocks-1.json +6 -3
  18. package/public/r/breadcrumb.json +4 -4
  19. package/public/r/button.json +1 -1
  20. package/public/r/card.json +4 -4
  21. package/public/r/carousel.json +5 -5
  22. package/public/r/checkbox.json +1 -1
  23. package/public/r/combobox.json +8 -8
  24. package/public/r/command.json +6 -6
  25. package/public/r/components.json +1 -7
  26. package/public/r/contact-1.json +4 -2
  27. package/public/r/contact-2.json +4 -2
  28. package/public/r/contact-3.json +11 -3
  29. package/public/r/content-1.json +11 -3
  30. package/public/r/content-2.json +11 -3
  31. package/public/r/content-3.json +7 -1
  32. package/public/r/content-4.json +11 -3
  33. package/public/r/cta-2.json +7 -1
  34. package/public/r/cta-4.json +7 -1
  35. package/public/r/cta-5.json +11 -3
  36. package/public/r/cta-6.json +7 -1
  37. package/public/r/dialog.json +7 -7
  38. package/public/r/doc-1.json +6 -3
  39. package/public/r/dropdown-menu.json +9 -11
  40. package/public/r/features-1.json +5 -3
  41. package/public/r/features-2.json +5 -3
  42. package/public/r/features-4.json +5 -3
  43. package/public/r/features-5.json +4 -2
  44. package/public/r/field.json +2 -7
  45. package/public/r/footer-1.json +5 -3
  46. package/public/r/footer-2.json +5 -3
  47. package/public/r/footer-3.json +5 -3
  48. package/public/r/header-1.json +1 -1
  49. package/public/r/header.json +3 -0
  50. package/public/r/hero-13.json +1 -1
  51. package/public/r/hero-4.json +5 -3
  52. package/public/r/hero-5.json +5 -3
  53. package/public/r/hero-6.json +5 -3
  54. package/public/r/hero-7.json +5 -3
  55. package/public/r/hero-8.json +1 -1
  56. package/public/r/hero-9.json +5 -3
  57. package/public/r/hover-card.json +4 -3
  58. package/public/r/icon.json +1 -1
  59. package/public/r/input-group.json +1 -1
  60. package/public/r/item.json +2 -20
  61. package/public/r/kbd.json +2 -2
  62. package/public/r/layout.json +4 -7
  63. package/public/r/links-2.json +5 -3
  64. package/public/r/marquee.json +1 -1
  65. package/public/r/native-select.json +3 -3
  66. package/public/r/navigation-menu.json +8 -10
  67. package/public/r/page.json +17 -0
  68. package/public/r/popover.json +1 -1
  69. package/public/r/pricing-1.json +5 -3
  70. package/public/r/pricing-2.json +5 -3
  71. package/public/r/pricing-3.json +5 -3
  72. package/public/r/products-1.json +1 -1
  73. package/public/r/products-4.json +1 -1
  74. package/public/r/products-5.json +1 -1
  75. package/public/r/radio-group.json +1 -1
  76. package/public/r/rating.json +3 -3
  77. package/public/r/registry.json +186 -450
  78. package/public/r/reviews-1.json +5 -3
  79. package/public/r/reviews-2.json +5 -3
  80. package/public/r/reviews-3.json +5 -3
  81. package/public/r/reviews-4.json +1 -1
  82. package/public/r/reviews-5.json +5 -3
  83. package/public/r/select.json +6 -8
  84. package/public/r/services-1.json +11 -3
  85. package/public/r/services-2.json +7 -1
  86. package/public/r/services-3.json +7 -1
  87. package/public/r/services-4.json +11 -3
  88. package/public/r/services-5.json +5 -3
  89. package/public/r/services-6.json +11 -3
  90. package/public/r/services-7.json +11 -3
  91. package/public/r/sheet.json +7 -4
  92. package/public/r/sidebar-1.json +4 -2
  93. package/public/r/sidebar.json +10 -7
  94. package/public/r/slider.json +1 -1
  95. package/public/r/spinner.json +3 -3
  96. package/public/r/switch.json +1 -1
  97. package/public/r/tabs.json +1 -1
  98. package/public/r/theme-toggle.json +5 -3
  99. package/public/r/toggle.json +1 -1
  100. package/public/r/tooltip.json +1 -1
  101. package/public/r/typography.json +16 -16
  102. package/public/r/video.json +1 -1
  103. package/registry.json +186 -450
  104. package/src/components/blocks/article-1.astro +1 -1
  105. package/src/components/blocks/article-2.astro +1 -1
  106. package/src/components/blocks/articles-1.astro +1 -1
  107. package/src/components/blocks/articles-2.astro +2 -2
  108. package/src/components/blocks/articles-3.astro +1 -1
  109. package/src/components/blocks/banner-1.astro +3 -5
  110. package/src/components/blocks/banner-2.astro +1 -1
  111. package/src/components/blocks/blocks-1.astro +25 -37
  112. package/src/components/blocks/contact-3.astro +4 -3
  113. package/src/components/blocks/content-1.astro +5 -4
  114. package/src/components/blocks/content-2.astro +6 -5
  115. package/src/components/blocks/content-3.astro +9 -2
  116. package/src/components/blocks/content-4.astro +6 -5
  117. package/src/components/blocks/cta-2.astro +4 -3
  118. package/src/components/blocks/cta-4.astro +3 -2
  119. package/src/components/blocks/cta-5.astro +6 -5
  120. package/src/components/blocks/cta-6.astro +4 -3
  121. package/src/components/blocks/doc-1.astro +28 -56
  122. package/src/components/blocks/features-1.astro +3 -1
  123. package/src/components/blocks/features-2.astro +4 -2
  124. package/src/components/blocks/features-4.astro +3 -1
  125. package/src/components/blocks/footer-1.astro +26 -12
  126. package/src/components/blocks/footer-2.astro +24 -12
  127. package/src/components/blocks/footer-3.astro +26 -12
  128. package/src/components/blocks/header-1.astro +2 -3
  129. package/src/components/blocks/hero-13.astro +1 -1
  130. package/src/components/blocks/hero-4.astro +2 -2
  131. package/src/components/blocks/hero-5.astro +3 -3
  132. package/src/components/blocks/hero-6.astro +3 -3
  133. package/src/components/blocks/hero-7.astro +3 -3
  134. package/src/components/blocks/hero-8.astro +1 -1
  135. package/src/components/blocks/hero-9.astro +2 -2
  136. package/src/components/blocks/links-2.astro +3 -5
  137. package/src/components/blocks/pricing-1.astro +3 -2
  138. package/src/components/blocks/pricing-2.astro +3 -2
  139. package/src/components/blocks/pricing-3.astro +3 -2
  140. package/src/components/blocks/products-1.astro +1 -1
  141. package/src/components/blocks/products-4.astro +2 -2
  142. package/src/components/blocks/products-5.astro +4 -4
  143. package/src/components/blocks/reviews-1.astro +2 -2
  144. package/src/components/blocks/reviews-2.astro +2 -2
  145. package/src/components/blocks/reviews-3.astro +2 -2
  146. package/src/components/blocks/reviews-4.astro +4 -4
  147. package/src/components/blocks/reviews-5.astro +16 -25
  148. package/src/components/blocks/services-1.astro +7 -9
  149. package/src/components/blocks/services-2.astro +5 -4
  150. package/src/components/blocks/services-3.astro +6 -5
  151. package/src/components/blocks/services-4.astro +7 -9
  152. package/src/components/blocks/services-5.astro +3 -4
  153. package/src/components/blocks/services-6.astro +7 -6
  154. package/src/components/blocks/services-7.astro +7 -9
  155. package/src/components/blocks/sidebar-1.astro +42 -97
  156. package/src/components/ui/accordion/accordion-content.astro +2 -1
  157. package/src/components/ui/accordion/accordion-trigger.astro +7 -8
  158. package/src/components/ui/alert-dialog/alert-dialog-content.astro +1 -1
  159. package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +1 -1
  160. package/src/components/ui/alert-dialog/alert-dialog.astro +23 -3
  161. package/src/components/ui/avatar/avatar.astro +1 -1
  162. package/src/components/ui/badge/badge.astro +1 -0
  163. package/src/components/ui/banner/banner-container.astro +3 -3
  164. package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +2 -2
  165. package/src/components/ui/breadcrumb/breadcrumb-separator.astro +2 -2
  166. package/src/components/ui/button/button-variants.ts +8 -7
  167. package/src/components/ui/card/card-content.astro +1 -1
  168. package/src/components/ui/card/card-footer.astro +1 -1
  169. package/src/components/ui/card/card-header.astro +1 -1
  170. package/src/components/ui/card/card.astro +1 -1
  171. package/src/components/ui/carousel/carousel-next.astro +3 -3
  172. package/src/components/ui/carousel/carousel-previous.astro +3 -3
  173. package/src/components/ui/checkbox/checkbox.astro +1 -1
  174. package/src/components/ui/combobox/combobox-input.astro +2 -2
  175. package/src/components/ui/combobox/combobox-item.astro +4 -4
  176. package/src/components/ui/combobox/combobox-list.astro +1 -1
  177. package/src/components/ui/combobox/combobox-trigger.astro +2 -5
  178. package/src/components/ui/combobox/combobox.astro +3 -0
  179. package/src/components/ui/command/command-dialog.astro +10 -10
  180. package/src/components/ui/command/command-input.astro +2 -2
  181. package/src/components/ui/command/command-item.astro +4 -5
  182. package/src/components/ui/dialog/dialog-close.astro +2 -2
  183. package/src/components/ui/dialog/dialog-content.astro +3 -3
  184. package/src/components/ui/dialog/dialog-overlay.astro +1 -1
  185. package/src/components/ui/dialog/dialog.astro +26 -3
  186. package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +4 -5
  187. package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +4 -4
  188. package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +1 -1
  189. package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +1 -1
  190. package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +4 -5
  191. package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +1 -1
  192. package/src/components/ui/dropdown-menu/dropdown-menu.astro +3 -0
  193. package/src/components/ui/field/field-label.astro +1 -1
  194. package/src/components/ui/field/field-title.astro +1 -1
  195. package/src/components/ui/hover-card/hover-card-content.astro +4 -4
  196. package/src/components/ui/hover-card/hover-card.astro +8 -5
  197. package/src/components/ui/icon/icon.astro +8 -17
  198. package/src/components/ui/input-group/input-group-button.astro +0 -1
  199. package/src/components/ui/item/item-media.astro +1 -1
  200. package/src/components/ui/item/item.astro +0 -18
  201. package/src/components/ui/kbd/kbd-group.astro +1 -1
  202. package/src/components/ui/kbd/kbd.astro +1 -1
  203. package/src/components/ui/layout/layout-body.astro +1 -1
  204. package/src/components/ui/layout/layout-head.astro +3 -2
  205. package/src/components/ui/layout/layout-main.astro +1 -1
  206. package/src/components/ui/layout/layout.astro +4 -0
  207. package/src/components/ui/marquee/marquee.astro +50 -69
  208. package/src/components/ui/native-select/native-select.astro +2 -3
  209. package/src/components/ui/navigation-menu/navigation-menu-content.astro +3 -1
  210. package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +2 -1
  211. package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
  212. package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +2 -0
  213. package/src/components/ui/navigation-menu/navigation-menu-trigger.astro +2 -3
  214. package/src/components/ui/navigation-menu/navigation-menu.astro +1 -1
  215. package/src/components/ui/popover/popover-content.astro +1 -1
  216. package/src/components/ui/radio-group/radio-group-item.astro +3 -3
  217. package/src/components/ui/rating/rating.astro +3 -3
  218. package/src/components/ui/select/select-content.astro +1 -1
  219. package/src/components/ui/select/select-item.astro +4 -4
  220. package/src/components/ui/select/select-trigger.astro +3 -6
  221. package/src/components/ui/select/select.astro +6 -0
  222. package/src/components/ui/sheet/sheet-content.astro +6 -7
  223. package/src/components/ui/sheet/sheet.astro +1 -89
  224. package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -11
  225. package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
  226. package/src/components/ui/sidebar/sidebar-provider.astro +37 -15
  227. package/src/components/ui/sidebar/sidebar-rail.astro +1 -1
  228. package/src/components/ui/sidebar/sidebar-trigger.astro +3 -3
  229. package/src/components/ui/sidebar/sidebar.astro +1 -2
  230. package/src/components/ui/slider/slider.astro +8 -6
  231. package/src/components/ui/spinner/spinner.astro +4 -4
  232. package/src/components/ui/switch/switch.astro +5 -3
  233. package/src/components/ui/tabs/tabs-content.astro +2 -1
  234. package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
  235. package/src/components/ui/toggle/toggle.astro +2 -0
  236. package/src/components/ui/tooltip/tooltip-content.astro +1 -1
  237. package/src/components/ui/typography/typography-a.astro +19 -4
  238. package/src/components/ui/typography/typography-blockquote.astro +26 -6
  239. package/src/components/ui/typography/typography-h1.astro +7 -9
  240. package/src/components/ui/typography/typography-h2.astro +12 -9
  241. package/src/components/ui/typography/typography-h3.astro +7 -9
  242. package/src/components/ui/typography/typography-h4.astro +7 -9
  243. package/src/components/ui/typography/typography-inline-code.astro +28 -12
  244. package/src/components/ui/typography/typography-lead.astro +29 -4
  245. package/src/components/ui/typography/typography-list-item.astro +25 -9
  246. package/src/components/ui/typography/typography-list.astro +29 -11
  247. package/src/components/ui/typography/typography-p.astro +26 -6
  248. package/src/components/ui/typography/typography-table-cell.astro +32 -13
  249. package/src/components/ui/typography/typography-table-head.astro +27 -13
  250. package/src/components/ui/typography/typography-table-row.astro +23 -13
  251. package/src/components/ui/typography/typography-table.astro +29 -20
  252. package/src/components/ui/typography/typography.astro +172 -46
  253. package/src/components/ui/video/video.astro +11 -27
  254. package/src/styles/global.css +2 -15
  255. package/public/r/beta-repo-setup.json +0 -125
  256. package/public/r/blocks.json +0 -91
  257. package/public/r/content-5.json +0 -17
  258. package/public/r/content-6.json +0 -17
  259. package/public/r/gradient.json +0 -17
  260. package/public/r/init.json +0 -23
  261. package/public/r/tile.json +0 -27
  262. package/src/components/blocks/content-5.astro +0 -115
  263. package/src/components/blocks/content-6.astro +0 -91
  264. package/src/components/ui/gradient/gradient.astro +0 -45
  265. package/src/components/ui/gradient/index.ts +0 -1
  266. package/src/components/ui/tile/index.ts +0 -3
  267. package/src/components/ui/tile/tile-content.astro +0 -17
  268. package/src/components/ui/tile/tile-group.astro +0 -76
  269. package/src/components/ui/tile/tile.astro +0 -46
@@ -1,91 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "blocks",
4
- "registryDependencies": [
5
- "@fulldev/article-1",
6
- "@fulldev/article-2",
7
- "@fulldev/articles-1",
8
- "@fulldev/articles-2",
9
- "@fulldev/articles-3",
10
- "@fulldev/articles-4",
11
- "@fulldev/banner-1",
12
- "@fulldev/banner-2",
13
- "@fulldev/blocks-1",
14
- "@fulldev/contact-1",
15
- "@fulldev/contact-2",
16
- "@fulldev/contact-3",
17
- "@fulldev/content-1",
18
- "@fulldev/content-2",
19
- "@fulldev/content-3",
20
- "@fulldev/content-4",
21
- "@fulldev/content-5",
22
- "@fulldev/content-6",
23
- "@fulldev/cta-1",
24
- "@fulldev/cta-2",
25
- "@fulldev/cta-3",
26
- "@fulldev/cta-4",
27
- "@fulldev/cta-5",
28
- "@fulldev/cta-6",
29
- "@fulldev/cta-7",
30
- "@fulldev/cta-8",
31
- "@fulldev/doc-1",
32
- "@fulldev/faqs-1",
33
- "@fulldev/faqs-2",
34
- "@fulldev/faqs-3",
35
- "@fulldev/faqs-4",
36
- "@fulldev/features-1",
37
- "@fulldev/features-2",
38
- "@fulldev/features-3",
39
- "@fulldev/features-4",
40
- "@fulldev/features-5",
41
- "@fulldev/features-6",
42
- "@fulldev/footer-1",
43
- "@fulldev/footer-2",
44
- "@fulldev/footer-3",
45
- "@fulldev/header-1",
46
- "@fulldev/header-2",
47
- "@fulldev/header-3",
48
- "@fulldev/header-4",
49
- "@fulldev/header-5",
50
- "@fulldev/hero-1",
51
- "@fulldev/hero-10",
52
- "@fulldev/hero-11",
53
- "@fulldev/hero-12",
54
- "@fulldev/hero-13",
55
- "@fulldev/hero-2",
56
- "@fulldev/hero-3",
57
- "@fulldev/hero-4",
58
- "@fulldev/hero-5",
59
- "@fulldev/hero-6",
60
- "@fulldev/hero-7",
61
- "@fulldev/hero-8",
62
- "@fulldev/hero-9",
63
- "@fulldev/links-2",
64
- "@fulldev/logos-1",
65
- "@fulldev/logos-2",
66
- "@fulldev/logos-3",
67
- "@fulldev/pricing-1",
68
- "@fulldev/pricing-2",
69
- "@fulldev/pricing-3",
70
- "@fulldev/product-1",
71
- "@fulldev/products-1",
72
- "@fulldev/products-2",
73
- "@fulldev/products-3",
74
- "@fulldev/products-4",
75
- "@fulldev/products-5",
76
- "@fulldev/reviews-1",
77
- "@fulldev/reviews-2",
78
- "@fulldev/reviews-3",
79
- "@fulldev/reviews-4",
80
- "@fulldev/reviews-5",
81
- "@fulldev/services-1",
82
- "@fulldev/services-2",
83
- "@fulldev/services-3",
84
- "@fulldev/services-4",
85
- "@fulldev/services-5",
86
- "@fulldev/services-6",
87
- "@fulldev/services-7",
88
- "@fulldev/sidebar-1"
89
- ],
90
- "type": "registry:item"
91
- }
@@ -1,17 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "content-5",
4
- "registryDependencies": [
5
- "@fulldev/button",
6
- "@fulldev/section",
7
- "@fulldev/icon"
8
- ],
9
- "files": [
10
- {
11
- "path": "src/components/blocks/content-5.astro",
12
- "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n eyebrow?: string\n title: string\n description: string\n features?: string[]\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n eyebrow,\n title,\n description,\n features,\n buttons,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer>\n <div\n class=\"bg-muted/40 grid overflow-hidden rounded-xl border lg:grid-cols-[minmax(0,0.9fr)_minmax(0,1.1fr)]\"\n >\n <div class=\"flex flex-col justify-between gap-10 p-6 sm:p-8 lg:p-10\">\n <div class=\"flex flex-col gap-5\">\n {\n eyebrow && (\n <p class=\"text-primary text-sm leading-none font-medium\">\n {eyebrow}\n </p>\n )\n }\n <div class=\"flex flex-col gap-4\">\n <h2\n class=\"text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <p\n class=\"text-muted-foreground max-w-xl text-lg leading-relaxed text-balance\"\n >\n {description}\n </p>\n </div>\n </div>\n {\n features?.length && (\n <ol class=\"grid gap-3\">\n {features.map((feature, index) => (\n <li class=\"flex items-start gap-3 text-sm leading-6\">\n <span class=\"bg-background text-foreground flex size-7 shrink-0 items-center justify-center rounded-full border text-xs font-medium\">\n {index + 1}\n </span>\n {feature}\n </li>\n ))}\n </ol>\n )\n }\n {\n buttons?.length && (\n <div class=\"flex flex-wrap gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </div>\n <div\n class=\"bg-background relative min-h-72 overflow-hidden border-t lg:border-t-0 lg:border-l\"\n >\n <div\n class=\"bg-primary/8 absolute inset-x-8 top-8 h-24 rounded-full blur-3xl\"\n >\n </div>\n <Image\n src={image.src}\n alt={image.alt}\n class=\"relative h-full min-h-72 w-full object-cover lg:translate-x-6 lg:scale-105\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 55vw, 100vw\"\n />\n </div>\n </div>\n </SectionContainer>\n</Section>\n",
13
- "type": "registry:block"
14
- }
15
- ],
16
- "type": "registry:block"
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "content-6",
4
- "registryDependencies": [
5
- "@fulldev/button",
6
- "@fulldev/section",
7
- "@fulldev/icon"
8
- ],
9
- "files": [
10
- {
11
- "path": "src/components/blocks/content-6.astro",
12
- "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = {\n class?: string\n title: string\n description: string\n features?: string[]\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n image,\n} = Astro.props\n---\n\n<Section class={cn(\"\", className)}>\n <SectionContainer>\n <div class=\"grid gap-12 lg:grid-cols-2 lg:items-center\">\n <Image\n src={image.src}\n alt={image.alt}\n class=\"aspect-4/3 w-full rounded-xl border object-cover\"\n widths={[640, 960, 1280]}\n sizes=\"(min-width: 1024px) 50vw, 100vw\"\n />\n <div class=\"flex flex-col gap-6\">\n <div class=\"flex flex-col gap-4\">\n <h2\n class=\"text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl\"\n >\n {title}\n </h2>\n <p class=\"text-muted-foreground text-lg leading-relaxed text-balance\">\n {description}\n </p>\n </div>\n {\n features?.length && (\n <ul class=\"flex flex-col gap-3\">\n {features.map((feature) => (\n <li class=\"flex items-center gap-3 text-sm\">\n <Icon name=\"check\" class=\"text-primary size-4 shrink-0\" />\n {feature}\n </li>\n ))}\n </ul>\n )\n }\n {\n buttons?.length && (\n <div class=\"flex flex-wrap gap-3\">\n {buttons.map(({ href, label, ...button }, index) => (\n <Button\n as=\"a\"\n href={href}\n size=\"lg\"\n variant={\n button.variant ?? (index === 0 ? \"default\" : \"secondary\")\n }\n {...button}\n >\n {label}\n </Button>\n ))}\n </div>\n )\n }\n </div>\n </div>\n </SectionContainer>\n</Section>\n",
13
- "type": "registry:block"
14
- }
15
- ],
16
- "type": "registry:block"
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "gradient",
4
- "files": [
5
- {
6
- "path": "src/components/ui/gradient/gradient.astro",
7
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst gradientVariants = cva(\n \"bg-primary pointer-events-none absolute inset-0 opacity-50 [--gradient-stops:black,transparent]\",\n {\n variants: {\n variant: {\n radial:\n \"[mask-image:radial-gradient(ellipse_at_var(--gradient-position),var(--gradient-stops))] [-webkit-mask-image:radial-gradient(ellipse_at_var(--gradient-position),var(--gradient-stops))]\",\n linear:\n \"[mask-image:linear-gradient(var(--gradient-direction),var(--gradient-stops))] [-webkit-mask-image:linear-gradient(var(--gradient-direction),var(--gradient-stops))]\",\n },\n direction: {\n left: \"[--gradient-direction:to_left] [--gradient-position:0%_50%]\",\n right: \"[--gradient-direction:to_right] [--gradient-position:100%_50%]\",\n top: \"[--gradient-direction:to_top] [--gradient-position:50%_0%]\",\n bottom:\n \"[--gradient-direction:to_bottom] [--gradient-position:50%_100%]\",\n center:\n \"[--gradient-direction:to_bottom] [--gradient-position:50%_50%]\",\n },\n },\n defaultVariants: {\n variant: \"radial\",\n direction: \"bottom\",\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> & VariantProps<typeof gradientVariants>\n\nconst { class: className, variant, direction, ...props } = Astro.props\n---\n\n<div\n data-slot=\"gradient\"\n aria-hidden=\"true\"\n class={cn(gradientVariants({ variant, direction }), className)}\n {...props}\n>\n</div>\n",
8
- "type": "registry:ui"
9
- },
10
- {
11
- "path": "src/components/ui/gradient/index.ts",
12
- "content": "export { default as Gradient } from \"./gradient.astro\"\n",
13
- "type": "registry:ui"
14
- }
15
- ],
16
- "type": "registry:ui"
17
- }
@@ -1,23 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "init",
4
- "dependencies": [
5
- "class-variance-authority",
6
- "clsx",
7
- "tailwind-merge"
8
- ],
9
- "files": [
10
- {
11
- "path": "src/lib/utils.ts",
12
- "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n",
13
- "type": "registry:lib"
14
- },
15
- {
16
- "path": "registry/init/global.css",
17
- "content": "@import \"tailwindcss\";\n\n@custom-variant dark (&:is(.dark *));\n\n:root {\n --background: oklch(1 0 0);\n --foreground: oklch(0.145 0 0);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.145 0 0);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.145 0 0);\n --primary: oklch(0.5488 0.2498 261.783);\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.97 0 0);\n --secondary-foreground: oklch(0.205 0 0);\n --muted: oklch(0.97 0 0);\n --muted-foreground: oklch(0.556 0 0);\n --accent: oklch(0.97 0 0);\n --accent-foreground: oklch(0.205 0 0);\n --destructive: oklch(0.577 0.245 27.325);\n --destructive-foreground: oklch(1 0 0);\n --border: oklch(0.922 0 0);\n --input: oklch(0.922 0 0);\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.985 0 0);\n --sidebar-foreground: oklch(0.145 0 0);\n --sidebar-primary: oklch(0.5488 0.2498 261.783);\n --sidebar-primary-foreground: oklch(1 0 0);\n --sidebar-accent: oklch(0.97 0 0);\n --sidebar-accent-foreground: oklch(0.205 0 0);\n --sidebar-border: oklch(0.922 0 0);\n --sidebar-ring: oklch(0.708 0 0);\n --radius: 0.625rem;\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.205 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.269 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.686 0.2105 41.139);\n --primary-foreground: oklch(0.145 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.371 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.704 0.191 22.216);\n --destructive-foreground: oklch(0.985 0 0);\n --border: oklch(0.275 0 0);\n --input: oklch(0.325 0 0);\n --ring: oklch(0.556 0 0);\n --chart-1: oklch(0.81 0.1 252);\n --chart-2: oklch(0.62 0.19 260);\n --chart-3: oklch(0.55 0.22 263);\n --chart-4: oklch(0.49 0.22 264);\n --chart-5: oklch(0.42 0.18 266);\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.686 0.2105 41.139);\n --sidebar-primary-foreground: oklch(0.145 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.275 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n --radius: 0.625rem;\n --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);\n --shadow-sm:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);\n --shadow-md:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);\n --shadow-lg:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);\n --shadow-xl:\n 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);\n --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);\n}\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n\n --shadow-2xs: var(--shadow-2xs);\n --shadow-xs: var(--shadow-xs);\n --shadow-sm: var(--shadow-sm);\n --shadow: var(--shadow);\n --shadow-md: var(--shadow-md);\n --shadow-lg: var(--shadow-lg);\n --shadow-xl: var(--shadow-xl);\n --shadow-2xl: var(--shadow-2xl);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n\n html {\n @apply font-sans;\n }\n\n body {\n @apply bg-background text-foreground font-sans;\n }\n}\n",
18
- "type": "registry:style",
19
- "target": "src/styles/global.css"
20
- }
21
- ],
22
- "type": "registry:base"
23
- }
@@ -1,27 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "tile",
4
- "files": [
5
- {
6
- "path": "src/components/ui/tile/tile.astro",
7
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = VariantProps<typeof variants> &\n HTMLAttributes<\"div\"> &\n HTMLAttributes<\"a\">\n\nconst variants = cva(\n \"group/tile focus-visible:border-ring focus-visible:ring-ring/50 flex min-w-0 flex-col overflow-hidden rounded-xl transition-colors outline-none group-data-[variant=masonry]/tile-group:mb-4 group-data-[variant=masonry]/tile-group:break-inside-avoid focus-visible:ring-3\",\n {\n variants: {\n variant: {\n default:\n \"text-foreground data-[link]:hover:bg-muted/40 border border-transparent\",\n inset:\n \"text-foreground data-[link]:hover:bg-muted/40 -mx-5 border border-transparent\",\n outline:\n \"border-border bg-background text-foreground data-[link]:hover:bg-muted/40 border\",\n muted:\n \"bg-muted/50 text-foreground data-[link]:hover:bg-muted/70 border-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst { class: className, variant = \"default\", href, ...props } = Astro.props\n\nconst Comp = href ? \"a\" : \"div\"\n---\n\n<Comp\n data-slot=\"tile\"\n data-variant={variant}\n data-link={href ? \"\" : undefined}\n class={cn(variants({ variant }), className)}\n href={href}\n {...props}\n>\n <slot />\n</Comp>\n",
8
- "type": "registry:ui"
9
- },
10
- {
11
- "path": "src/components/ui/tile/tile-content.astro",
12
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n data-slot=\"tile-content\"\n class={cn(\"flex min-w-0 flex-1 flex-col gap-3 p-5\", className)}\n {...props}\n>\n <slot />\n</div>\n",
13
- "type": "registry:ui"
14
- },
15
- {
16
- "path": "src/components/ui/tile/tile-group.astro",
17
- "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & VariantProps<typeof variants>\n\nconst variants = cva(\"group/tile-group w-full gap-4\", {\n variants: {\n variant: {\n default: \"grid\",\n masonry: \"columns-1\",\n },\n size: {\n sm: \"\",\n default: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"default\",\n size: \"sm\",\n class: \"grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(240px,1fr))]\",\n },\n {\n variant: \"default\",\n size: \"default\",\n class: \"grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(300px,1fr))]\",\n },\n {\n variant: \"default\",\n size: \"lg\",\n class: \"grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(400px,1fr))]\",\n },\n {\n variant: \"masonry\",\n size: \"sm\",\n class: \"sm:[column-count:5] sm:[column-width:240px]\",\n },\n {\n variant: \"masonry\",\n size: \"default\",\n class: \"sm:[column-count:4] sm:[column-width:300px]\",\n },\n {\n variant: \"masonry\",\n size: \"lg\",\n class: \"sm:[column-count:3] sm:[column-width:400px]\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n})\n\nconst {\n class: className,\n variant = \"default\",\n size = \"default\",\n ...props\n} = Astro.props\n---\n\n<div\n role=\"list\"\n data-slot=\"tile-group\"\n data-variant={variant}\n data-size={size}\n class={cn(variants({ variant, size }), className)}\n {...props}\n>\n <slot />\n</div>\n",
18
- "type": "registry:ui"
19
- },
20
- {
21
- "path": "src/components/ui/tile/index.ts",
22
- "content": "export { default as Tile } from \"./tile.astro\"\nexport { default as TileContent } from \"./tile-content.astro\"\nexport { default as TileGroup } from \"./tile-group.astro\"\n",
23
- "type": "registry:ui"
24
- }
25
- ],
26
- "type": "registry:ui"
27
- }
@@ -1,115 +0,0 @@
1
- ---
2
- import type { ImageMetadata } from "astro"
3
- import { Image } from "astro:assets"
4
-
5
- import { cn } from "@/lib/utils"
6
- import { Button } from "@/components/ui/button"
7
- import { Section, SectionContainer } from "@/components/ui/section"
8
-
9
- type Props = {
10
- class?: string
11
- eyebrow?: string
12
- title: string
13
- description: string
14
- features?: string[]
15
- buttons?: {
16
- label: string
17
- href: string
18
- variant?: "default" | "outline" | "secondary" | "ghost"
19
- }[]
20
- image: {
21
- src: ImageMetadata
22
- alt: string
23
- }
24
- }
25
-
26
- const {
27
- class: className,
28
- eyebrow,
29
- title,
30
- description,
31
- features,
32
- buttons,
33
- image,
34
- } = Astro.props
35
- ---
36
-
37
- <Section class={cn("", className)}>
38
- <SectionContainer>
39
- <div
40
- class="bg-muted/40 grid overflow-hidden rounded-xl border lg:grid-cols-[minmax(0,0.9fr)_minmax(0,1.1fr)]"
41
- >
42
- <div class="flex flex-col justify-between gap-10 p-6 sm:p-8 lg:p-10">
43
- <div class="flex flex-col gap-5">
44
- {
45
- eyebrow && (
46
- <p class="text-primary text-sm leading-none font-medium">
47
- {eyebrow}
48
- </p>
49
- )
50
- }
51
- <div class="flex flex-col gap-4">
52
- <h2
53
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
54
- >
55
- {title}
56
- </h2>
57
- <p
58
- class="text-muted-foreground max-w-xl text-lg leading-relaxed text-balance"
59
- >
60
- {description}
61
- </p>
62
- </div>
63
- </div>
64
- {
65
- features?.length && (
66
- <ol class="grid gap-3">
67
- {features.map((feature, index) => (
68
- <li class="flex items-start gap-3 text-sm leading-6">
69
- <span class="bg-background text-foreground flex size-7 shrink-0 items-center justify-center rounded-full border text-xs font-medium">
70
- {index + 1}
71
- </span>
72
- {feature}
73
- </li>
74
- ))}
75
- </ol>
76
- )
77
- }
78
- {
79
- buttons?.length && (
80
- <div class="flex flex-wrap gap-3">
81
- {buttons.map(({ href, label, ...button }, index) => (
82
- <Button
83
- as="a"
84
- href={href}
85
- size="lg"
86
- variant={
87
- button.variant ?? (index === 0 ? "default" : "secondary")
88
- }
89
- {...button}
90
- >
91
- {label}
92
- </Button>
93
- ))}
94
- </div>
95
- )
96
- }
97
- </div>
98
- <div
99
- class="bg-background relative min-h-72 overflow-hidden border-t lg:border-t-0 lg:border-l"
100
- >
101
- <div
102
- class="bg-primary/8 absolute inset-x-8 top-8 h-24 rounded-full blur-3xl"
103
- >
104
- </div>
105
- <Image
106
- src={image.src}
107
- alt={image.alt}
108
- class="relative h-full min-h-72 w-full object-cover lg:translate-x-6 lg:scale-105"
109
- widths={[640, 960, 1280]}
110
- sizes="(min-width: 1024px) 55vw, 100vw"
111
- />
112
- </div>
113
- </div>
114
- </SectionContainer>
115
- </Section>
@@ -1,91 +0,0 @@
1
- ---
2
- import type { ImageMetadata } from "astro"
3
- import { Image } from "astro:assets"
4
-
5
- import { cn } from "@/lib/utils"
6
- import { Button } from "@/components/ui/button"
7
- import { Icon } from "@/components/ui/icon"
8
- import { Section, SectionContainer } from "@/components/ui/section"
9
-
10
- type Props = {
11
- class?: string
12
- title: string
13
- description: string
14
- features?: string[]
15
- buttons?: {
16
- label: string
17
- href: string
18
- variant?: "default" | "outline" | "secondary" | "ghost"
19
- }[]
20
- image: {
21
- src: ImageMetadata
22
- alt: string
23
- }
24
- }
25
-
26
- const {
27
- class: className,
28
- title,
29
- description,
30
- features,
31
- buttons,
32
- image,
33
- } = Astro.props
34
- ---
35
-
36
- <Section class={cn("", className)}>
37
- <SectionContainer>
38
- <div class="grid gap-12 lg:grid-cols-2 lg:items-center">
39
- <Image
40
- src={image.src}
41
- alt={image.alt}
42
- class="aspect-4/3 w-full rounded-xl border object-cover"
43
- widths={[640, 960, 1280]}
44
- sizes="(min-width: 1024px) 50vw, 100vw"
45
- />
46
- <div class="flex flex-col gap-6">
47
- <div class="flex flex-col gap-4">
48
- <h2
49
- class="text-foreground text-3xl font-semibold tracking-tight text-balance sm:text-4xl"
50
- >
51
- {title}
52
- </h2>
53
- <p class="text-muted-foreground text-lg leading-relaxed text-balance">
54
- {description}
55
- </p>
56
- </div>
57
- {
58
- features?.length && (
59
- <ul class="flex flex-col gap-3">
60
- {features.map((feature) => (
61
- <li class="flex items-center gap-3 text-sm">
62
- <Icon name="check" class="text-primary size-4 shrink-0" />
63
- {feature}
64
- </li>
65
- ))}
66
- </ul>
67
- )
68
- }
69
- {
70
- buttons?.length && (
71
- <div class="flex flex-wrap gap-3">
72
- {buttons.map(({ href, label, ...button }, index) => (
73
- <Button
74
- as="a"
75
- href={href}
76
- size="lg"
77
- variant={
78
- button.variant ?? (index === 0 ? "default" : "secondary")
79
- }
80
- {...button}
81
- >
82
- {label}
83
- </Button>
84
- ))}
85
- </div>
86
- )
87
- }
88
- </div>
89
- </div>
90
- </SectionContainer>
91
- </Section>
@@ -1,45 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types"
3
- import { cva, type VariantProps } from "class-variance-authority"
4
-
5
- import { cn } from "@/lib/utils"
6
-
7
- const gradientVariants = cva(
8
- "bg-primary pointer-events-none absolute inset-0 opacity-50 [--gradient-stops:black,transparent]",
9
- {
10
- variants: {
11
- variant: {
12
- radial:
13
- "[mask-image:radial-gradient(ellipse_at_var(--gradient-position),var(--gradient-stops))] [-webkit-mask-image:radial-gradient(ellipse_at_var(--gradient-position),var(--gradient-stops))]",
14
- linear:
15
- "[mask-image:linear-gradient(var(--gradient-direction),var(--gradient-stops))] [-webkit-mask-image:linear-gradient(var(--gradient-direction),var(--gradient-stops))]",
16
- },
17
- direction: {
18
- left: "[--gradient-direction:to_left] [--gradient-position:0%_50%]",
19
- right: "[--gradient-direction:to_right] [--gradient-position:100%_50%]",
20
- top: "[--gradient-direction:to_top] [--gradient-position:50%_0%]",
21
- bottom:
22
- "[--gradient-direction:to_bottom] [--gradient-position:50%_100%]",
23
- center:
24
- "[--gradient-direction:to_bottom] [--gradient-position:50%_50%]",
25
- },
26
- },
27
- defaultVariants: {
28
- variant: "radial",
29
- direction: "bottom",
30
- },
31
- }
32
- )
33
-
34
- type Props = HTMLAttributes<"div"> & VariantProps<typeof gradientVariants>
35
-
36
- const { class: className, variant, direction, ...props } = Astro.props
37
- ---
38
-
39
- <div
40
- data-slot="gradient"
41
- aria-hidden="true"
42
- class={cn(gradientVariants({ variant, direction }), className)}
43
- {...props}
44
- >
45
- </div>
@@ -1 +0,0 @@
1
- export { default as Gradient } from "./gradient.astro"
@@ -1,3 +0,0 @@
1
- export { default as Tile } from "./tile.astro"
2
- export { default as TileContent } from "./tile-content.astro"
3
- export { default as TileGroup } from "./tile-group.astro"
@@ -1,17 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types"
3
-
4
- import { cn } from "@/lib/utils"
5
-
6
- type Props = HTMLAttributes<"div">
7
-
8
- const { class: className, ...props } = Astro.props
9
- ---
10
-
11
- <div
12
- data-slot="tile-content"
13
- class={cn("flex min-w-0 flex-1 flex-col gap-3 p-5", className)}
14
- {...props}
15
- >
16
- <slot />
17
- </div>
@@ -1,76 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types"
3
- import { cva, type VariantProps } from "class-variance-authority"
4
-
5
- import { cn } from "@/lib/utils"
6
-
7
- type Props = HTMLAttributes<"div"> & VariantProps<typeof variants>
8
-
9
- const variants = cva("group/tile-group w-full gap-4", {
10
- variants: {
11
- variant: {
12
- default: "grid",
13
- masonry: "columns-1",
14
- },
15
- size: {
16
- sm: "",
17
- default: "",
18
- lg: "",
19
- },
20
- },
21
- compoundVariants: [
22
- {
23
- variant: "default",
24
- size: "sm",
25
- class: "grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(240px,1fr))]",
26
- },
27
- {
28
- variant: "default",
29
- size: "default",
30
- class: "grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(300px,1fr))]",
31
- },
32
- {
33
- variant: "default",
34
- size: "lg",
35
- class: "grid-cols-1 sm:grid-cols-[repeat(auto-fit,minmax(400px,1fr))]",
36
- },
37
- {
38
- variant: "masonry",
39
- size: "sm",
40
- class: "sm:[column-count:5] sm:[column-width:240px]",
41
- },
42
- {
43
- variant: "masonry",
44
- size: "default",
45
- class: "sm:[column-count:4] sm:[column-width:300px]",
46
- },
47
- {
48
- variant: "masonry",
49
- size: "lg",
50
- class: "sm:[column-count:3] sm:[column-width:400px]",
51
- },
52
- ],
53
- defaultVariants: {
54
- variant: "default",
55
- size: "default",
56
- },
57
- })
58
-
59
- const {
60
- class: className,
61
- variant = "default",
62
- size = "default",
63
- ...props
64
- } = Astro.props
65
- ---
66
-
67
- <div
68
- role="list"
69
- data-slot="tile-group"
70
- data-variant={variant}
71
- data-size={size}
72
- class={cn(variants({ variant, size }), className)}
73
- {...props}
74
- >
75
- <slot />
76
- </div>
@@ -1,46 +0,0 @@
1
- ---
2
- import type { HTMLAttributes } from "astro/types"
3
- import { cva, type VariantProps } from "class-variance-authority"
4
-
5
- import { cn } from "@/lib/utils"
6
-
7
- type Props = VariantProps<typeof variants> &
8
- HTMLAttributes<"div"> &
9
- HTMLAttributes<"a">
10
-
11
- const variants = cva(
12
- "group/tile focus-visible:border-ring focus-visible:ring-ring/50 flex min-w-0 flex-col overflow-hidden rounded-xl transition-colors outline-none group-data-[variant=masonry]/tile-group:mb-4 group-data-[variant=masonry]/tile-group:break-inside-avoid focus-visible:ring-3",
13
- {
14
- variants: {
15
- variant: {
16
- default:
17
- "text-foreground data-[link]:hover:bg-muted/40 border border-transparent",
18
- inset:
19
- "text-foreground data-[link]:hover:bg-muted/40 -mx-5 border border-transparent",
20
- outline:
21
- "border-border bg-background text-foreground data-[link]:hover:bg-muted/40 border",
22
- muted:
23
- "bg-muted/50 text-foreground data-[link]:hover:bg-muted/70 border-transparent",
24
- },
25
- },
26
- defaultVariants: {
27
- variant: "default",
28
- },
29
- }
30
- )
31
-
32
- const { class: className, variant = "default", href, ...props } = Astro.props
33
-
34
- const Comp = href ? "a" : "div"
35
- ---
36
-
37
- <Comp
38
- data-slot="tile"
39
- data-variant={variant}
40
- data-link={href ? "" : undefined}
41
- class={cn(variants({ variant }), className)}
42
- href={href}
43
- {...props}
44
- >
45
- <slot />
46
- </Comp>