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.
- package/CHANGELOG.md +12 -0
- package/README.md +100 -16
- package/package.json +3 -2
- package/public/r/accordion.json +4 -6
- package/public/r/alert-dialog.json +3 -3
- package/public/r/alert.json +0 -5
- package/public/r/article-1.json +1 -1
- package/public/r/article-2.json +1 -1
- package/public/r/articles-1.json +1 -1
- package/public/r/articles-2.json +1 -1
- package/public/r/articles-3.json +1 -1
- package/public/r/avatar.json +1 -16
- package/public/r/badge.json +1 -1
- package/public/r/banner-1.json +5 -3
- package/public/r/banner-2.json +1 -1
- package/public/r/banner.json +5 -3
- package/public/r/blocks-1.json +6 -3
- package/public/r/breadcrumb.json +4 -4
- package/public/r/button.json +1 -1
- package/public/r/card.json +4 -4
- package/public/r/carousel.json +5 -5
- package/public/r/checkbox.json +1 -1
- package/public/r/combobox.json +8 -8
- package/public/r/command.json +6 -6
- package/public/r/components.json +1 -7
- package/public/r/contact-1.json +4 -2
- package/public/r/contact-2.json +4 -2
- package/public/r/contact-3.json +11 -3
- package/public/r/content-1.json +11 -3
- package/public/r/content-2.json +11 -3
- package/public/r/content-3.json +7 -1
- package/public/r/content-4.json +11 -3
- package/public/r/cta-2.json +7 -1
- package/public/r/cta-4.json +7 -1
- package/public/r/cta-5.json +11 -3
- package/public/r/cta-6.json +7 -1
- package/public/r/dialog.json +7 -7
- package/public/r/doc-1.json +6 -3
- package/public/r/dropdown-menu.json +9 -11
- package/public/r/features-1.json +5 -3
- package/public/r/features-2.json +5 -3
- package/public/r/features-4.json +5 -3
- package/public/r/features-5.json +4 -2
- package/public/r/field.json +2 -7
- package/public/r/footer-1.json +5 -3
- package/public/r/footer-2.json +5 -3
- package/public/r/footer-3.json +5 -3
- package/public/r/header-1.json +1 -1
- package/public/r/header.json +3 -0
- package/public/r/hero-13.json +1 -1
- package/public/r/hero-4.json +5 -3
- package/public/r/hero-5.json +5 -3
- package/public/r/hero-6.json +5 -3
- package/public/r/hero-7.json +5 -3
- package/public/r/hero-8.json +1 -1
- package/public/r/hero-9.json +5 -3
- package/public/r/hover-card.json +4 -3
- package/public/r/icon.json +1 -1
- package/public/r/input-group.json +1 -1
- package/public/r/item.json +2 -20
- package/public/r/kbd.json +2 -2
- package/public/r/layout.json +4 -7
- package/public/r/links-2.json +5 -3
- package/public/r/marquee.json +1 -1
- package/public/r/native-select.json +3 -3
- package/public/r/navigation-menu.json +8 -10
- package/public/r/page.json +17 -0
- package/public/r/popover.json +1 -1
- package/public/r/pricing-1.json +5 -3
- package/public/r/pricing-2.json +5 -3
- package/public/r/pricing-3.json +5 -3
- package/public/r/products-1.json +1 -1
- package/public/r/products-4.json +1 -1
- package/public/r/products-5.json +1 -1
- package/public/r/radio-group.json +1 -1
- package/public/r/rating.json +3 -3
- package/public/r/registry.json +186 -450
- package/public/r/reviews-1.json +5 -3
- package/public/r/reviews-2.json +5 -3
- package/public/r/reviews-3.json +5 -3
- package/public/r/reviews-4.json +1 -1
- package/public/r/reviews-5.json +5 -3
- package/public/r/select.json +6 -8
- package/public/r/services-1.json +11 -3
- package/public/r/services-2.json +7 -1
- package/public/r/services-3.json +7 -1
- package/public/r/services-4.json +11 -3
- package/public/r/services-5.json +5 -3
- package/public/r/services-6.json +11 -3
- package/public/r/services-7.json +11 -3
- package/public/r/sheet.json +7 -4
- package/public/r/sidebar-1.json +4 -2
- package/public/r/sidebar.json +10 -7
- package/public/r/slider.json +1 -1
- package/public/r/spinner.json +3 -3
- package/public/r/switch.json +1 -1
- package/public/r/tabs.json +1 -1
- package/public/r/theme-toggle.json +5 -3
- package/public/r/toggle.json +1 -1
- package/public/r/tooltip.json +1 -1
- package/public/r/typography.json +16 -16
- package/public/r/video.json +1 -1
- package/registry.json +186 -450
- package/src/components/blocks/article-1.astro +1 -1
- package/src/components/blocks/article-2.astro +1 -1
- package/src/components/blocks/articles-1.astro +1 -1
- package/src/components/blocks/articles-2.astro +2 -2
- package/src/components/blocks/articles-3.astro +1 -1
- package/src/components/blocks/banner-1.astro +3 -5
- package/src/components/blocks/banner-2.astro +1 -1
- package/src/components/blocks/blocks-1.astro +25 -37
- package/src/components/blocks/contact-3.astro +4 -3
- package/src/components/blocks/content-1.astro +5 -4
- package/src/components/blocks/content-2.astro +6 -5
- package/src/components/blocks/content-3.astro +9 -2
- package/src/components/blocks/content-4.astro +6 -5
- package/src/components/blocks/cta-2.astro +4 -3
- package/src/components/blocks/cta-4.astro +3 -2
- package/src/components/blocks/cta-5.astro +6 -5
- package/src/components/blocks/cta-6.astro +4 -3
- package/src/components/blocks/doc-1.astro +28 -56
- package/src/components/blocks/features-1.astro +3 -1
- package/src/components/blocks/features-2.astro +4 -2
- package/src/components/blocks/features-4.astro +3 -1
- package/src/components/blocks/footer-1.astro +26 -12
- package/src/components/blocks/footer-2.astro +24 -12
- package/src/components/blocks/footer-3.astro +26 -12
- package/src/components/blocks/header-1.astro +2 -3
- package/src/components/blocks/hero-13.astro +1 -1
- package/src/components/blocks/hero-4.astro +2 -2
- package/src/components/blocks/hero-5.astro +3 -3
- package/src/components/blocks/hero-6.astro +3 -3
- package/src/components/blocks/hero-7.astro +3 -3
- package/src/components/blocks/hero-8.astro +1 -1
- package/src/components/blocks/hero-9.astro +2 -2
- package/src/components/blocks/links-2.astro +3 -5
- package/src/components/blocks/pricing-1.astro +3 -2
- package/src/components/blocks/pricing-2.astro +3 -2
- package/src/components/blocks/pricing-3.astro +3 -2
- package/src/components/blocks/products-1.astro +1 -1
- package/src/components/blocks/products-4.astro +2 -2
- package/src/components/blocks/products-5.astro +4 -4
- package/src/components/blocks/reviews-1.astro +2 -2
- package/src/components/blocks/reviews-2.astro +2 -2
- package/src/components/blocks/reviews-3.astro +2 -2
- package/src/components/blocks/reviews-4.astro +4 -4
- package/src/components/blocks/reviews-5.astro +16 -25
- package/src/components/blocks/services-1.astro +7 -9
- package/src/components/blocks/services-2.astro +5 -4
- package/src/components/blocks/services-3.astro +6 -5
- package/src/components/blocks/services-4.astro +7 -9
- package/src/components/blocks/services-5.astro +3 -4
- package/src/components/blocks/services-6.astro +7 -6
- package/src/components/blocks/services-7.astro +7 -9
- package/src/components/blocks/sidebar-1.astro +42 -97
- package/src/components/ui/accordion/accordion-content.astro +2 -1
- package/src/components/ui/accordion/accordion-trigger.astro +7 -8
- package/src/components/ui/alert-dialog/alert-dialog-content.astro +1 -1
- package/src/components/ui/alert-dialog/alert-dialog-overlay.astro +1 -1
- package/src/components/ui/alert-dialog/alert-dialog.astro +23 -3
- package/src/components/ui/avatar/avatar.astro +1 -1
- package/src/components/ui/badge/badge.astro +1 -0
- package/src/components/ui/banner/banner-container.astro +3 -3
- package/src/components/ui/breadcrumb/breadcrumb-ellipsis.astro +2 -2
- package/src/components/ui/breadcrumb/breadcrumb-separator.astro +2 -2
- package/src/components/ui/button/button-variants.ts +8 -7
- package/src/components/ui/card/card-content.astro +1 -1
- package/src/components/ui/card/card-footer.astro +1 -1
- package/src/components/ui/card/card-header.astro +1 -1
- package/src/components/ui/card/card.astro +1 -1
- package/src/components/ui/carousel/carousel-next.astro +3 -3
- package/src/components/ui/carousel/carousel-previous.astro +3 -3
- package/src/components/ui/checkbox/checkbox.astro +1 -1
- package/src/components/ui/combobox/combobox-input.astro +2 -2
- package/src/components/ui/combobox/combobox-item.astro +4 -4
- package/src/components/ui/combobox/combobox-list.astro +1 -1
- package/src/components/ui/combobox/combobox-trigger.astro +2 -5
- package/src/components/ui/combobox/combobox.astro +3 -0
- package/src/components/ui/command/command-dialog.astro +10 -10
- package/src/components/ui/command/command-input.astro +2 -2
- package/src/components/ui/command/command-item.astro +4 -5
- package/src/components/ui/dialog/dialog-close.astro +2 -2
- package/src/components/ui/dialog/dialog-content.astro +3 -3
- package/src/components/ui/dialog/dialog-overlay.astro +1 -1
- package/src/components/ui/dialog/dialog.astro +26 -3
- package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-content.astro +4 -4
- package/src/components/ui/dropdown-menu/dropdown-menu-item.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-label.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro +4 -5
- package/src/components/ui/dropdown-menu/dropdown-menu-shortcut.astro +1 -1
- package/src/components/ui/dropdown-menu/dropdown-menu.astro +3 -0
- package/src/components/ui/field/field-label.astro +1 -1
- package/src/components/ui/field/field-title.astro +1 -1
- package/src/components/ui/hover-card/hover-card-content.astro +4 -4
- package/src/components/ui/hover-card/hover-card.astro +8 -5
- package/src/components/ui/icon/icon.astro +8 -17
- package/src/components/ui/input-group/input-group-button.astro +0 -1
- package/src/components/ui/item/item-media.astro +1 -1
- package/src/components/ui/item/item.astro +0 -18
- package/src/components/ui/kbd/kbd-group.astro +1 -1
- package/src/components/ui/kbd/kbd.astro +1 -1
- package/src/components/ui/layout/layout-body.astro +1 -1
- package/src/components/ui/layout/layout-head.astro +3 -2
- package/src/components/ui/layout/layout-main.astro +1 -1
- package/src/components/ui/layout/layout.astro +4 -0
- package/src/components/ui/marquee/marquee.astro +50 -69
- package/src/components/ui/native-select/native-select.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu-content.astro +3 -1
- package/src/components/ui/navigation-menu/navigation-menu-indicator.astro +2 -1
- package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-positioner.astro +2 -0
- package/src/components/ui/navigation-menu/navigation-menu-trigger.astro +2 -3
- package/src/components/ui/navigation-menu/navigation-menu.astro +1 -1
- package/src/components/ui/popover/popover-content.astro +1 -1
- package/src/components/ui/radio-group/radio-group-item.astro +3 -3
- package/src/components/ui/rating/rating.astro +3 -3
- package/src/components/ui/select/select-content.astro +1 -1
- package/src/components/ui/select/select-item.astro +4 -4
- package/src/components/ui/select/select-trigger.astro +3 -6
- package/src/components/ui/select/select.astro +6 -0
- package/src/components/ui/sheet/sheet-content.astro +6 -7
- package/src/components/ui/sheet/sheet.astro +1 -89
- package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -11
- package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
- package/src/components/ui/sidebar/sidebar-provider.astro +37 -15
- package/src/components/ui/sidebar/sidebar-rail.astro +1 -1
- package/src/components/ui/sidebar/sidebar-trigger.astro +3 -3
- package/src/components/ui/sidebar/sidebar.astro +1 -2
- package/src/components/ui/slider/slider.astro +8 -6
- package/src/components/ui/spinner/spinner.astro +4 -4
- package/src/components/ui/switch/switch.astro +5 -3
- package/src/components/ui/tabs/tabs-content.astro +2 -1
- package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
- package/src/components/ui/toggle/toggle.astro +2 -0
- package/src/components/ui/tooltip/tooltip-content.astro +1 -1
- package/src/components/ui/typography/typography-a.astro +19 -4
- package/src/components/ui/typography/typography-blockquote.astro +26 -6
- package/src/components/ui/typography/typography-h1.astro +7 -9
- package/src/components/ui/typography/typography-h2.astro +12 -9
- package/src/components/ui/typography/typography-h3.astro +7 -9
- package/src/components/ui/typography/typography-h4.astro +7 -9
- package/src/components/ui/typography/typography-inline-code.astro +28 -12
- package/src/components/ui/typography/typography-lead.astro +29 -4
- package/src/components/ui/typography/typography-list-item.astro +25 -9
- package/src/components/ui/typography/typography-list.astro +29 -11
- package/src/components/ui/typography/typography-p.astro +26 -6
- package/src/components/ui/typography/typography-table-cell.astro +32 -13
- package/src/components/ui/typography/typography-table-head.astro +27 -13
- package/src/components/ui/typography/typography-table-row.astro +23 -13
- package/src/components/ui/typography/typography-table.astro +29 -20
- package/src/components/ui/typography/typography.astro +172 -46
- package/src/components/ui/video/video.astro +11 -27
- package/src/styles/global.css +2 -15
- package/public/r/beta-repo-setup.json +0 -125
- package/public/r/blocks.json +0 -91
- package/public/r/content-5.json +0 -17
- package/public/r/content-6.json +0 -17
- package/public/r/gradient.json +0 -17
- package/public/r/init.json +0 -23
- package/public/r/tile.json +0 -27
- package/src/components/blocks/content-5.astro +0 -115
- package/src/components/blocks/content-6.astro +0 -91
- package/src/components/ui/gradient/gradient.astro +0 -45
- package/src/components/ui/gradient/index.ts +0 -1
- package/src/components/ui/tile/index.ts +0 -3
- package/src/components/ui/tile/tile-content.astro +0 -17
- package/src/components/ui/tile/tile-group.astro +0 -76
- package/src/components/ui/tile/tile.astro +0 -46
package/public/r/blocks.json
DELETED
|
@@ -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
|
-
}
|
package/public/r/content-5.json
DELETED
|
@@ -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
|
-
}
|
package/public/r/content-6.json
DELETED
|
@@ -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
|
-
}
|
package/public/r/gradient.json
DELETED
|
@@ -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
|
-
}
|
package/public/r/init.json
DELETED
|
@@ -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
|
-
}
|
package/public/r/tile.json
DELETED
|
@@ -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,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>
|