fulldev-ui 0.9.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +100 -16
- package/package.json +3 -2
- package/public/r/accordion.json +3 -5
- package/public/r/alert-dialog.json +1 -1
- 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 +6 -6
- 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 +2 -2
- 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 +6 -8
- 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 +6 -3
- 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/theme-toggle.json +5 -3
- 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-trigger.astro +7 -8
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- package/src/components/ui/navigation-menu/navigation-menu-list.astro +1 -1
- 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 +4 -5
- package/src/components/ui/sidebar/sidebar-menu-button.astro +13 -10
- package/src/components/ui/sidebar/sidebar-menu-sub-button.astro +10 -8
- package/src/components/ui/sidebar/sidebar-provider.astro +1 -13
- 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 -1
- package/src/components/ui/slider/slider.astro +6 -4
- package/src/components/ui/spinner/spinner.astro +4 -4
- package/src/components/ui/switch/switch.astro +1 -1
- package/src/components/ui/theme-toggle/theme-toggle.astro +4 -3
- 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
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
+
import ArrowLeft from "@lucide/astro/icons/arrow-left"
|
|
3
|
+
import ArrowRight from "@lucide/astro/icons/arrow-right"
|
|
4
|
+
import Check from "@lucide/astro/icons/check"
|
|
5
|
+
import ChevronDown from "@lucide/astro/icons/chevron-down"
|
|
6
|
+
import Copy from "@lucide/astro/icons/copy"
|
|
7
|
+
import ExternalLink from "@lucide/astro/icons/external-link"
|
|
8
|
+
import Claude from "simple-icons-astro/Claude"
|
|
9
|
+
import Cursor from "simple-icons-astro/Cursor"
|
|
10
|
+
import Markdown from "simple-icons-astro/Markdown"
|
|
11
|
+
|
|
2
12
|
import { cn } from "@/lib/utils"
|
|
3
13
|
import { Button } from "@/components/ui/button"
|
|
4
14
|
import { buttonVariants } from "@/components/ui/button/button-variants"
|
|
@@ -13,7 +23,6 @@ import {
|
|
|
13
23
|
DropdownMenuContent,
|
|
14
24
|
DropdownMenuTrigger,
|
|
15
25
|
} from "@/components/ui/dropdown-menu"
|
|
16
|
-
import { Icon } from "@/components/ui/icon"
|
|
17
26
|
import { SectionContainer } from "@/components/ui/section"
|
|
18
27
|
import {
|
|
19
28
|
Toc,
|
|
@@ -137,7 +146,7 @@ const openLinks = markdownUrl
|
|
|
137
146
|
</TypographyH1>
|
|
138
147
|
{
|
|
139
148
|
description && (
|
|
140
|
-
<TypographyLead class="max-w-2xl
|
|
149
|
+
<TypographyLead size="sm" class="max-w-2xl leading-7">
|
|
141
150
|
{description}
|
|
142
151
|
</TypographyLead>
|
|
143
152
|
)
|
|
@@ -154,16 +163,8 @@ const openLinks = markdownUrl
|
|
|
154
163
|
data-source={copyButton?.source}
|
|
155
164
|
aria-label={labels.copyMarkdown}
|
|
156
165
|
>
|
|
157
|
-
<
|
|
158
|
-
|
|
159
|
-
data-copy-icon
|
|
160
|
-
class="docs-copy-icon size-3.5"
|
|
161
|
-
/>
|
|
162
|
-
<Icon
|
|
163
|
-
name="check"
|
|
164
|
-
data-check-icon
|
|
165
|
-
class="docs-check-icon hidden size-3.5"
|
|
166
|
-
/>
|
|
166
|
+
<Copy data-copy-icon class="docs-copy-icon size-3.5" />
|
|
167
|
+
<Check data-check-icon class="docs-check-icon hidden size-3.5" />
|
|
167
168
|
<span>{labels.copyMarkdown}</span>
|
|
168
169
|
</Button>
|
|
169
170
|
)
|
|
@@ -175,7 +176,7 @@ const openLinks = markdownUrl
|
|
|
175
176
|
class={buttonVariants({ variant: "outline", size: "xs" })}
|
|
176
177
|
>
|
|
177
178
|
<span>{labels.openIn}</span>
|
|
178
|
-
<
|
|
179
|
+
<ChevronDown class="size-3.5 opacity-70" />
|
|
179
180
|
</DropdownMenuTrigger>
|
|
180
181
|
<DropdownMenuContent align="end" sideOffset={6} class="w-56">
|
|
181
182
|
{openLinks.map((link) => (
|
|
@@ -185,9 +186,7 @@ const openLinks = markdownUrl
|
|
|
185
186
|
rel="noreferrer noopener"
|
|
186
187
|
class="hover:bg-accent hover:text-accent-foreground flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none"
|
|
187
188
|
>
|
|
188
|
-
{link.icon === "markdown" &&
|
|
189
|
-
<Icon name="markdown" class="size-4 fill-current" />
|
|
190
|
-
)}
|
|
189
|
+
{link.icon === "markdown" && <Markdown class="size-4" />}
|
|
191
190
|
{link.icon === "chatgpt" && (
|
|
192
191
|
<svg
|
|
193
192
|
role="img"
|
|
@@ -199,17 +198,10 @@ const openLinks = markdownUrl
|
|
|
199
198
|
<path d="M22.282 9.821a5.985 5.985 0 0 0-.516-4.91 6.046 6.046 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.182a5.985 5.985 0 0 0-3.998 2.9 6.046 6.046 0 0 0 .743 7.097 5.98 5.98 0 0 0 .511 4.91 6.051 6.051 0 0 0 6.515 2.9A5.985 5.985 0 0 0 13.26 24a6.056 6.056 0 0 0 5.772-4.206 5.989 5.989 0 0 0 3.998-2.9 6.056 6.056 0 0 0-.748-7.073ZM13.26 22.43a4.476 4.476 0 0 1-2.876-1.04l.142-.081 4.778-2.758a.795.795 0 0 0 .393-.681v-6.737l2.02 1.169a.071.071 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.495 4.494Zm-9.66-4.125a4.471 4.471 0 0 1-.535-3.014l.142.085 4.783 2.758a.771.771 0 0 0 .781 0l5.843-3.368v2.332a.08.08 0 0 1-.034.062L9.74 19.95a4.499 4.499 0 0 1-6.14-1.646ZM2.34 7.896a4.485 4.485 0 0 1 2.366-1.973V11.6a.766.766 0 0 0 .388.677l5.814 3.354-2.02 1.169a.076.076 0 0 1-.071 0l-4.83-2.787A4.504 4.504 0 0 1 2.34 7.872Zm16.596 3.856-5.833-3.388L15.12 7.2a.076.076 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.104v-5.677a.79.79 0 0 0-.407-.667Zm2.011-3.024-.142-.085-4.774-2.782a.776.776 0 0 0-.785 0L9.409 9.23V6.897a.066.066 0 0 1 .028-.061l4.83-2.787a4.499 4.499 0 0 1 6.68 4.66ZM8.307 12.863l-2.02-1.164a.08.08 0 0 1-.038-.057V6.074a4.499 4.499 0 0 1 7.376-3.453l-.142.08-4.778 2.758a.795.795 0 0 0-.393.681Zm1.097-2.365 2.602-1.5 2.607 1.5v2.999l-2.597 1.5-2.607-1.5Z" />
|
|
200
199
|
</svg>
|
|
201
200
|
)}
|
|
202
|
-
{link.icon === "claude" &&
|
|
203
|
-
|
|
204
|
-
)}
|
|
205
|
-
{link.icon === "cursor" && (
|
|
206
|
-
<Icon name="cursor" class="size-4 fill-current" />
|
|
207
|
-
)}
|
|
201
|
+
{link.icon === "claude" && <Claude class="size-4" />}
|
|
202
|
+
{link.icon === "cursor" && <Cursor class="size-4" />}
|
|
208
203
|
<span>{link.label}</span>
|
|
209
|
-
<
|
|
210
|
-
name="external-link"
|
|
211
|
-
class="text-muted-foreground ml-auto size-3.5"
|
|
212
|
-
/>
|
|
204
|
+
<ExternalLink class="text-muted-foreground ml-auto size-3.5" />
|
|
213
205
|
</a>
|
|
214
206
|
))}
|
|
215
207
|
</DropdownMenuContent>
|
|
@@ -236,7 +228,7 @@ const openLinks = markdownUrl
|
|
|
236
228
|
variant="outline"
|
|
237
229
|
class="h-auto min-w-0 items-center justify-start gap-2 px-3 py-2 whitespace-normal"
|
|
238
230
|
>
|
|
239
|
-
<
|
|
231
|
+
<ArrowLeft class="size-4" />
|
|
240
232
|
<span class="truncate text-sm font-medium">
|
|
241
233
|
{previousPage.title}
|
|
242
234
|
</span>
|
|
@@ -253,7 +245,7 @@ const openLinks = markdownUrl
|
|
|
253
245
|
class="h-auto min-w-0 items-center justify-end gap-2 px-3 py-2 text-right whitespace-normal"
|
|
254
246
|
>
|
|
255
247
|
<span class="truncate text-sm font-medium">{nextPage.title}</span>
|
|
256
|
-
<
|
|
248
|
+
<ArrowRight class="size-4" />
|
|
257
249
|
</Button>
|
|
258
250
|
) : (
|
|
259
251
|
<div aria-hidden="true" />
|
|
@@ -322,30 +314,7 @@ const openLinks = markdownUrl
|
|
|
322
314
|
pre.before(wrapper)
|
|
323
315
|
wrapper.append(pre, button)
|
|
324
316
|
})
|
|
325
|
-
|
|
326
|
-
const writeToClipboard = async (text) => {
|
|
327
|
-
if (navigator.clipboard && window.isSecureContext) {
|
|
328
|
-
try {
|
|
329
|
-
await navigator.clipboard.writeText(text)
|
|
330
|
-
return true
|
|
331
|
-
} catch {
|
|
332
|
-
return false
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
return false
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
const showCopySuccess = (button) => {
|
|
340
|
-
button.querySelector("[data-copy-icon]")?.classList.add("hidden")
|
|
341
|
-
button.querySelector("[data-check-icon]")?.classList.remove("hidden")
|
|
342
|
-
setTimeout(() => {
|
|
343
|
-
button.querySelector("[data-copy-icon]")?.classList.remove("hidden")
|
|
344
|
-
button.querySelector("[data-check-icon]")?.classList.add("hidden")
|
|
345
|
-
}, 1200)
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
document.addEventListener("click", async (event) => {
|
|
317
|
+
document.addEventListener("click", (event) => {
|
|
349
318
|
const button = event.target?.closest?.(
|
|
350
319
|
"[id^='docs-copy-page-'], .docs-code-copy"
|
|
351
320
|
)
|
|
@@ -356,9 +325,12 @@ const openLinks = markdownUrl
|
|
|
356
325
|
.closest(".docs-code-block")
|
|
357
326
|
?.querySelector("pre")
|
|
358
327
|
?.textContent?.replace(/\n$/, "")
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
328
|
+
button.querySelector("[data-copy-icon]")?.classList.add("hidden")
|
|
329
|
+
button.querySelector("[data-check-icon]")?.classList.remove("hidden")
|
|
330
|
+
navigator.clipboard?.writeText(source ?? "")
|
|
331
|
+
setTimeout(() => {
|
|
332
|
+
button.querySelector("[data-copy-icon]")?.classList.remove("hidden")
|
|
333
|
+
button.querySelector("[data-check-icon]")?.classList.add("hidden")
|
|
334
|
+
}, 1200)
|
|
363
335
|
})
|
|
364
336
|
</script>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
+
import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
|
|
3
|
+
|
|
2
4
|
import { cn } from "@/lib/utils"
|
|
3
5
|
import { Button } from "@/components/ui/button"
|
|
4
6
|
import { Icon } from "@/components/ui/icon"
|
|
@@ -78,7 +80,7 @@ const { class: className, title, description, buttons, features } = Astro.props
|
|
|
78
80
|
class="text-primary mt-auto inline-flex items-center gap-1 text-sm font-medium hover:underline"
|
|
79
81
|
>
|
|
80
82
|
{feature.linkText}
|
|
81
|
-
<
|
|
83
|
+
<ArrowRightIcon class="size-3.5" />
|
|
82
84
|
</a>
|
|
83
85
|
)}
|
|
84
86
|
</div>
|
|
@@ -55,10 +55,12 @@ const { class: className, title, description, buttons, features } = Astro.props
|
|
|
55
55
|
}
|
|
56
56
|
</SectionContainer>
|
|
57
57
|
<SectionContainer>
|
|
58
|
-
<div
|
|
58
|
+
<div
|
|
59
|
+
class="ring-foreground/10 bg-border grid gap-px overflow-hidden rounded-xl ring-1 ring-inset sm:grid-cols-2 lg:grid-cols-3"
|
|
60
|
+
>
|
|
59
61
|
{
|
|
60
62
|
features.map((feature) => (
|
|
61
|
-
<div class="group/feature hover:bg-accent/30 relative flex flex-col items-center gap-4
|
|
63
|
+
<div class="bg-background group/feature hover:bg-accent/30 relative flex flex-col items-center gap-4 p-7 text-center transition-colors">
|
|
62
64
|
<div class="bg-primary/10 text-primary ring-primary/15 flex size-10 items-center justify-center rounded-lg ring-1 transition-transform ring-inset group-hover/feature:scale-105">
|
|
63
65
|
<Icon name={feature.icon} class="size-5" />
|
|
64
66
|
</div>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
+
import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
|
|
3
|
+
|
|
2
4
|
import { cn } from "@/lib/utils"
|
|
3
5
|
import { Button } from "@/components/ui/button"
|
|
4
6
|
import { Icon } from "@/components/ui/icon"
|
|
@@ -79,7 +81,7 @@ const { class: className, title, description, buttons, features } = Astro.props
|
|
|
79
81
|
class="text-primary mt-auto inline-flex items-center gap-1 text-sm font-medium hover:underline"
|
|
80
82
|
>
|
|
81
83
|
{feature.linkText}
|
|
82
|
-
<
|
|
84
|
+
<ArrowRightIcon class="size-3.5" />
|
|
83
85
|
</a>
|
|
84
86
|
)}
|
|
85
87
|
</div>
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
import Discord from "simple-icons-astro/Discord"
|
|
3
|
+
import Github from "simple-icons-astro/Github"
|
|
4
|
+
import X from "simple-icons-astro/X"
|
|
5
|
+
|
|
2
6
|
import { cn } from "@/lib/utils"
|
|
3
|
-
import { Icon } from "@/components/ui/icon"
|
|
4
7
|
import { Logo, LogoText } from "@/components/ui/logo"
|
|
5
8
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
6
9
|
import { Separator } from "@/components/ui/separator"
|
|
@@ -34,6 +37,12 @@ const {
|
|
|
34
37
|
columns,
|
|
35
38
|
copyright,
|
|
36
39
|
} = Astro.props
|
|
40
|
+
|
|
41
|
+
const iconMap: Record<string, any> = {
|
|
42
|
+
github: Github,
|
|
43
|
+
discord: Discord,
|
|
44
|
+
x: X,
|
|
45
|
+
}
|
|
37
46
|
---
|
|
38
47
|
|
|
39
48
|
<footer class={cn("", className)}>
|
|
@@ -50,17 +59,22 @@ const {
|
|
|
50
59
|
{
|
|
51
60
|
socials && socials.length > 0 && (
|
|
52
61
|
<div class="flex items-center gap-3">
|
|
53
|
-
{socials.map((social) =>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
{socials.map((social) => {
|
|
63
|
+
const IconComp = iconMap[social.icon]
|
|
64
|
+
return (
|
|
65
|
+
<a
|
|
66
|
+
href={social.href}
|
|
67
|
+
class="text-muted-foreground hover:text-foreground transition-colors"
|
|
68
|
+
aria-label={social.label}
|
|
69
|
+
target="_blank"
|
|
70
|
+
rel="noreferrer"
|
|
71
|
+
>
|
|
72
|
+
{IconComp && (
|
|
73
|
+
<IconComp class="size-4" fill="currentColor" />
|
|
74
|
+
)}
|
|
75
|
+
</a>
|
|
76
|
+
)
|
|
77
|
+
})}
|
|
64
78
|
</div>
|
|
65
79
|
)
|
|
66
80
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
import Discord from "simple-icons-astro/Discord"
|
|
3
|
+
import Github from "simple-icons-astro/Github"
|
|
4
|
+
import X from "simple-icons-astro/X"
|
|
5
|
+
|
|
2
6
|
import { cn } from "@/lib/utils"
|
|
3
|
-
import { Icon } from "@/components/ui/icon"
|
|
4
7
|
import { Logo, LogoText } from "@/components/ui/logo"
|
|
5
8
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
6
9
|
import { Separator } from "@/components/ui/separator"
|
|
@@ -31,6 +34,12 @@ const {
|
|
|
31
34
|
socials,
|
|
32
35
|
copyright,
|
|
33
36
|
} = Astro.props
|
|
37
|
+
|
|
38
|
+
const iconMap: Record<string, any> = {
|
|
39
|
+
github: Github,
|
|
40
|
+
discord: Discord,
|
|
41
|
+
x: X,
|
|
42
|
+
}
|
|
34
43
|
---
|
|
35
44
|
|
|
36
45
|
<footer class={cn("", className)}>
|
|
@@ -59,17 +68,20 @@ const {
|
|
|
59
68
|
{
|
|
60
69
|
socials && socials.length > 0 && (
|
|
61
70
|
<div class="flex items-center justify-center gap-3">
|
|
62
|
-
{socials.map((social) =>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
{socials.map((social) => {
|
|
72
|
+
const IconComp = iconMap[social.icon]
|
|
73
|
+
return (
|
|
74
|
+
<a
|
|
75
|
+
href={social.href}
|
|
76
|
+
class="text-muted-foreground hover:text-foreground transition-colors"
|
|
77
|
+
aria-label={social.label}
|
|
78
|
+
target="_blank"
|
|
79
|
+
rel="noreferrer"
|
|
80
|
+
>
|
|
81
|
+
{IconComp && <IconComp class="size-4" fill="currentColor" />}
|
|
82
|
+
</a>
|
|
83
|
+
)
|
|
84
|
+
})}
|
|
73
85
|
</div>
|
|
74
86
|
)
|
|
75
87
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
+
import Discord from "simple-icons-astro/Discord"
|
|
3
|
+
import Github from "simple-icons-astro/Github"
|
|
4
|
+
import X from "simple-icons-astro/X"
|
|
5
|
+
|
|
2
6
|
import { cn } from "@/lib/utils"
|
|
3
|
-
import { Icon } from "@/components/ui/icon"
|
|
4
7
|
import { Logo, LogoText } from "@/components/ui/logo"
|
|
5
8
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
6
9
|
import { Separator } from "@/components/ui/separator"
|
|
@@ -39,6 +42,12 @@ const {
|
|
|
39
42
|
copyright,
|
|
40
43
|
bottomLinks,
|
|
41
44
|
} = Astro.props
|
|
45
|
+
|
|
46
|
+
const iconMap: Record<string, any> = {
|
|
47
|
+
github: Github,
|
|
48
|
+
discord: Discord,
|
|
49
|
+
x: X,
|
|
50
|
+
}
|
|
42
51
|
---
|
|
43
52
|
|
|
44
53
|
<footer class={cn("", className)}>
|
|
@@ -55,17 +64,22 @@ const {
|
|
|
55
64
|
{
|
|
56
65
|
socials && socials.length > 0 && (
|
|
57
66
|
<div class="flex items-center gap-3">
|
|
58
|
-
{socials.map((social) =>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
{socials.map((social) => {
|
|
68
|
+
const IconComp = iconMap[social.icon]
|
|
69
|
+
return (
|
|
70
|
+
<a
|
|
71
|
+
href={social.href}
|
|
72
|
+
class="text-muted-foreground hover:text-foreground transition-colors"
|
|
73
|
+
aria-label={social.label}
|
|
74
|
+
target="_blank"
|
|
75
|
+
rel="noreferrer"
|
|
76
|
+
>
|
|
77
|
+
{IconComp && (
|
|
78
|
+
<IconComp class="size-4" fill="currentColor" />
|
|
79
|
+
)}
|
|
80
|
+
</a>
|
|
81
|
+
)
|
|
82
|
+
})}
|
|
69
83
|
</div>
|
|
70
84
|
)
|
|
71
85
|
}
|
|
@@ -33,7 +33,6 @@ type Props = {
|
|
|
33
33
|
navigation: {
|
|
34
34
|
label: string
|
|
35
35
|
href: string
|
|
36
|
-
active?: boolean
|
|
37
36
|
links?: {
|
|
38
37
|
label: string
|
|
39
38
|
href: string
|
|
@@ -51,7 +50,7 @@ const { class: className, logo, navigation, buttons } = Astro.props
|
|
|
51
50
|
---
|
|
52
51
|
|
|
53
52
|
<Header class={cn("", className)}>
|
|
54
|
-
<HeaderContainer class="
|
|
53
|
+
<HeaderContainer class="justify-between gap-4">
|
|
55
54
|
<HeaderGroup>
|
|
56
55
|
<Logo href={logo.href}>
|
|
57
56
|
<LogoImage
|
|
@@ -68,7 +67,7 @@ const { class: className, logo, navigation, buttons } = Astro.props
|
|
|
68
67
|
{
|
|
69
68
|
navigation.map((item, index) => (
|
|
70
69
|
<NavigationMenuItem value={`nav-${index}`}>
|
|
71
|
-
<NavigationMenuLink href={item.href}
|
|
70
|
+
<NavigationMenuLink href={item.href}>
|
|
72
71
|
{item.label}
|
|
73
72
|
</NavigationMenuLink>
|
|
74
73
|
</NavigationMenuItem>
|
|
@@ -57,7 +57,7 @@ const { class: className, title, description, buttons, image } = Astro.props
|
|
|
57
57
|
<Image
|
|
58
58
|
src={image.src}
|
|
59
59
|
alt={image.alt}
|
|
60
|
-
class="aspect-4/3 w-full rounded-xl border object-cover"
|
|
60
|
+
class="aspect-[4/3] w-full rounded-xl border object-cover"
|
|
61
61
|
widths={[640, 960, 1280]}
|
|
62
62
|
sizes="(min-width: 1024px) 75vw, 100vw"
|
|
63
63
|
loading="eager"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import { CheckIcon } from "@lucide/astro"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import { Button } from "@/components/ui/button"
|
|
7
|
-
import { Icon } from "@/components/ui/icon"
|
|
8
8
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
9
9
|
|
|
10
10
|
type Props = {
|
|
@@ -51,7 +51,7 @@ const {
|
|
|
51
51
|
{
|
|
52
52
|
features.map((feature) => (
|
|
53
53
|
<li class="flex items-center gap-2 text-sm">
|
|
54
|
-
<
|
|
54
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
55
55
|
{feature}
|
|
56
56
|
</li>
|
|
57
57
|
))
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import { CheckIcon } from "@lucide/astro"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
AvatarImage,
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
|
-
import { Icon } from "@/components/ui/icon"
|
|
14
14
|
import { Rating } from "@/components/ui/rating"
|
|
15
15
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
16
16
|
|
|
@@ -67,7 +67,7 @@ const {
|
|
|
67
67
|
{
|
|
68
68
|
features.map((feature) => (
|
|
69
69
|
<li class="flex items-center gap-3 text-sm">
|
|
70
|
-
<
|
|
70
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
71
71
|
{feature}
|
|
72
72
|
</li>
|
|
73
73
|
))
|
|
@@ -113,7 +113,7 @@ const {
|
|
|
113
113
|
<Image
|
|
114
114
|
src={image.src}
|
|
115
115
|
alt={image.alt}
|
|
116
|
-
class="aspect-4/3 w-full rounded-xl border object-cover"
|
|
116
|
+
class="aspect-[4/3] w-full rounded-xl border object-cover"
|
|
117
117
|
widths={[640, 960, 1280]}
|
|
118
118
|
sizes="(min-width: 1024px) 50vw, 100vw"
|
|
119
119
|
loading="eager"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import { CheckIcon } from "@lucide/astro"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
AvatarImage,
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
|
-
import { Icon } from "@/components/ui/icon"
|
|
14
14
|
import { Rating } from "@/components/ui/rating"
|
|
15
15
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
16
16
|
|
|
@@ -55,7 +55,7 @@ const {
|
|
|
55
55
|
<Image
|
|
56
56
|
src={image.src}
|
|
57
57
|
alt={image.alt}
|
|
58
|
-
class="aspect-4/3 w-full rounded-xl border object-cover"
|
|
58
|
+
class="aspect-[4/3] w-full rounded-xl border object-cover"
|
|
59
59
|
widths={[640, 960, 1280]}
|
|
60
60
|
sizes="(min-width: 1024px) 50vw, 100vw"
|
|
61
61
|
loading="eager"
|
|
@@ -75,7 +75,7 @@ const {
|
|
|
75
75
|
{
|
|
76
76
|
features.map((feature) => (
|
|
77
77
|
<li class="flex items-center gap-3 text-sm">
|
|
78
|
-
<
|
|
78
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
79
79
|
{feature}
|
|
80
80
|
</li>
|
|
81
81
|
))
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import { CheckIcon } from "@lucide/astro"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
AvatarImage,
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
|
-
import { Icon } from "@/components/ui/icon"
|
|
14
14
|
import { Rating } from "@/components/ui/rating"
|
|
15
15
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
16
16
|
|
|
@@ -69,7 +69,7 @@ const {
|
|
|
69
69
|
{
|
|
70
70
|
features.map((feature) => (
|
|
71
71
|
<li class="flex items-center gap-3 text-sm">
|
|
72
|
-
<
|
|
72
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
73
73
|
{feature}
|
|
74
74
|
</li>
|
|
75
75
|
))
|
|
@@ -115,7 +115,7 @@ const {
|
|
|
115
115
|
<Image
|
|
116
116
|
src={image.src}
|
|
117
117
|
alt={image.alt}
|
|
118
|
-
class="aspect-4/3 w-full rounded-xl border object-cover"
|
|
118
|
+
class="aspect-[4/3] w-full rounded-xl border object-cover"
|
|
119
119
|
widths={[640, 960, 1280]}
|
|
120
120
|
sizes="(min-width: 1024px) 60vw, 100vw"
|
|
121
121
|
loading="eager"
|
|
@@ -60,7 +60,7 @@ const { class: className, title, description, buttons, image } = Astro.props
|
|
|
60
60
|
<Image
|
|
61
61
|
src={image.src}
|
|
62
62
|
alt={image.alt}
|
|
63
|
-
class="aspect-4/3 w-full rounded-xl border object-cover"
|
|
63
|
+
class="aspect-[4/3] w-full rounded-xl border object-cover"
|
|
64
64
|
widths={[640, 960, 1280]}
|
|
65
65
|
sizes="(min-width: 1024px) 75vw, 100vw"
|
|
66
66
|
loading="eager"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
import type { ImageMetadata } from "astro"
|
|
3
3
|
import { Image } from "astro:assets"
|
|
4
|
+
import { CheckIcon } from "@lucide/astro"
|
|
4
5
|
|
|
5
6
|
import { cn } from "@/lib/utils"
|
|
6
7
|
import {
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
AvatarImage,
|
|
11
12
|
} from "@/components/ui/avatar"
|
|
12
13
|
import { Button } from "@/components/ui/button"
|
|
13
|
-
import { Icon } from "@/components/ui/icon"
|
|
14
14
|
import { Rating } from "@/components/ui/rating"
|
|
15
15
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
16
16
|
|
|
@@ -67,7 +67,7 @@ const {
|
|
|
67
67
|
{
|
|
68
68
|
features.map((feature) => (
|
|
69
69
|
<li class="flex items-center gap-3 text-sm">
|
|
70
|
-
<
|
|
70
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
71
71
|
{feature}
|
|
72
72
|
</li>
|
|
73
73
|
))
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
+
import ArrowRightIcon from "@lucide/astro/icons/arrow-right"
|
|
3
|
+
|
|
2
4
|
import { cn } from "@/lib/utils"
|
|
3
|
-
import { Icon } from "@/components/ui/icon"
|
|
4
5
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
5
6
|
|
|
6
7
|
type Props = {
|
|
@@ -40,10 +41,7 @@ const { class: className, title, description, links } = Astro.props
|
|
|
40
41
|
>
|
|
41
42
|
<span class="flex min-w-0 items-center justify-between gap-3">
|
|
42
43
|
<span class="text-sm font-medium">{item.title}</span>
|
|
43
|
-
<
|
|
44
|
-
name="arrow-right"
|
|
45
|
-
class="text-muted-foreground size-3.5 shrink-0 transition-transform group-hover/link:translate-x-0.5"
|
|
46
|
-
/>
|
|
44
|
+
<ArrowRightIcon class="text-muted-foreground size-3.5 shrink-0 transition-transform group-hover/link:translate-x-0.5" />
|
|
47
45
|
</span>
|
|
48
46
|
<span class="text-muted-foreground mt-1 block text-sm leading-6">
|
|
49
47
|
{item.description}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
+
import { CheckIcon } from "@lucide/astro"
|
|
3
|
+
|
|
2
4
|
import { cn } from "@/lib/utils"
|
|
3
5
|
import { Badge } from "@/components/ui/badge"
|
|
4
6
|
import { Button } from "@/components/ui/button"
|
|
@@ -10,7 +12,6 @@ import {
|
|
|
10
12
|
CardHeader,
|
|
11
13
|
CardTitle,
|
|
12
14
|
} from "@/components/ui/card"
|
|
13
|
-
import { Icon } from "@/components/ui/icon"
|
|
14
15
|
import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
|
|
15
16
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
16
17
|
import { Separator } from "@/components/ui/separator"
|
|
@@ -80,7 +81,7 @@ const { class: className, title, description, plans } = Astro.props
|
|
|
80
81
|
<ul class="flex flex-col gap-3">
|
|
81
82
|
{plan.features.map((feature) => (
|
|
82
83
|
<li class="flex items-center gap-3 text-sm">
|
|
83
|
-
<
|
|
84
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
84
85
|
{feature}
|
|
85
86
|
</li>
|
|
86
87
|
))}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
+
import { CheckIcon } from "@lucide/astro"
|
|
3
|
+
|
|
2
4
|
import { cn } from "@/lib/utils"
|
|
3
5
|
import { Button } from "@/components/ui/button"
|
|
4
6
|
import {
|
|
@@ -9,7 +11,6 @@ import {
|
|
|
9
11
|
CardHeader,
|
|
10
12
|
CardTitle,
|
|
11
13
|
} from "@/components/ui/card"
|
|
12
|
-
import { Icon } from "@/components/ui/icon"
|
|
13
14
|
import { Price, PriceUnit, PriceValue } from "@/components/ui/price"
|
|
14
15
|
import { Section, SectionContainer } from "@/components/ui/section"
|
|
15
16
|
import { Separator } from "@/components/ui/separator"
|
|
@@ -74,7 +75,7 @@ const { class: className, title, description, plans } = Astro.props
|
|
|
74
75
|
<ul class="flex flex-col gap-3">
|
|
75
76
|
{plan.features.map((feature) => (
|
|
76
77
|
<li class="flex items-center gap-3 text-sm">
|
|
77
|
-
<
|
|
78
|
+
<CheckIcon class="text-primary size-4 shrink-0" />
|
|
78
79
|
{feature}
|
|
79
80
|
</li>
|
|
80
81
|
))}
|