diff --git a/.changeset/block-props-simplification.md b/.changeset/block-props-simplification.md new file mode 100644 index 000000000..8cb0cdb0c --- /dev/null +++ b/.changeset/block-props-simplification.md @@ -0,0 +1,15 @@ +--- +"fulldev-ui": minor +--- + +Simplify block props and improve block semantics (breaking). + +- Blocks drop unused fields and button variants: button styles are fixed in each block. User-facing copy such as screen reader labels, close labels and rating labels is passed in by the caller. Banner1 takes an optional `storageKey` for dismissal instead of a shared hardcoded key. `BannerContainer` gains an optional `closeLabel` and `Sidebar` gains optional `mobileTitle` and `mobileDescription`. +- `SectionContainer` only sets width, gutter and position. It no longer adds `flex flex-col gap-8`; add the layout classes your content needs, such as `class="flex flex-col gap-8"`. +- Marquee renders its items once and moves them with Embla and its Auto Scroll plugin. Compose it from `Marquee`, `MarqueeContent` (`reverse` replaces `direction`), `MarqueeItem` and `MarqueeToggle` (`playLabel`, `pauseLabel`). It stays static without an enabled, visible toggle, with reduced motion, or when the items do not fill the row. The `duration`, `gap`, `infinite` and `pauseOnHover` props are removed; set `--marquee-gap` for spacing. Logos2, Reviews4 and Reviews5 take `labels: { play, pause }`. +- `PriceValue` takes `discountLabel` for the savings badge, keeps a `0` price or compare-at price, and only shows a compare-at price above the price. Pricing1-3, Product1 and Products1-5 take `locale` and `discountLabel`, and every price is `{ value, compareAt?, currency, unit }`. Pricing2 emphasizes plans with `featured` instead of the first plan. +- Header1-5 render their `buttons` in the mobile menu too and no longer have a default or `mobile` slot. Buttons always show their label and open in the same tab unless they set `target: "_blank"`. The logo takes typed images without `alt`, and Header4 and Header5 menu images are decorative. +- Features1 and Features4 take `link?: { label, href }` instead of `href` and `linkText`. Services4 and Services5 take a `link` per service instead of `linkLabel`. +- Contact1-3 render your form from their default slot instead of building one from `form` props. Contact items link their visible text. +- Sidebar1 takes `currentPath` and native attributes for its root, and `labels.sidebar` names the sidebar while `labels.sidebarToggle` names its trigger. +- Hero1's badge is optional. Background images in Hero3, Hero4, Hero9-11 and CTA4 are decorative and take no `alt`; social proof avatars no longer take `name`. diff --git a/astro.config.ts b/astro.config.ts index 69749a542..0d9dfd48b 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -38,7 +38,7 @@ export default defineConfig({ processor: unified(), shikiConfig: { themes: { - light: "github-light", + light: "github-light-high-contrast", dark: "github-dark-default", }, }, diff --git a/package.json b/package.json index aaec83daf..9606c9738 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "images": "node scripts/images.ts", "ui:add": "node scripts/ui-add.ts", "build": "astro build && html-validate dist && linkinator dist", + "a11y": "pnpm build && playwright install chromium --only-shell && node scripts/a11y.mjs", "registry:build": "pnpm registry:meta && node scripts/registry-adapt.mjs && shadcn build --output node_modules/.cache/fulldev-registry && node scripts/registry-styles.mjs && prettier --write registry.json public/r registry/styles/adapted --log-level warn", "registry:check": "pnpm registry:validate && pnpm registry:build && git diff --exit-code -- registry.json public/r registry/styles/adapted", "registry:validate": "node scripts/registry-validate.mjs", @@ -97,6 +98,7 @@ "class-variance-authority": "^0.7.1", "cn": "^0.4.0", "embla-carousel": "8.6.0", + "embla-carousel-auto-scroll": "8.6.0", "lucide-static": "^1.49.0", "shadcn": "^4.21.0", "simple-icons": "^16.33.0", @@ -111,6 +113,7 @@ "@astrojs/markdown-remark": "^7.3.1", "@astrojs/mdx": "^8.0.2", "@astrojs/sitemap": "^3.7.4", + "@axe-core/playwright": "4.13.0", "@changesets/changelog-github": "^0.7.0", "@changesets/cli": "^2.31.0", "@eslint/js": "^10.0.1", @@ -128,6 +131,7 @@ "html-validate": "^11.16.1", "knip": "^6.39.0", "linkinator": "^8.1.0", + "playwright": "1.64.0", "posthog-js": "1.434.15", "prettier": "^3.9.9", "prettier-plugin-astro": "^1.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b29eedb94..79954b676 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -250,6 +250,9 @@ importers: embla-carousel: specifier: 8.6.0 version: 8.6.0 + embla-carousel-auto-scroll: + specifier: 8.6.0 + version: 8.6.0(embla-carousel@8.6.0) lucide-static: specifier: ^1.49.0 version: 1.49.0 @@ -275,6 +278,9 @@ importers: '@astrojs/sitemap': specifier: ^3.7.4 version: 3.7.4 + '@axe-core/playwright': + specifier: 4.13.0 + version: 4.13.0(playwright-core@1.64.0) '@changesets/changelog-github': specifier: ^0.7.0 version: 0.7.0 @@ -326,6 +332,9 @@ importers: linkinator: specifier: ^8.1.0 version: 8.1.0 + playwright: + specifier: 1.64.0 + version: 1.64.0 posthog-js: specifier: 1.434.15 version: 1.434.15 @@ -551,6 +560,11 @@ packages: '@astrojs/yaml2ts@0.2.4': resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + '@axe-core/playwright@4.13.0': + resolution: {integrity: sha512-6YLx+kxXu5GJceG4ozFg+33a2EMTdjYwWGloJ3sb9Kta5pp+ZNS53uxGVog5JetIY8s++P5UrtX+cri+u0VAVg==} + peerDependencies: + playwright-core: '>= 1.0.0' + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -2642,6 +2656,11 @@ packages: electron-to-chromium@1.5.443: resolution: {integrity: sha512-TDJG36L9A3CWWwZ97HKaE+Iz1sW80pNp6sAU0owzCIV3Zc9eVyRqZK8Vz6NKuMIU8WjP0pIkoqCa0VRf/yFD0Q==} + embla-carousel-auto-scroll@8.6.0: + resolution: {integrity: sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==} + peerDependencies: + embla-carousel: 8.6.0 + embla-carousel@8.6.0: resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} @@ -4298,6 +4317,16 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} + playwright-core@1.64.0: + resolution: {integrity: sha512-T9r+MZkTECl2+oUcZ26YgZzTrYidTsIhYYkJix+6iDOymOb1FB2RLLSOxRGnZGv5DStt+aduIVbt+E8WygXYpg==} + engines: {node: '>=20'} + hasBin: true + + playwright@1.64.0: + resolution: {integrity: sha512-kVzTnYFYEyQ9RGzBjNCd2+yEqWmVbxl3AHPynv3qQ6JTjv4a+kwRcnqQwIpuP3NnrnIrE/Q6wWAIAvMfIE2/Yg==} + engines: {node: '>=20'} + hasBin: true + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -5665,6 +5694,11 @@ snapshots: dependencies: yaml: 2.9.1 + '@axe-core/playwright@4.13.0(playwright-core@1.64.0)': + dependencies: + axe-core: 4.13.0 + playwright-core: 1.64.0 + '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -7805,6 +7839,10 @@ snapshots: electron-to-chromium@1.5.443: {} + embla-carousel-auto-scroll@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + embla-carousel@8.6.0: {} emmet@2.4.11: @@ -9925,6 +9963,12 @@ snapshots: dependencies: find-up: 3.0.0 + playwright-core@1.64.0: {} + + playwright@1.64.0: + dependencies: + playwright-core: 1.64.0 + possible-typed-array-names@1.1.0: {} postcss-selector-parser@7.1.6: diff --git a/public/r/article-1.json b/public/r/article-1.json index 6bdf16d1f..a864d2860 100644 --- a/public/r/article-1.json +++ b/public/r/article-1.json @@ -5,13 +5,12 @@ "description": "Editorial article layouts for long-form stories, interviews, and analysis.", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/article-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n author,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && (\n \n {badge}\n \n )}\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n \n \n {author.initials}\n \n
\n

{author.name}

\n

{author.date}

\n
\n
\n
\n\n \n\n
\n \n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n author,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n \n \n {author.initials}\n \n
\n

{author.name}

\n

{author.date}

\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/article-2.json b/public/r/article-2.json index 01da358a6..c0a3f5f9a 100644 --- a/public/r/article-2.json +++ b/public/r/article-2.json @@ -5,13 +5,12 @@ "description": "Editorial article layouts for long-form stories, interviews, and analysis.", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/article-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n readingTime: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n author,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n \n \n {author.initials}\n \n
\n

\n {author.name}{\" \"}\n \n · {author.date}\n \n

\n

{author.readingTime}

\n
\n
\n
\n\n \n\n
\n \n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n readingTime: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n author,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n \n \n {author.initials}\n \n
\n

\n {author.name}{\" \"}\n \n · {author.date}\n \n

\n

{author.readingTime}

\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/articles-1.json b/public/r/articles-1.json index e742cb898..2c9f3ed3b 100644 --- a/public/r/articles-1.json +++ b/public/r/articles-1.json @@ -5,13 +5,12 @@ "description": "Collection and listing layouts for journals, magazines, and editorial feeds.", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/articles-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n articles,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && (\n \n {badge}\n \n )}\n {title}\n

{description}

\n
\n\n
\n {articles.map((article) => (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

{article.author.date}

\n
\n
\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, title, description, articles, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n

{description}

\n
\n\n
\n {articles.map((article) => {\n const Wrapper = article.href != null ? \"a\" : \"div\"\n return (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

\n {article.author.date}\n

\n
\n
\n \n )\n })}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/articles-2.json b/public/r/articles-2.json index 266269748..6e60d3f18 100644 --- a/public/r/articles-2.json +++ b/public/r/articles-2.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/articles-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n featured: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n featured,\n articles,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n \n {title}\n \n

\n {description}\n

\n
\n\n \n \n
\n \n {featured.category}\n \n

\n {featured.title}\n

\n

\n {featured.description}\n

\n
\n \n \n {featured.author.initials}\n \n
\n

{featured.author.name}

\n

{featured.author.date}

\n
\n
\n
\n \n\n
\n {articles.map((article) => (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

{article.author.date}

\n
\n
\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n featured: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n featured,\n articles,\n ...props\n} = Astro.props\n\nconst FeaturedWrapper = featured.href != null ? \"a\" : \"div\"\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n\n \n \n
\n \n {featured.category}\n \n

\n {featured.title}\n

\n

\n {featured.description}\n

\n
\n \n \n {featured.author.initials}\n \n
\n

{featured.author.name}

\n

{featured.author.date}

\n
\n
\n
\n \n\n
\n {articles.map((article) => {\n const Wrapper = article.href != null ? \"a\" : \"div\"\n return (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

\n {article.author.date}\n

\n
\n
\n \n )\n })}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/articles-3.json b/public/r/articles-3.json index aecb82d0d..bd0837d65 100644 --- a/public/r/articles-3.json +++ b/public/r/articles-3.json @@ -5,13 +5,12 @@ "description": "Collection and listing layouts for journals, magazines, and editorial feeds.", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/articles-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, badge, title, articles, ...props } = Astro.props\n---\n\n
\n \n
\n
\n {badge && (\n \n {badge}\n \n )}\n {title}\n
\n
\n\n
\n {articles.map((article) => (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

{article.author.date}

\n
\n
\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n articles: {\n image: {\n src: ImageMetadata\n alt: string\n }\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, title, articles, ...props } = Astro.props\n---\n\n
\n \n
\n
\n {title}\n
\n
\n\n
\n {articles.map((article) => {\n const Wrapper = article.href != null ? \"a\" : \"div\"\n return (\n \n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

\n {article.author.date}\n

\n
\n
\n \n )\n })}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/articles-4.json b/public/r/articles-4.json index 222f11bc5..ddff63354 100644 --- a/public/r/articles-4.json +++ b/public/r/articles-4.json @@ -5,13 +5,12 @@ "description": "Collection and listing layouts for journals, magazines, and editorial feeds.", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/articles-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n articles: {\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n articles,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n \n {title}\n \n

\n {description}\n

\n
\n\n
\n {articles.map((article) => (\n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

{article.author.date}

\n
\n
\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n articles: {\n category: string\n title: string\n description: string\n href?: string\n author: {\n image?: ImageMetadata\n initials: string\n name: string\n date: string\n }\n }[]\n}\n\nconst { class: className, title, description, articles, ...props } = Astro.props\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n\n
\n {articles.map((article) => {\n const Wrapper = article.href != null ? \"a\" : \"div\"\n return (\n \n
\n

\n {article.category}\n

\n

\n {article.title}\n

\n

\n {article.description}\n

\n
\n
\n \n \n {article.author.initials}\n \n
\n

{article.author.name}

\n

\n {article.author.date}\n

\n
\n
\n \n )\n })}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/banner-1.json b/public/r/banner-1.json index f83aa2ac3..3d0e3d2b1 100644 --- a/public/r/banner-1.json +++ b/public/r/banner-1.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/banner-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\n\ntype Props = HTMLAttributes<\"aside\"> & {\n title: string\n description: string\n link?: {\n label: string\n href: string\n }\n}\n\nconst { class: className, title, description, link, ...props } = Astro.props\n---\n\n\n \n

\n {title}{\" \"}\n {\" \"}\n {description}\n

\n {link && (\n \n {link.label}\n \n \n )}\n
\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\n\ntype Props = HTMLAttributes<\"aside\"> & {\n title: string\n description: string\n link: {\n label: string\n href: string\n }\n closeLabel: string\n storageKey?: string\n}\n\nconst {\n class: className,\n title,\n description,\n link,\n closeLabel,\n storageKey,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}{\" \"}\n {\" \"}\n {description}\n

\n \n {link.label}\n \n \n \n\n", "type": "registry:block" } ], diff --git a/public/r/banner-2.json b/public/r/banner-2.json index 6e48f54fe..eb1d06077 100644 --- a/public/r/banner-2.json +++ b/public/r/banner-2.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/banner-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\nimport { Button } from \"@/components/ui/button\"\n\ntype Props = HTMLAttributes<\"aside\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst { class: className, title, description, buttons, ...props } = Astro.props\n---\n\n\n \n
\n

{title}

\n

{description}

\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Banner, BannerContainer } from \"@/components/ui/banner\"\nimport { Button } from \"@/components/ui/button\"\n\ntype Props = HTMLAttributes<\"aside\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n}\n\nconst { class: className, title, description, buttons, ...props } = Astro.props\n---\n\n\n \n
\n

{title}

\n

{description}

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n \n
\n", "type": "registry:block" } ], diff --git a/public/r/banner.json b/public/r/banner.json index e34d9309c..d3a8e8580 100644 --- a/public/r/banner.json +++ b/public/r/banner.json @@ -9,12 +9,12 @@ "files": [ { "path": "src/components/ui/banner/banner.astro", - "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<\"aside\"> &\n VariantProps & {\n storageKey?: string\n }\n\nconst variants = cva(\"py-2 relative flex items-center\", {\n variants: {\n variant: {\n default: \"bg-foreground text-background w-full\",\n floating:\n \"my-2 rounded-lg border bg-background shadow-sm mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst { class: className, variant, storageKey, ...props } = Astro.props\n---\n\n\n \n\n\n\n", + "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<\"aside\"> &\n VariantProps & {\n storageKey?: string\n }\n\nconst variants = cva(\"py-2 relative flex items-center\", {\n variants: {\n variant: {\n default: \"bg-foreground text-background w-full\",\n floating:\n \"my-2 rounded-lg border bg-background shadow-sm mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst {\n class: className,\n variant = \"default\",\n storageKey,\n ...props\n} = Astro.props\n---\n\n\n \n\n\n\n", "type": "registry:ui" }, { "path": "src/components/ui/banner/banner-container.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n showClose?: boolean\n}\n\nconst { class: className, showClose = true, ...props } = Astro.props\n---\n\n\n \n {showClose && (\n \n \n Close\n \n )}\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n showClose?: boolean\n closeLabel?: string\n}\n\nconst {\n class: className,\n showClose = true,\n closeLabel = \"Close\",\n \"data-slot\": dataSlot = \"banner-container\",\n ...props\n} = Astro.props\n---\n\n\n \n {showClose && (\n \n \n {closeLabel}\n \n )}\n\n", "type": "registry:ui" }, { diff --git a/public/r/blocks-1.json b/public/r/blocks-1.json index 7c342e844..8719d1a46 100644 --- a/public/r/blocks-1.json +++ b/public/r/blocks-1.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/blocks-1.astro", - "content": "---\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons/icons/claude.svg\"\nimport Cursor from \"simple-icons/icons/cursor.svg\"\nimport Markdown from \"simple-icons/icons/markdown.svg\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n pagination: {\n previous: string\n next: string\n ariaLabel: string\n }\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n previousPage,\n nextPage,\n labels,\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst assistantPrompt = markdownUrl\n ? `Read ${new URL(markdownUrl, Astro.site ?? Astro.url.origin).href}, I want to ask questions about it.`\n : \"\"\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n
\n
\n \n {title}\n \n {description && (\n \n {description}\n \n )}\n
\n
\n {showCopyButton && (\n \n \n
\n
\n\n \n \n \n\n {showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )}\n
\n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons/icons/claude.svg\"\nimport Cursor from \"simple-icons/icons/cursor.svg\"\nimport Markdown from \"simple-icons/icons/markdown.svg\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n title: string\n description: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n assistantPrompt: string\n pagination: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n previousPage,\n nextPage,\n labels,\n ...props\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n
\n
\n \n {title}\n \n \n {description}\n \n
\n
\n {showCopyButton && (\n \n \n
\n
\n\n \n \n \n\n {showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )}\n
\n\n\n\n", "type": "registry:block" } ], diff --git a/public/r/breadcrumb.json b/public/r/breadcrumb.json index e97c174a8..ada28b337 100644 --- a/public/r/breadcrumb.json +++ b/public/r/breadcrumb.json @@ -9,7 +9,7 @@ "files": [ { "path": "src/components/ui/breadcrumb/breadcrumb.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"nav\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"nav\">\n\nconst {\n class: className,\n \"aria-label\": ariaLabel = \"breadcrumb\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/carousel.json b/public/r/carousel.json index 3e3052ad3..5584f6f46 100644 --- a/public/r/carousel.json +++ b/public/r/carousel.json @@ -13,27 +13,27 @@ "files": [ { "path": "src/components/ui/carousel/carousel.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { EmblaOptionsType } from \"embla-carousel\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n opts?: EmblaOptionsType\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nconst {\n class: className,\n opts,\n orientation = opts?.axis === \"y\" ? \"vertical\" : \"horizontal\",\n ...props\n} = Astro.props\n\n// A named section is a region landmark. Without a name it would have no role,\n// so it becomes a group, the other container role the APG carousel allows.\nconst named = Boolean(props[\"aria-label\"] || props[\"aria-labelledby\"])\n\nconst resolvedOpts: EmblaOptionsType = {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n}\n---\n\n\n \n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { EmblaOptionsType } from \"embla-carousel\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n opts?: EmblaOptionsType\n orientation?: \"horizontal\" | \"vertical\"\n}\n\nconst {\n class: className,\n opts,\n orientation = opts?.axis === \"y\" ? \"vertical\" : \"horizontal\",\n \"aria-roledescription\": roleDescription = \"carousel\",\n \"data-slot\": dataSlot = \"carousel\",\n // A named section is a region landmark. Without a name it would have no\n // role, so it becomes a group, the other container role the APG carousel\n // allows.\n role = Astro.props[\"aria-label\"] || Astro.props[\"aria-labelledby\"]\n ? undefined\n : \"group\",\n ...props\n} = Astro.props\n\nconst resolvedOpts: EmblaOptionsType = {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n}\n---\n\n\n \n\n\n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-content.astro", - "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
\n \n \n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"carousel-container\",\n ...props\n} = Astro.props\n---\n\n\n \n \n
\n
\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-item.astro", - "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\n \n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"aria-roledescription\": roleDescription = \"slide\",\n \"data-slot\": dataSlot = \"carousel-item\",\n role = \"group\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-next.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n ...props\n} = Astro.props\n---\n\n\n \n \n Next slide\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n \"data-slot\": dataSlot = \"carousel-next\",\n ...props\n} = Astro.props\n---\n\n\n \n \n Next slide\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/carousel/carousel-previous.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n ...props\n} = Astro.props\n---\n\n\n \n \n Previous slide\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> & ButtonVariantProps\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n disabled,\n \"data-slot\": dataSlot = \"carousel-previous\",\n ...props\n} = Astro.props\n---\n\n\n \n \n Previous slide\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/contact-1.json b/public/r/contact-1.json index 5108a5643..cb4345f47 100644 --- a/public/r/contact-1.json +++ b/public/r/contact-1.json @@ -3,22 +3,15 @@ "name": "contact-1", "title": "Contact 1", "description": "Contact sections for project inquiries, support, and sales conversations.", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ { "path": "src/components/blocks/contact-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Field,\n FieldDescription,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from \"@/components/ui/field\"\nimport { Form } from \"@/components/ui/form\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n form: {\n id?: string\n action?: string\n method?: \"get\" | \"post\"\n legend: string\n nameLabel: string\n namePlaceholder: string\n emailLabel: string\n emailPlaceholder: string\n messageLabel: string\n messagePlaceholder: string\n messageDescription: string\n actionLabel: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n form,\n ...props\n} = Astro.props\nconst formId = form.id ?? `contact-${crypto.randomUUID()}`\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
\n {contactItems.map((item) => (\n
\n {item.href ? (\n \n \n \n ) : (\n \n \n \n )}\n

{item.title}

\n

\n {item.description}\n

\n
\n ))}\n
\n
\n \n
\n
\n
\n {form.legend}\n \n
\n \n {form.nameLabel}\n \n \n \n \n {form.emailLabel}\n \n \n \n
\n \n \n {form.messageLabel}\n \n \n {form.messageDescription}\n \n \n
\n
\n
\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
    \n {contactItems.map((item) => (\n
  • \n \n \n \n

    {item.title}

    \n {item.href != null ? (\n \n {item.description}\n \n ) : (\n

    \n {item.description}\n

    \n )}\n
  • \n ))}\n
\n
\n {Astro.slots.has(\"default\") && (\n \n
\n \n
\n
\n )}\n
\n", "type": "registry:block" } ], diff --git a/public/r/contact-2.json b/public/r/contact-2.json index 97172ad7d..ec5bb574f 100644 --- a/public/r/contact-2.json +++ b/public/r/contact-2.json @@ -3,22 +3,15 @@ "name": "contact-2", "title": "Contact 2", "description": "Contact sections for project inquiries, support, and sales conversations.", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ { "path": "src/components/blocks/contact-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Field,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from \"@/components/ui/field\"\nimport { Form } from \"@/components/ui/form\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Textarea } from \"@/components/ui/textarea\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n form: {\n id?: string\n action?: string\n method?: \"get\" | \"post\"\n title: string\n legend: string\n nameLabel: string\n namePlaceholder: string\n emailLabel: string\n emailPlaceholder: string\n messageLabel: string\n messagePlaceholder: string\n actionLabel: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n form,\n ...props\n} = Astro.props\nconst formId = form.id ?? `contact-${crypto.randomUUID()}`\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n
\n

{form.title}

\n
\n
\n
\n {form.legend}\n \n
\n \n \n {form.nameLabel}\n \n \n \n \n \n {form.emailLabel}\n \n \n \n
\n \n \n {form.messageLabel}\n \n \n \n \n
\n
\n
\n
\n
\n\n
\n {contactItems.map((item) => (\n
\n {item.href ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n

{item.title}

\n

\n {item.description}\n

\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {Astro.slots.has(\"default\") && (\n
\n \n
\n )}\n
\n\n
    \n {contactItems.map((item) => (\n
  • \n \n \n \n
    \n

    {item.title}

    \n {item.href != null ? (\n \n {item.description}\n \n ) : (\n

    \n {item.description}\n

    \n )}\n
    \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/contact-3.json b/public/r/contact-3.json index 5a344d9fc..b50f57b6e 100644 --- a/public/r/contact-3.json +++ b/public/r/contact-3.json @@ -3,22 +3,15 @@ "name": "contact-3", "title": "Contact 3", "description": "Contact sections for project inquiries, support, and sales conversations.", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ { "path": "src/components/blocks/contact-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Field,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from \"@/components/ui/field\"\nimport { Form } from \"@/components/ui/form\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n form: {\n id?: string\n action?: string\n method?: \"get\" | \"post\"\n legend: string\n nameLabel: string\n namePlaceholder: string\n emailLabel: string\n emailPlaceholder: string\n messageLabel: string\n messagePlaceholder: string\n actionLabel: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n form,\n image = { src: PlaceholderImage, alt: \"Contact image\" },\n ...props\n} = Astro.props\nconst formId = form.id ?? `contact-${crypto.randomUUID()}`\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {contactItems.map((item) => (\n
\n {item.href ? (\n \n \n \n ) : (\n \n \n \n )}\n
\n

{item.title}

\n

\n {item.description}\n

\n
\n
\n ))}\n
\n
\n
\n
\n {form.legend}\n \n
\n \n \n {form.nameLabel}\n \n \n \n \n \n {form.emailLabel}\n \n \n \n
\n \n \n {form.messageLabel}\n \n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n contactItems: {\n icon: string\n title: string\n description: string\n href?: string\n }[]\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n contactItems,\n image = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
    \n {contactItems.map((item) => (\n
  • \n \n \n \n
    \n

    {item.title}

    \n {item.href != null ? (\n \n {item.description}\n \n ) : (\n

    \n {item.description}\n

    \n )}\n
    \n
  • \n ))}\n
\n {Astro.slots.has(\"default\") && (\n
\n \n
\n )}\n
\n \n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/content-1.json b/public/r/content-1.json index e15f48b21..45ceca637 100644 --- a/public/r/content-1.json +++ b/public/r/content-1.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/content-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 = { src: PlaceholderImage, alt: \"Content image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {features?.length && (\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\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 = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n \n \n
\n", "type": "registry:block" }, { diff --git a/public/r/content-2.json b/public/r/content-2.json index ae71c7e37..7675cc352 100644 --- a/public/r/content-2.json +++ b/public/r/content-2.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/content-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 = { src: PlaceholderImage, alt: \"Content image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n {description}\n
\n {features?.length && (\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\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 = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n {description}\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/content-3.json b/public/r/content-3.json index 1fc69b356..cf3b62853 100644 --- a/public/r/content-3.json +++ b/public/r/content-3.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/content-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: 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 buttons,\n image = { src: PlaceholderImage, alt: \"Content image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n
\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n image = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n {description}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n \n \n
\n", "type": "registry:block" }, { diff --git a/public/r/content-4.json b/public/r/content-4.json index def8f5ea3..fcce4f136 100644 --- a/public/r/content-4.json +++ b/public/r/content-4.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/content-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 = { src: PlaceholderImage, alt: \"Content image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n
\n {title}\n {description}\n
\n {features?.length && (\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\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 = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n
\n {title}\n {description}\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/cta-1.json b/public/r/cta-1.json index ba417864c..10cbc452e 100644 --- a/public/r/cta-1.json +++ b/public/r/cta-1.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/cta-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n
\n \n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n )}\n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n
\n \n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n )}\n
\n {title}\n {description}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/cta-2.json b/public/r/cta-2.json index 783e24bb0..347395042 100644 --- a/public/r/cta-2.json +++ b/public/r/cta-2.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/cta-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage, alt: \"CTA image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n \n {socialProof.text}\n \n
\n
\n )}\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n \n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/cta-3.json b/public/r/cta-3.json index 44c7a351f..d8a956197 100644 --- a/public/r/cta-3.json +++ b/public/r/cta-3.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/cta-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n\n \n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n \n {socialProof.text}\n \n
\n
\n )}\n
\n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n\n \n
\n {title}\n

\n {description}\n

\n
\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n\n", "type": "registry:block" } ], diff --git a/public/r/cta-4.json b/public/r/cta-4.json index 91de3701c..9e65a555a 100644 --- a/public/r/cta-4.json +++ b/public/r/cta-4.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/cta-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage, alt: \"CTA image\" },\n ...props\n} = Astro.props\n---\n\n\n \n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n )}\n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image?: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage },\n ...props\n} = Astro.props\n---\n\n\n \n \n
\n {title}\n {description}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n\n", "type": "registry:block" }, { diff --git a/public/r/cta-5.json b/public/r/cta-5.json index 5f0fb0cb8..7a122cb13 100644 --- a/public/r/cta-5.json +++ b/public/r/cta-5.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/cta-5.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 = { src: PlaceholderImage, alt: \"CTA image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {features?.length && (\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\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 = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {features.length > 0 && (\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n )}\n {buttons.length > 0 && (\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/cta-6.json b/public/r/cta-6.json index 4cf570ac1..9aa3276fe 100644 --- a/public/r/cta-6.json +++ b/public/r/cta-6.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/cta-6.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage, alt: \"CTA image\" },\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n
\n {title}\n

\n {description}\n

\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n \n {socialProof.text}\n \n
\n
\n )}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image?: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image = { src: PlaceholderImage, alt: \"\" },\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/cta-7.json b/public/r/cta-7.json index 013a1100f..b6755b388 100644 --- a/public/r/cta-7.json +++ b/public/r/cta-7.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/cta-7.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof?: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n count?: string | number\n rating?: number\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n {socialProof && (\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n {socialProof.count && (\n \n {socialProof.count}\n \n )}\n \n \n {socialProof.text.replace(/\\s+/g, \" \")}\n \n
\n )}\n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n count?: string | number\n text: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n ...props\n} = Astro.props\n---\n\n\n \n
\n {title}\n \n {description}\n \n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n {socialProof.count != null && (\n \n {socialProof.count}\n \n )}\n \n \n {socialProof.text}\n \n
\n
\n\n", "type": "registry:block" } ], diff --git a/public/r/cta-8.json b/public/r/cta-8.json index 2bc3031f2..7acaffa25 100644 --- a/public/r/cta-8.json +++ b/public/r/cta-8.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/cta-8.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst { class: className, title, description, buttons, ...props } = Astro.props\n---\n\n\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n}\n\nconst { class: className, title, description, buttons, ...props } = Astro.props\n---\n\n\n \n
\n {title}\n {description}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n\n", "type": "registry:block" } ], diff --git a/public/r/doc-1.json b/public/r/doc-1.json index 8585d22dc..49048e0e5 100644 --- a/public/r/doc-1.json +++ b/public/r/doc-1.json @@ -18,7 +18,7 @@ "files": [ { "path": "src/components/blocks/doc-1.astro", - "content": "---\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons/icons/claude.svg\"\nimport Cursor from \"simple-icons/icons/cursor.svg\"\nimport Markdown from \"simple-icons/icons/markdown.svg\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport {\n Card,\n CardDescription,\n CardFooter,\n CardHeader,\n} from \"@/components/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Toc,\n TocMenu,\n TocMenuItem,\n TocMenuLink,\n TocTitle,\n} from \"@/components/ui/toc\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = {\n class?: string\n title: string\n description?: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n tocItems: {\n depth: number\n href: string\n label: string\n }[]\n callout?: {\n description: string\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n pagination: {\n previous: string\n next: string\n ariaLabel: string\n }\n toc: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n tocItems,\n callout,\n previousPage,\n nextPage,\n labels,\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst assistantPrompt = markdownUrl\n ? `Read ${new URL(markdownUrl, Astro.site ?? Astro.url.origin).href}, I want to ask questions about it.`\n : \"\"\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n
\n
\n \n {title}\n \n {description && (\n \n {description}\n \n )}\n
\n
\n {showCopyButton && (\n \n \n
\n
\n\n \n \n \n\n {showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )}\n
\n\n {(tocItems.length > 0 || callout) && (\n
\n
\n {tocItems.length > 0 && (\n \n {labels.toc}\n \n {tocItems.map((item) => (\n \n \n {item.label}\n \n \n ))}\n \n \n )}\n\n {callout && (\n \n \n {callout.description}\n \n \n \n {callout.button.label}\n \n \n \n )}\n
\n
\n )}\n\n\n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowLeft from \"@lucide/astro/icons/arrow-left\"\nimport ArrowRight from \"@lucide/astro/icons/arrow-right\"\nimport Check from \"@lucide/astro/icons/check\"\nimport ChevronDown from \"@lucide/astro/icons/chevron-down\"\nimport Copy from \"@lucide/astro/icons/copy\"\nimport ExternalLink from \"@lucide/astro/icons/external-link\"\nimport Claude from \"simple-icons/icons/claude.svg\"\nimport Cursor from \"simple-icons/icons/cursor.svg\"\nimport Markdown from \"simple-icons/icons/markdown.svg\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\nimport {\n Card,\n CardDescription,\n CardFooter,\n CardHeader,\n} from \"@/components/ui/card\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { SectionContainer } from \"@/components/ui/section\"\nimport {\n Toc,\n TocMenu,\n TocMenuItem,\n TocMenuLink,\n TocTitle,\n} from \"@/components/ui/toc\"\nimport {\n Typography,\n TypographyH1,\n TypographyLead,\n} from \"@/components/ui/typography\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n title: string\n description: string\n copyButton?: {\n id: string\n source: string\n }\n markdownUrl?: string\n tocItems: {\n depth: number\n href: string\n label: string\n }[]\n callout?: {\n description: string\n button: {\n label: string\n href: string\n }\n }\n previousPage?: {\n href: string\n title: string\n }\n nextPage?: {\n href: string\n title: string\n }\n labels: {\n copyMarkdown: string\n openIn: string\n openInMarkdown: string\n openInChatGPT: string\n openInClaude: string\n openInCursor: string\n assistantPrompt: string\n copyCode: string\n pagination: string\n toc: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n copyButton,\n markdownUrl,\n tocItems,\n callout,\n previousPage,\n nextPage,\n labels,\n ...props\n} = Astro.props\nconst showCopyButton = Boolean(copyButton)\nconst showOpenButton = Boolean(markdownUrl)\nconst showPagination = Boolean(previousPage || nextPage)\nconst openLinks = markdownUrl\n ? [\n {\n label: labels.openInMarkdown,\n href: markdownUrl,\n icon: \"markdown\",\n },\n {\n label: labels.openInChatGPT,\n href: `https://chatgpt.com/?hints=search&q=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"chatgpt\",\n },\n {\n label: labels.openInClaude,\n href: `https://claude.ai/new?q=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"claude\",\n },\n {\n label: labels.openInCursor,\n href: `https://cursor.com/link/prompt?text=${encodeURIComponent(labels.assistantPrompt)}`,\n icon: \"cursor\",\n },\n ]\n : []\n---\n\n\n
\n
\n
\n \n {title}\n \n \n {description}\n \n
\n
\n {showCopyButton && (\n \n \n
\n
\n\n \n \n \n\n {showPagination && (\n \n {previousPage ? (\n \n \n \n {previousPage.title}\n \n \n ) : (\n
\n )}\n\n {nextPage ? (\n \n {nextPage.title}\n \n \n ) : (\n
\n )}\n \n )}\n
\n\n {(tocItems.length > 0 || callout) && (\n
\n
\n {tocItems.length > 0 && (\n \n {labels.toc}\n \n {tocItems.map((item) => (\n \n \n {item.label}\n \n \n ))}\n \n \n )}\n\n {callout && (\n \n \n {callout.description}\n \n \n \n {callout.button.label}\n \n \n \n )}\n
\n
\n )}\n\n\n\n\n\n", "type": "registry:block" } ], diff --git a/public/r/dropdown-menu.json b/public/r/dropdown-menu.json index b60acc57e..941375064 100644 --- a/public/r/dropdown-menu.json +++ b/public/r/dropdown-menu.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/ui/dropdown-menu/dropdown-menu.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { Align, Side } from \"@data-slot/dropdown-menu\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n defaultValue?: string | null\n defaultValues?: string[]\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n closeOnSelect?: boolean\n highlightItemOnHover?: boolean\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n lockScroll?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n defaultValue,\n defaultValues,\n closeOnClickOutside,\n closeOnEscape,\n closeOnSelect,\n highlightItemOnHover,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n lockScroll,\n ...props\n} = Astro.props\n\nconst defaultValuesAttr =\n defaultValues === undefined ? undefined : JSON.stringify(defaultValues)\n---\n\n\n \n
\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { Align, Side } from \"@data-slot/dropdown-menu\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n defaultOpen?: boolean\n defaultValue?: string | null\n defaultValues?: string[]\n closeOnClickOutside?: boolean\n closeOnEscape?: boolean\n closeOnSelect?: boolean\n highlightItemOnHover?: boolean\n side?: Side\n align?: Align\n sideOffset?: number\n alignOffset?: number\n avoidCollisions?: boolean\n collisionPadding?: number\n lockScroll?: boolean\n}\n\nconst {\n class: className,\n defaultOpen,\n defaultValue,\n defaultValues,\n closeOnClickOutside,\n closeOnEscape,\n closeOnSelect,\n highlightItemOnHover,\n side,\n align,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n lockScroll,\n ...props\n} = Astro.props\n\nconst defaultValuesAttr =\n defaultValues === undefined ? undefined : JSON.stringify(defaultValues)\n---\n\n\n \n
\n\n\n", "type": "registry:ui" }, { @@ -25,17 +25,17 @@ }, { "path": "src/components/ui/dropdown-menu/dropdown-menu-item.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> &\n HTMLAttributes<\"a\"> & {\n as?: \"button\" | \"a\"\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n }\n\nconst {\n as: Tag = \"href\" in Astro.props ? \"a\" : \"button\",\n class: className,\n type = \"button\",\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> &\n HTMLAttributes<\"a\"> & {\n as?: \"button\" | \"a\"\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n }\n\nconst {\n as: Tag = \"href\" in Astro.props ? \"a\" : \"button\",\n class: className,\n type = \"button\",\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n\n\n\n", "type": "registry:ui" }, { "path": "src/components/ui/dropdown-menu/dropdown-menu-radio-item.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport CheckIcon from \"@lucide/astro/icons/check\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n value: string\n defaultChecked?: boolean\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n value,\n defaultChecked,\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport CheckIcon from \"@lucide/astro/icons/check\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n value: string\n defaultChecked?: boolean\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n value,\n defaultChecked,\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport CheckIcon from \"@lucide/astro/icons/check\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n value: string\n defaultChecked?: boolean\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n value,\n defaultChecked,\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport CheckIcon from \"@lucide/astro/icons/check\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n value: string\n defaultChecked?: boolean\n disabled?: boolean\n variant?: \"default\" | \"destructive\"\n inset?: boolean\n}\n\nconst {\n class: className,\n type = \"button\",\n value,\n defaultChecked,\n disabled,\n variant,\n inset,\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n\n", "type": "registry:ui" }, { @@ -45,7 +45,7 @@ }, { "path": "src/components/ui/dropdown-menu/dropdown-menu-label.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n inset?: boolean\n}\n\nconst { class: className, inset, ...props } = Astro.props\n---\n\n\n \n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n inset?: boolean\n}\n\nconst { class: className, inset, ...props } = Astro.props\n---\n\n\n \n
\n", "type": "registry:ui" }, { diff --git a/public/r/faqs-1.json b/public/r/faqs-1.json index dd7bab930..fe0decf6f 100644 --- a/public/r/faqs-1.json +++ b/public/r/faqs-1.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/faqs-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n faqs,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n defaultItem?: string\n buttons?: {\n label: string\n href: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n faqs,\n defaultItem,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons && buttons.length > 0 && (\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/faqs-2.json b/public/r/faqs-2.json index a76c98096..7662c1100 100644 --- a/public/r/faqs-2.json +++ b/public/r/faqs-2.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/faqs-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n faqs,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n\n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n buttons: {\n label: string\n href: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n faqs,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n\n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/faqs-3.json b/public/r/faqs-3.json index 794ef5a59..cd5d5197c 100644 --- a/public/r/faqs-3.json +++ b/public/r/faqs-3.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/faqs-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n faqs,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n {title}\n

\n {description}\n

\n
\n
\n \n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n faqs,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n

\n {description}\n

\n
\n
\n \n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/faqs-4.json b/public/r/faqs-4.json index 4fe0db0bb..19de0d927 100644 --- a/public/r/faqs-4.json +++ b/public/r/faqs-4.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/faqs-4.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst { class: className, title, faqs, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n faqs: {\n id: string\n question: string\n answer: string\n }[]\n}\n\nconst { class: className, title, faqs, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n
\n \n {faqs.map((item) => (\n \n {item.question}\n {item.answer}\n \n ))}\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-1.json b/public/r/features-1.json index fae8c3764..61240563f 100644 --- a/public/r/features-1.json +++ b/public/r/features-1.json @@ -14,7 +14,7 @@ "files": [ { "path": "src/components/blocks/features-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n href?: string\n linkText?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n {features.map((feature) => (\n
\n
\n \n
\n
\n

\n {feature.title}\n

\n

\n {feature.description}\n

\n
\n {feature.href && feature.linkText && (\n \n {feature.linkText}\n \n \n )}\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n features: {\n title: string\n description: string\n icon: string\n link?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons.length > 0 && (\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
    \n {features.map((feature) => (\n
  • \n
    \n \n
    \n
    \n

    \n {feature.title}\n

    \n

    \n {feature.description}\n

    \n
    \n {feature.link && (\n \n {feature.link.label}\n \n \n )}\n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-2.json b/public/r/features-2.json index c2cf45f9c..a15ebe78c 100644 --- a/public/r/features-2.json +++ b/public/r/features-2.json @@ -3,18 +3,14 @@ "name": "features-2", "title": "Features 2", "description": "Feature section layouts for product narratives, launch pages, and capability overviews.", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/features-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n {features.map((feature) => (\n
\n
\n \n
\n

\n {feature.title}\n

\n

\n {feature.description}\n

\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst { class: className, title, description, features, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
    \n {features.map((feature) => (\n
  • \n
    \n \n
    \n

    \n {feature.title}\n

    \n

    \n {feature.description}\n

    \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-3.json b/public/r/features-3.json index 83402f1a0..0f7902b8c 100644 --- a/public/r/features-3.json +++ b/public/r/features-3.json @@ -9,7 +9,7 @@ "files": [ { "path": "src/components/blocks/features-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: {\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n }[]\n}\n\nconst { class: className, title, description, features, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
\n {features.map((feature) => (\n
\n \n
\n

\n {feature.title}\n

\n

\n {feature.description}\n

\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: {\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n }[]\n}\n\nconst { class: className, title, description, features, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
    \n {features.map((feature) => (\n
  • \n \n
    \n

    \n {feature.title}\n

    \n

    \n {feature.description}\n

    \n
    \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-4.json b/public/r/features-4.json index 6c3870911..437798358 100644 --- a/public/r/features-4.json +++ b/public/r/features-4.json @@ -14,7 +14,7 @@ "files": [ { "path": "src/components/blocks/features-4.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n href?: string\n linkText?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n
\n {features.map((feature) => (\n
\n
\n \n
\n
\n

\n {feature.title}\n

\n

\n {feature.description}\n

\n
\n {feature.href && feature.linkText && (\n \n {feature.linkText}\n \n \n )}\n
\n ))}\n
\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n features: {\n title: string\n description: string\n icon: string\n link?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
    \n {features.map((feature) => (\n
  • \n
    \n \n
    \n
    \n

    \n {feature.title}\n

    \n

    \n {feature.description}\n

    \n
    \n {feature.link && (\n \n {feature.link.label}\n \n \n )}\n
  • \n ))}\n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-5.json b/public/r/features-5.json index 9bbc9affe..420643adf 100644 --- a/public/r/features-5.json +++ b/public/r/features-5.json @@ -3,18 +3,14 @@ "name": "features-5", "title": "Features 5", "description": "Feature section layouts for product narratives, launch pages, and capability overviews.", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/features-5.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n \n
\n {features.map((feature) => (\n
\n
\n \n
\n

\n {feature.title}\n

\n

\n {feature.description}\n

\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: {\n title: string\n description: string\n icon: string\n }[]\n}\n\nconst { class: className, title, description, features, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
    \n {features.map((feature) => (\n
  • \n
    \n \n
    \n

    \n {feature.title}\n

    \n

    \n {feature.description}\n

    \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/features-6.json b/public/r/features-6.json index 248bb4563..9b01c7537 100644 --- a/public/r/features-6.json +++ b/public/r/features-6.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/features-6.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n features: {\n title: string\n description: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n

\n {description}\n

\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n )}\n
\n
\n \n
\n {features.map((feature) => (\n
\n \n
\n

{feature.title}

\n

\n {feature.description}\n

\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n features: {\n title: string\n description: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n features,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n
    \n {features.map((feature) => (\n
  • \n \n
    \n

    {feature.title}

    \n

    \n {feature.description}\n

    \n
    \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/footer-1.json b/public/r/footer-1.json index 3d06945e5..6e75db4ac 100644 --- a/public/r/footer-1.json +++ b/public/r/footer-1.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/footer-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials?: {\n label: string\n href: string\n icon?: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n ...props\n} = Astro.props\n---\n\n
\n
\n \n
\n
\n \n {brandName}\n \n

\n {description}\n

\n {socials && socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n
\n
\n {columns.map((column) => (\n
\n

{column.title}

\n
    \n {column.links.map((link) => (\n
  • \n \n {link.label}\n \n
  • \n ))}\n
\n
\n ))}\n
\n
\n \n

{copyright}

\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials: {\n label: string\n href: string\n icon?: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n ...props\n} = Astro.props\n---\n\n
\n
\n \n
\n
\n \n {brandName}\n \n

\n {description}\n

\n {socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n
\n
\n {columns.map((column) => (\n
\n

{column.title}

\n
    \n {column.links.map((link) => (\n
  • \n \n {link.label}\n \n
  • \n ))}\n
\n
\n ))}\n
\n
\n \n

{copyright}

\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/footer-2.json b/public/r/footer-2.json index 2820c1f64..d5fbcdfec 100644 --- a/public/r/footer-2.json +++ b/public/r/footer-2.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/footer-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n links?: {\n label: string\n href: string\n }[]\n socials?: {\n label: string\n href: string\n icon?: string\n }[]\n copyright: string\n navigationLabel?: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n links,\n socials,\n copyright,\n navigationLabel = \"Footer navigation\",\n ...props\n} = Astro.props\n---\n\n
\n
\n \n \n {brandName}\n \n

\n {description}\n

\n {links && links.length > 0 && (\n \n {links.map((link) => (\n \n {link.label}\n \n ))}\n \n )}\n {socials && socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n \n

{copyright}

\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n links: {\n label: string\n href: string\n }[]\n socials: {\n label: string\n href: string\n icon?: string\n }[]\n copyright: string\n navigationLabel: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n links,\n socials,\n copyright,\n navigationLabel,\n ...props\n} = Astro.props\n---\n\n
\n
\n \n \n {brandName}\n \n

\n {description}\n

\n \n {links.map((link) => (\n \n {link.label}\n \n ))}\n \n {socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n \n

{copyright}

\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/footer-3.json b/public/r/footer-3.json index 6c9882990..27d6eb84e 100644 --- a/public/r/footer-3.json +++ b/public/r/footer-3.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/footer-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials?: {\n label: string\n href: string\n icon?: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n bottomLinks?: {\n label: string\n href: string\n }[]\n navigationLabel?: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n bottomLinks,\n navigationLabel = \"Footer navigation\",\n ...props\n} = Astro.props\n---\n\n
\n
\n \n
\n
\n \n {brandName}\n \n

\n {description}\n

\n {socials && socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n
\n
\n {columns.map((column) => (\n
\n

{column.title}

\n
    \n {column.links.map((link) => (\n
  • \n \n {link.label}\n \n
  • \n ))}\n
\n
\n ))}\n
\n
\n \n
\n

{copyright}

\n {bottomLinks && bottomLinks.length > 0 && (\n \n {bottomLinks.map((link) => (\n \n {link.label}\n \n ))}\n \n )}\n
\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"footer\"> & {\n brandName: string\n brandHref: string\n description: string\n socials: {\n label: string\n href: string\n icon?: string\n }[]\n columns: {\n title: string\n links: {\n label: string\n href: string\n }[]\n }[]\n copyright: string\n bottomLinks: {\n label: string\n href: string\n }[]\n navigationLabel: string\n}\n\nconst {\n class: className,\n brandName,\n brandHref,\n description,\n socials,\n columns,\n copyright,\n bottomLinks,\n navigationLabel,\n ...props\n} = Astro.props\n---\n\n
\n
\n \n
\n
\n \n {brandName}\n \n

\n {description}\n

\n {socials.length > 0 && (\n
\n {socials.map((social) => (\n \n \n \n ))}\n
\n )}\n
\n
\n {columns.map((column) => (\n
\n

{column.title}

\n
    \n {column.links.map((link) => (\n
  • \n \n {link.label}\n \n
  • \n ))}\n
\n
\n ))}\n
\n
\n \n
\n

{copyright}

\n \n {bottomLinks.map((link) => (\n \n {link.label}\n \n ))}\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/header-1.json b/public/r/header-1.json index d4c11d61a..0bfb9eb6d 100644 --- a/public/r/header-1.json +++ b/public/r/header-1.json @@ -3,6 +3,9 @@ "name": "header-1", "title": "Header 1", "description": "Header layouts for brand, navigation, and high-level page actions.", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -14,7 +17,7 @@ "files": [ { "path": "src/components/blocks/header-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n navigationLabel?: string\n menu?: {\n label: string\n title: string\n description: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel = \"Main navigation\",\n menu = {\n label: \"Open menu\",\n title: \"Menu\",\n description: \"Site navigation and actions.\",\n },\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label && {logo.label}}\n \n \n \n \n {navigation.map((item, index) => (\n \n \n {item.label}\n \n \n ))}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n
\n \n
\n
\n
\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n navigation: {\n label: string\n href: string\n active?: boolean\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n target?: \"_self\" | \"_blank\"\n }[]\n navigationLabel: string\n menu: {\n label: string\n title: string\n description: string\n closeLabel: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel,\n menu,\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label}\n \n \n \n \n {navigation.map((item, index) => (\n \n \n {item.label}\n \n \n ))}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n {buttons.length > 0 && (\n
\n {buttons.map(({ label, href, icon, target }, index) => (\n \n {icon && }\n {label}\n \n ))}\n
\n )}\n
\n \n \n {menu.closeLabel}\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/header-2.json b/public/r/header-2.json index 30a7c4e17..16c30ad25 100644 --- a/public/r/header-2.json +++ b/public/r/header-2.json @@ -3,6 +3,9 @@ "name": "header-2", "title": "Header 2", "description": "Header layouts for brand, navigation, and high-level page actions.", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -14,7 +17,7 @@ "files": [ { "path": "src/components/blocks/header-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n navigationLabel?: string\n menu?: {\n label: string\n title: string\n description: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel = \"Main navigation\",\n menu = {\n label: \"Open menu\",\n title: \"Menu\",\n description: \"Site navigation and actions.\",\n },\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label && {logo.label}}\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n navigation: {\n label: string\n href: string\n active?: boolean\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n target?: \"_self\" | \"_blank\"\n }[]\n navigationLabel: string\n menu: {\n label: string\n title: string\n description: string\n closeLabel: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel,\n menu,\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label}\n \n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/header-3.json b/public/r/header-3.json index 14a7fea9f..fd0157b7f 100644 --- a/public/r/header-3.json +++ b/public/r/header-3.json @@ -3,6 +3,9 @@ "name": "header-3", "title": "Header 3", "description": "Header layouts for brand, navigation, and high-level page actions.", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -15,7 +18,7 @@ "files": [ { "path": "src/components/blocks/header-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n navigationLabel?: string\n menu?: {\n label: string\n title: string\n description: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel = \"Main navigation\",\n menu = {\n label: \"Open menu\",\n title: \"Menu\",\n description: \"Site navigation and actions.\",\n },\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label && {logo.label}}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n \n
\n \n
\n
\n
\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n navigation: {\n label: string\n href: string\n active?: boolean\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n target?: \"_self\" | \"_blank\"\n }[]\n navigationLabel: string\n menu: {\n label: string\n title: string\n description: string\n closeLabel: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel,\n menu,\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n {buttons.length > 0 && }\n {buttons.length > 0 && (\n
\n {buttons.map(({ label, href, icon, target }, index) => (\n \n {icon && }\n {label}\n \n ))}\n
\n )}\n
\n \n \n {menu.closeLabel}\n \n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/header-4.json b/public/r/header-4.json index 94e357029..60663b63f 100644 --- a/public/r/header-4.json +++ b/public/r/header-4.json @@ -3,6 +3,9 @@ "name": "header-4", "title": "Header 4", "description": "Header layouts for brand, navigation, and high-level page actions.", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -14,7 +17,7 @@ "files": [ { "path": "src/components/blocks/header-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n description?: string\n active?: boolean\n image?: {\n src: ImageMetadata\n alt: string\n }\n links?: {\n label: string\n href: string\n description?: string\n icon?: string\n active?: boolean\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n navigationLabel?: string\n menu?: {\n label: string\n title: string\n description: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel = \"Main navigation\",\n menu = {\n label: \"Open menu\",\n title: \"Menu\",\n description: \"Site navigation and actions.\",\n },\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label && {logo.label}}\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n navigation: {\n label: string\n href: string\n description?: string\n active?: boolean\n image?: {\n src: ImageMetadata\n }\n links?: {\n label: string\n href: string\n description?: string\n icon?: string\n active?: boolean\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n target?: \"_self\" | \"_blank\"\n }[]\n navigationLabel: string\n menu: {\n label: string\n title: string\n description: string\n closeLabel: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel,\n menu,\n ...props\n} = Astro.props\n---\n\n
\n \n \n \n \n {logo.label}\n \n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/header-5.json b/public/r/header-5.json index e6cfc0b16..d7567215a 100644 --- a/public/r/header-5.json +++ b/public/r/header-5.json @@ -3,6 +3,9 @@ "name": "header-5", "title": "Header 5", "description": "Header layouts for brand, navigation, and high-level page actions.", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -15,7 +18,7 @@ "files": [ { "path": "src/components/blocks/header-5.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n navigation: {\n label: string\n href: string\n description?: string\n active?: boolean\n image?: {\n src: ImageMetadata\n alt: string\n }\n links?: {\n label: string\n href: string\n description?: string\n icon?: string\n active?: boolean\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n navigationLabel?: string\n menu?: {\n label: string\n title: string\n description: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel = \"Main navigation\",\n menu = {\n label: \"Open menu\",\n title: \"Menu\",\n description: \"Site navigation and actions.\",\n },\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n {logo.label && {logo.label}}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n \n
\n \n
\n
\n
\n
\n
\n \n \n \n \n {navigation.map((item, index) =>\n item.links?.length ? (\n \n {item.label}\n \n
\n \n {item.image && (\n \n )}\n \n {item.label}\n {item.description && (\n \n {item.description}\n \n )}\n \n \n
\n {item.links.map((link) => (\n \n {link.icon && (\n \n )}\n \n {link.label}\n {link.description && (\n \n {link.description}\n \n )}\n \n \n ))}\n
\n
\n
\n
\n ) : (\n \n \n {item.label}\n \n \n )\n )}\n
\n \n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport XIcon from \"@lucide/astro/icons/x\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n} from \"@/components/ui/navigation-menu\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"@/components/ui/sheet\"\n\ntype Props = HTMLAttributes<\"header\"> & {\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n navigation: {\n label: string\n href: string\n description?: string\n active?: boolean\n image?: {\n src: ImageMetadata\n }\n links?: {\n label: string\n href: string\n description?: string\n icon?: string\n active?: boolean\n }[]\n }[]\n buttons: {\n label: string\n href: string\n icon?: string\n target?: \"_self\" | \"_blank\"\n }[]\n navigationLabel: string\n menu: {\n label: string\n title: string\n description: string\n closeLabel: string\n }\n}\n\nconst {\n class: className,\n logo,\n navigation,\n buttons,\n navigationLabel,\n menu,\n ...props\n} = Astro.props\n---\n\n\n \n \n \n \n {logo.label}\n \n \n \n \n \n \n \n \n \n {menu.title}\n {menu.description}\n \n
\n \n {buttons.length > 0 && }\n {buttons.length > 0 && (\n
\n {buttons.map(({ label, href, icon, target }, index) => (\n \n {icon && }\n {label}\n \n ))}\n
\n )}\n
\n \n \n {menu.closeLabel}\n \n
\n
\n
\n \n \n \n \n {navigation.map((item, index) =>\n item.links?.length ? (\n \n {item.label}\n \n
\n \n {item.image && (\n \n )}\n \n {item.label}\n {item.description && (\n \n {item.description}\n \n )}\n \n \n
\n {item.links.map((link) => (\n \n {link.icon && (\n \n )}\n \n {link.label}\n {link.description && (\n \n {link.description}\n \n )}\n \n \n ))}\n
\n
\n
\n
\n ) : (\n \n \n {item.label}\n \n \n )\n )}\n
\n \n
\n\n", "type": "registry:block" } ], diff --git a/public/r/header.json b/public/r/header.json index 8183e429e..6f38b7e4c 100644 --- a/public/r/header.json +++ b/public/r/header.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/ui/header/header.astro", - "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<\"header\"> & VariantProps\n\nconst variants = cva(\"py-2 relative z-50 flex w-full items-center gap-4\", {\n variants: {\n variant: {\n default: \"\",\n floating:\n \"my-2 rounded-lg border bg-background shadow-sm mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst { class: className, variant, ...props } = Astro.props\n---\n\n\n \n\n", + "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<\"header\"> & VariantProps\n\nconst variants = cva(\"py-2 relative z-50 flex w-full items-center gap-4\", {\n variants: {\n variant: {\n default: \"\",\n floating:\n \"my-2 rounded-lg border bg-background shadow-sm mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst {\n class: className,\n variant = \"default\",\n \"data-slot\": dataSlot = \"header\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/hero-1.json b/public/r/hero-1.json index fd7eef979..3001b9ff4 100644 --- a/public/r/hero-1.json +++ b/public/r/hero-1.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/hero-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n badge?: {\n label: string\n href: string\n }\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 badge,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n {badge && (\n \n {badge.label}\n \n )}\n

\n {title}\n

\n {description}\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n badge?: {\n label: string\n href: string\n }\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n badge,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n {badge && (\n \n {badge.label}\n \n )}\n

\n {title}\n

\n {description}\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-10.json b/public/r/hero-10.json index 1d044e3e4..770bb0a86 100644 --- a/public/r/hero-10.json +++ b/public/r/hero-10.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/hero-10.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n \n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n \n
\n\n", "type": "registry:block" } ], diff --git a/public/r/hero-11.json b/public/r/hero-11.json index dcb5f5ffc..09a801205 100644 --- a/public/r/hero-11.json +++ b/public/r/hero-11.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/hero-11.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n \n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n \n
\n\n", "type": "registry:block" } ], diff --git a/public/r/hero-12.json b/public/r/hero-12.json index fb5fd9794..77a37b010 100644 --- a/public/r/hero-12.json +++ b/public/r/hero-12.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/hero-12.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: 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 buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-13.json b/public/r/hero-13.json index c30e39ca1..f1f708613 100644 --- a/public/r/hero-13.json +++ b/public/r/hero-13.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/hero-13.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: 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 buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-2.json b/public/r/hero-2.json index c4b5093a0..872bdcf70 100644 --- a/public/r/hero-2.json +++ b/public/r/hero-2.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/hero-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n

\n {title}\n

\n {description}\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n \n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n

\n {title}\n

\n {description}\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-3.json b/public/r/hero-3.json index c2dc41368..dcd3d0d23 100644 --- a/public/r/hero-3.json +++ b/public/r/hero-3.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/hero-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: 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 buttons,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n
\n\n", "type": "registry:block" } ], diff --git a/public/r/hero-4.json b/public/r/hero-4.json index 76565d570..1254a5a66 100644 --- a/public/r/hero-4.json +++ b/public/r/hero-4.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/hero-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n
\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n\n \n

\n {title}\n

\n

\n {description}\n

\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n \n
\n\n", "type": "registry:block" } ], diff --git a/public/r/hero-5.json b/public/r/hero-5.json index ae42c57cb..1b95a5469 100644 --- a/public/r/hero-5.json +++ b/public/r/hero-5.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/hero-5.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-6.json b/public/r/hero-6.json index 8ac3412a2..b60078e9c 100644 --- a/public/r/hero-6.json +++ b/public/r/hero-6.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/hero-6.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-7.json b/public/r/hero-7.json index fec1634cc..75d00053f 100644 --- a/public/r/hero-7.json +++ b/public/r/hero-7.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/hero-7.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-8.json b/public/r/hero-8.json index 3e484825c..2ed1b607f 100644 --- a/public/r/hero-8.json +++ b/public/r/hero-8.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/hero-8.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: 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 buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n image: {\n src: ImageMetadata\n alt: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/hero-9.json b/public/r/hero-9.json index 8bbbab3b8..de5e91c14 100644 --- a/public/r/hero-9.json +++ b/public/r/hero-9.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/hero-9.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\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 socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n name?: string\n }[]\n rating: number\n text: string\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 socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

{description}

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label, ...button }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Avatar,\n AvatarFallback,\n AvatarGroup,\n AvatarImage,\n} from \"@/components/ui/avatar\"\nimport { Button } from \"@/components/ui/button\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n features: string[]\n buttons: {\n label: string\n href: string\n }[]\n socialProof: {\n avatars: {\n image?: ImageMetadata\n initials: string\n }[]\n rating: number\n ratingLabel: string\n text: string\n }\n image: {\n src: ImageMetadata\n }\n}\n\nconst {\n class: className,\n title,\n description,\n features,\n buttons,\n socialProof,\n image,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n

\n {title}\n

\n

{description}

\n
\n
    \n {features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n \n {socialProof.avatars.map((avatar) => (\n \n \n {avatar.initials}\n \n ))}\n \n
\n \n {socialProof.text}\n
\n
\n
\n
\n
\n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/icon.json b/public/r/icon.json index 08bcfdfad..2dd8ce89c 100644 --- a/public/r/icon.json +++ b/public/r/icon.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/ui/icon/icon.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = Omit, \"name\" | \"href\"> & {\n href?: HTMLAttributes<\"a\">[\"href\"]\n name?: string | number\n}\n\nconst { name, href, ...props } = Astro.props\n\nconst hrefMap = {\n \"x.com\": \"x\",\n twitter: \"twitter\",\n facebook: \"facebook\",\n instagram: \"instagram\",\n pinterest: \"pinterest\",\n youtube: \"youtube\",\n tiktok: \"tiktok\",\n snapchat: \"snapchat\",\n reddit: \"reddit\",\n tumblr: \"tumblr\",\n \"wa.me\": \"whatsapp\",\n telegram: \"telegram\",\n discord: \"discord\",\n vimeo: \"vimeo\",\n flickr: \"flickr\",\n yelp: \"yelp\",\n spotify: \"spotify\",\n behance: \"behance\",\n dribbble: \"dribbble\",\n soundcloud: \"soundcloud\",\n github: \"github\",\n twitch: \"twitch\",\n \"tel:\": \"phone\",\n \"mailto:\": \"mail\",\n \"maps.app.goo.gl\": \"map-pin\",\n linkedin: \"linkedin\",\n} as const\n\ntype Source = \"lucide\" | \"simple\"\n\nconst icons: Record Promise>> = {\n lucide: import.meta.glob(\"/node_modules/lucide-static/icons/*.svg\"),\n simple: import.meta.glob(\"/node_modules/simple-icons/icons/*.svg\"),\n}\n\nconst pathFor = (source: Source, icon: string) =>\n source === \"lucide\"\n ? `/node_modules/lucide-static/icons/${icon}.svg`\n : `/node_modules/simple-icons/icons/${icon}.svg`\n\n// Resolve an icon by explicit name, or derive one from a link href.\n// Names may be prefixed with `lucide:` or `simple:` to pick a set when both\n// sets contain the same name (for example `github` or `figma`).\nconst hasName = name != null && name !== \"\"\n\nconst resolve = () => {\n let key = hasName ? String(name) : undefined\n let order: Source[] = [\"lucide\", \"simple\"]\n\n if (!key && href) {\n const hrefKey = Object.keys(hrefMap).find((candidate) =>\n href.toString().includes(candidate)\n )\n if (hrefKey) {\n key = hrefMap[hrefKey as keyof typeof hrefMap]\n order = [\"simple\", \"lucide\"]\n }\n }\n\n const linkIcon = {\n source: \"lucide\" as const,\n path: pathFor(\"lucide\", \"link\"),\n }\n\n if (!key) return href ? linkIcon : undefined\n if (key === \"x.com\") key = \"simple:x\"\n\n const [prefix, icon] = key.includes(\":\") ? key.split(\":\") : [undefined, key]\n if (prefix === \"lucide\" || prefix === \"simple\") order = [prefix]\n\n for (const source of order) {\n const path = pathFor(source, icon)\n if (path in icons[source]) return { source, path }\n }\n\n // A link always gets an icon, even when its brand has no logo in either set\n // (Simple Icons removed LinkedIn, for example).\n if (!hasName && href) return linkIcon\n\n return undefined\n}\n\nconst resolved = resolve()\nconst module = resolved\n ? ((await icons[resolved.source][resolved.path]()) as { default?: any })\n : undefined\nconst Comp = module?.default\n\nconst isLabelled =\n \"aria-label\" in props || \"aria-labelledby\" in props || \"role\" in props\n---\n\n{Comp && resolved && (\n \n)}\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\ntype Props = Omit, \"name\" | \"href\"> & {\n href?: HTMLAttributes<\"a\">[\"href\"]\n name?: string | number\n}\n\nconst { name, href, \"data-slot\": dataSlot = \"icon\", ...props } = Astro.props\n\nconst hrefMap = {\n \"x.com\": \"x\",\n twitter: \"twitter\",\n facebook: \"facebook\",\n instagram: \"instagram\",\n pinterest: \"pinterest\",\n youtube: \"youtube\",\n tiktok: \"tiktok\",\n snapchat: \"snapchat\",\n reddit: \"reddit\",\n tumblr: \"tumblr\",\n \"wa.me\": \"whatsapp\",\n telegram: \"telegram\",\n discord: \"discord\",\n vimeo: \"vimeo\",\n flickr: \"flickr\",\n yelp: \"yelp\",\n spotify: \"spotify\",\n behance: \"behance\",\n dribbble: \"dribbble\",\n soundcloud: \"soundcloud\",\n github: \"github\",\n twitch: \"twitch\",\n \"tel:\": \"phone\",\n \"mailto:\": \"mail\",\n \"maps.app.goo.gl\": \"map-pin\",\n linkedin: \"linkedin\",\n} as const\n\ntype Source = \"lucide\" | \"simple\"\n\nconst icons: Record Promise>> = {\n lucide: import.meta.glob(\"/node_modules/lucide-static/icons/*.svg\"),\n simple: import.meta.glob(\"/node_modules/simple-icons/icons/*.svg\"),\n}\n\nconst pathFor = (source: Source, icon: string) =>\n source === \"lucide\"\n ? `/node_modules/lucide-static/icons/${icon}.svg`\n : `/node_modules/simple-icons/icons/${icon}.svg`\n\n// Resolve an icon by explicit name, or derive one from a link href.\n// Names may be prefixed with `lucide:` or `simple:` to pick a set when both\n// sets contain the same name (for example `github` or `figma`).\nconst hasName = name != null && name !== \"\"\n\nconst resolve = () => {\n let key = hasName ? String(name) : undefined\n let order: Source[] = [\"lucide\", \"simple\"]\n\n if (!key && href) {\n const hrefKey = Object.keys(hrefMap).find((candidate) =>\n href.toString().includes(candidate)\n )\n if (hrefKey) {\n key = hrefMap[hrefKey as keyof typeof hrefMap]\n order = [\"simple\", \"lucide\"]\n }\n }\n\n const linkIcon = {\n source: \"lucide\" as const,\n path: pathFor(\"lucide\", \"link\"),\n }\n\n if (!key) return href ? linkIcon : undefined\n if (key === \"x.com\") key = \"simple:x\"\n\n const [prefix, icon] = key.includes(\":\") ? key.split(\":\") : [undefined, key]\n if (prefix === \"lucide\" || prefix === \"simple\") order = [prefix]\n\n for (const source of order) {\n const path = pathFor(source, icon)\n if (path in icons[source]) return { source, path }\n }\n\n // A link always gets an icon, even when its brand has no logo in either set\n // (Simple Icons removed LinkedIn, for example).\n if (!hasName && href) return linkIcon\n\n return undefined\n}\n\nconst resolved = resolve()\nconst module = resolved\n ? ((await icons[resolved.source][resolved.path]()) as { default?: any })\n : undefined\nconst Comp = module?.default\n\nconst isLabelled =\n \"aria-label\" in props || \"aria-labelledby\" in props || \"role\" in props\n---\n\n{Comp && resolved && (\n \n)}\n", "type": "registry:ui" }, { diff --git a/public/r/item.json b/public/r/item.json index 0f2fe9532..783d228e5 100644 --- a/public/r/item.json +++ b/public/r/item.json @@ -9,7 +9,7 @@ "files": [ { "path": "src/components/ui/item/item.astro", - "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 &\n HTMLAttributes<\"div\"> &\n HTMLAttributes<\"a\">\n\nconst variants = cva(\n \"[a]:hover:bg-muted rounded-md border text-sm group/item flex w-full flex-wrap items-center transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-3.5 px-4 py-3.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst {\n class: className,\n variant = \"default\",\n size = \"default\",\n href,\n ...props\n} = Astro.props\n\nconst Comp = href ? \"a\" : \"div\"\n---\n\n\n \n\n", + "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 &\n HTMLAttributes<\"div\"> &\n HTMLAttributes<\"a\">\n\nconst variants = cva(\n \"[a]:hover:bg-muted rounded-md border text-sm group/item flex w-full flex-wrap items-center transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-transparent\",\n outline: \"border-border\",\n muted: \"bg-muted/50 border-transparent\",\n },\n size: {\n default: \"gap-3.5 px-4 py-3.5\",\n sm: \"gap-2.5 px-3 py-2.5\",\n xs: \"gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst {\n class: className,\n variant = \"default\",\n size = \"default\",\n href,\n ...props\n} = Astro.props\n\nconst Comp = href != null ? \"a\" : \"div\"\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/layout.json b/public/r/layout.json index cf7219c6e..dc22c1d3f 100644 --- a/public/r/layout.json +++ b/public/r/layout.json @@ -9,7 +9,7 @@ "files": [ { "path": "src/components/ui/layout/layout.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport \"@/styles/global.css\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"html\">\n\nconst { class: className, lang, ...props } = Astro.props\n---\n\n\n \n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport \"@/styles/global.css\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"html\">\n\nconst { class: className, lang, ...props } = Astro.props\n---\n\n\n \n\n\n\n", "type": "registry:ui" }, { diff --git a/public/r/links-2.json b/public/r/links-2.json index 5980421f0..ed6e31559 100644 --- a/public/r/links-2.json +++ b/public/r/links-2.json @@ -2,22 +2,17 @@ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "links-2", "title": "Links 2", - "description": "Link carousel blocks for presenting related pages, components, or resources.", + "description": "Link grid blocks for presenting related pages, components, or resources.", "dependencies": [ "@lucide/astro" ], "registryDependencies": [ - "@fulldev/accordion", - "@fulldev/button", - "@fulldev/card", - "@fulldev/carousel", - "@fulldev/section", - "@fulldev/tabs" + "@fulldev/section" ], "files": [ { "path": "src/components/blocks/links-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n links: {\n href: string\n title: string\n description: string\n preview?: string\n }[]\n}\n\nconst { class: className, title, description, links, ...props } = Astro.props\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n\n
\n {links.map((item) => (\n \n \n {item.title}\n \n \n \n {item.description}\n \n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n links: {\n href: string\n title: string\n description: string\n }[]\n}\n\nconst { class: className, title, description, links, ...props } = Astro.props\n---\n\n
\n \n
\n

\n {title}\n

\n

\n {description}\n

\n
\n\n
\n {links.map((item) => (\n \n \n {item.title}\n \n \n \n {item.description}\n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/logo.json b/public/r/logo.json index 5118dce00..56ae30c0b 100644 --- a/public/r/logo.json +++ b/public/r/logo.json @@ -6,7 +6,7 @@ "files": [ { "path": "src/components/ui/logo/logo.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & HTMLAttributes<\"a\">\n\nconst { class: className, href, ...props } = Astro.props\n\nconst Comp = href ? \"a\" : \"div\"\n---\n\n\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & HTMLAttributes<\"a\">\n\nconst {\n class: className,\n href,\n \"data-slot\": dataSlot = \"logo\",\n ...props\n} = Astro.props\n\nconst Comp = href != null ? \"a\" : \"div\"\n---\n\n\n \n\n", "type": "registry:ui" }, { @@ -16,7 +16,7 @@ }, { "path": "src/components/ui/logo/logo-text.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"logo-text\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/logos-1.json b/public/r/logos-1.json index 19dcad093..de62b4b00 100644 --- a/public/r/logos-1.json +++ b/public/r/logos-1.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/logos-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description?: string\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, title, description, brands, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description && {description}}\n
\n
\n {brands.map((brand) => (\n \n {brand.name}\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, title, description, brands, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
    \n {brands.map((brand) => (\n
  • \n \n {brand.name}\n \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/logos-2.json b/public/r/logos-2.json index 49feb4f1a..48760e394 100644 --- a/public/r/logos-2.json +++ b/public/r/logos-2.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/logos-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Marquee } from \"@/components/ui/marquee\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title?: string\n description?: string\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, title, description, brands, ...props } = Astro.props\n---\n\n
\n {(title || description) && (\n \n {title && {title}}\n {description && (\n {description}\n )}\n \n )}\n \n {brands.map((brand) => (\n \n {brand.name}\n \n ))}\n \n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport {\n Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeToggle,\n} from \"@/components/ui/marquee\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n brands: {\n name: string\n href?: string\n }[]\n labels: {\n play: string\n pause: string\n }\n}\n\nconst {\n class: className,\n title,\n description,\n brands,\n labels,\n ...props\n} = Astro.props\n---\n\n
\n \n {title}\n {description}\n \n \n \n \n \n \n {brands.map((brand) => (\n \n \n {brand.name}\n \n \n ))}\n \n \n
\n", "type": "registry:block" } ], diff --git a/public/r/logos-3.json b/public/r/logos-3.json index f0f2762ed..4824f14cc 100644 --- a/public/r/logos-3.json +++ b/public/r/logos-3.json @@ -10,7 +10,7 @@ "files": [ { "path": "src/components/blocks/logos-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, brands, ...props } = Astro.props\n---\n\n
\n \n
\n {brands.map((brand) => (\n \n {brand.name}\n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Logo, LogoText } from \"@/components/ui/logo\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n brands: {\n name: string\n href?: string\n }[]\n}\n\nconst { class: className, brands, ...props } = Astro.props\n---\n\n
\n \n
    \n {brands.map((brand) => (\n
  • \n \n {brand.name}\n \n
  • \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/marquee.json b/public/r/marquee.json index 25fc597f2..81916aedd 100644 --- a/public/r/marquee.json +++ b/public/r/marquee.json @@ -2,16 +2,39 @@ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "marquee", "title": "Marquee", - "description": "A continuous scrolling animation component for displaying content in a loop.", + "description": "A continuously scrolling row of content, with a pause control and a static fallback.", + "dependencies": [ + "embla-carousel@8.6.0", + "embla-carousel-auto-scroll@8.6.0", + "@lucide/astro" + ], + "registryDependencies": [ + "@fulldev/button" + ], "files": [ { "path": "src/components/ui/marquee/marquee.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst trackVariants = cva(\n \"flex min-w-max shrink-0 [animation:marquee_var(--marquee-duration)_linear_infinite] items-center gap-[var(--marquee-gap)] before:block before:size-0 before:shrink-0 before:content-[''] motion-reduce:[animation-play-state:paused]\",\n {\n variants: {\n direction: {\n left: \"\",\n right: \"[animation-direction:reverse]\",\n },\n pauseOnHover: {\n true: \"group-hover/marquee:[animation-play-state:paused]\",\n false: \"\",\n },\n },\n defaultVariants: {\n direction: \"left\",\n pauseOnHover: false,\n },\n }\n)\n\ntype Props = HTMLAttributes<\"div\"> &\n VariantProps & {\n duration?: string\n gap?: string\n infinite?: boolean\n }\n\nconst {\n class: className,\n direction,\n pauseOnHover,\n duration = \"40s\",\n gap = \"1.5rem\",\n infinite = true,\n style,\n ...props\n} = Astro.props\n\nconst resolvedStyle = [\n `--marquee-duration:${duration}`,\n `--marquee-gap:${gap}`,\n typeof style === \"string\" ? style : undefined,\n]\n .filter(Boolean)\n .join(\";\")\n---\n\n\n
\n \n
\n {infinite && (\n
\n \n
\n )}\n\n\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"marquee\",\n ...props\n} = Astro.props\n---\n\n\n \n\n\n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/marquee/marquee-content.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n reverse?: boolean\n}\n\nconst {\n class: className,\n reverse = false,\n \"data-slot\": dataSlot = \"marquee-content\",\n ...props\n} = Astro.props\n---\n\n\n
\n \n
\n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/marquee/marquee-item.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"marquee-item\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", + "type": "registry:ui" + }, + { + "path": "src/components/ui/marquee/marquee-toggle.astro", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport PauseIcon from \"@lucide/astro/icons/pause\"\nimport PlayIcon from \"@lucide/astro/icons/play\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants, type ButtonVariantProps } from \"@/components/ui/button\"\n\ntype Props = Omit, \"type\"> &\n ButtonVariantProps & {\n playLabel: string\n pauseLabel: string\n }\n\nconst {\n class: className,\n variant = \"outline\",\n size = \"icon-sm\",\n playLabel,\n pauseLabel,\n \"data-slot\": dataSlot = \"marquee-toggle\",\n ...props\n} = Astro.props\n\n// The marquee shows and hides the toggle through its wrapper, so the button's\n// own hidden attribute, class and style stay the caller's.\n---\n\n\n", "type": "registry:ui" }, { "path": "src/components/ui/marquee/index.ts", - "content": "export { default as Marquee } from \"./marquee.astro\"\n", + "content": "export { default as Marquee } from \"./marquee.astro\"\nexport { default as MarqueeContent } from \"./marquee-content.astro\"\nexport { default as MarqueeItem } from \"./marquee-item.astro\"\nexport { default as MarqueeToggle } from \"./marquee-toggle.astro\"\n", "type": "registry:ui" } ], diff --git a/public/r/navigation-menu.json b/public/r/navigation-menu.json index 297f589e6..5e76cdea7 100644 --- a/public/r/navigation-menu.json +++ b/public/r/navigation-menu.json @@ -25,7 +25,7 @@ }, { "path": "src/components/ui/navigation-menu/navigation-menu-link.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"a\"> & {\n active?: boolean\n}\n\nconst { class: className, active, ...props } = Astro.props\n---\n\n\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"a\"> & {\n active?: boolean\n}\n\nconst {\n class: className,\n active,\n \"aria-current\": ariaCurrent = active ? \"page\" : undefined,\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/price.json b/public/r/price.json index da3b26c9f..e512209cd 100644 --- a/public/r/price.json +++ b/public/r/price.json @@ -6,17 +6,17 @@ "files": [ { "path": "src/components/ui/price/price.astro", - "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
\n \n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"price\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/price/price-unit.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n\n / \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"price-unit\",\n ...props\n} = Astro.props\n---\n\n\n / \n\n", "type": "registry:ui" }, { "path": "src/components/ui/price/price-value.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport {\n formatPriceDiscount,\n formatPriceValue,\n type DiscountFormat,\n type PriceValue,\n} from \"./format-price-value\"\n\ntype Props = VariantProps &\n HTMLAttributes<\"span\"> & {\n price?: PriceValue\n compareAt?: PriceValue\n currency?: string\n locale?: string\n variant?: \"default\" | \"sale\"\n discountFormat?: DiscountFormat\n showDiscount?: boolean\n }\n\nconst variants = cva(\"leading-tight\", {\n variants: {\n variant: {\n default: \"text-foreground\",\n sale: \"text-muted-foreground line-through\",\n },\n },\n})\n\nconst {\n class: className,\n price,\n compareAt,\n currency = \"USD\",\n locale = \"en-US\",\n variant = \"default\",\n discountFormat = \"percentage\",\n showDiscount = true,\n ...props\n} = Astro.props\n\nconst formattedPrice = formatPriceValue(price, { currency, locale })\nconst formattedCompareAt = formatPriceValue(compareAt, { currency, locale })\nconst formattedDiscount =\n showDiscount && compareAt\n ? formatPriceDiscount(price, compareAt, {\n currency,\n locale,\n format: discountFormat,\n })\n : null\nconst hasDiscount = Boolean(formattedCompareAt && formattedDiscount)\n---\n\n{formattedPrice && (\n \n {formattedPrice}\n {formattedCompareAt && (\n \n {formattedCompareAt}\n \n )}\n {hasDiscount && (\n Save {formattedDiscount}\n )}\n \n)}\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport {\n formatPriceDiscount,\n formatPriceValue,\n parseSinglePriceValue,\n type DiscountFormat,\n type PriceValue,\n} from \"./format-price-value\"\n\ntype Props = VariantProps &\n HTMLAttributes<\"span\"> & {\n price?: PriceValue\n compareAt?: PriceValue\n currency?: string\n locale?: string\n variant?: \"default\" | \"sale\"\n discountFormat?: DiscountFormat\n showDiscount?: boolean\n discountLabel?: string\n }\n\nconst variants = cva(\"leading-tight\", {\n variants: {\n variant: {\n default: \"text-foreground\",\n sale: \"text-muted-foreground line-through\",\n },\n },\n})\n\nconst {\n class: className,\n price,\n compareAt,\n currency = \"USD\",\n locale = \"en-US\",\n variant = \"default\",\n discountFormat = \"percentage\",\n showDiscount = true,\n discountLabel = \"Save\",\n \"data-slot\": dataSlot = \"price-value\",\n ...props\n} = Astro.props\n\nconst formattedPrice = formatPriceValue(price, { currency, locale })\nconst currentValue = parseSinglePriceValue(price)\nconst compareAtValue = parseSinglePriceValue(compareAt)\n// A compare-at price only shows when it is higher than the price.\nconst formattedCompareAt =\n currentValue !== null &&\n compareAtValue !== null &&\n compareAtValue <= currentValue\n ? null\n : formatPriceValue(compareAt, { currency, locale })\nconst formattedDiscount =\n showDiscount && formattedCompareAt !== null\n ? formatPriceDiscount(price, compareAt, {\n currency,\n locale,\n format: discountFormat,\n })\n : null\n---\n\n{formattedPrice !== null && (\n \n {formattedPrice}\n {formattedCompareAt !== null && (\n \n {formattedCompareAt}\n \n )}\n {formattedDiscount !== null && (\n \n {discountLabel} {formattedDiscount}\n \n )}\n \n)}\n", "type": "registry:ui" }, { diff --git a/public/r/pricing-1.json b/public/r/pricing-1.json index ec4c2a50e..2649f08fb 100644 --- a/public/r/pricing-1.json +++ b/public/r/pricing-1.json @@ -17,7 +17,7 @@ "files": [ { "path": "src/components/blocks/pricing-1.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description?: string\n plans: {\n name: string\n description: string\n price: number\n currency: string\n unit: string\n featured?: boolean\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }[]\n}\n\nconst { class: className, title, description, plans, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description && {description}}\n
\n
\n \n
\n {plans.map((plan) => (\n \n \n
\n {plan.name}\n {plan.featured && Popular}\n
\n {plan.description}\n
\n \n \n \n {plan.unit}\n \n \n
    \n {plan.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n {plan.button.label}\n \n \n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n featuredLabel: string\n locale?: string\n discountLabel?: string\n plans: {\n name: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n featured?: boolean\n features: string[]\n button: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n featuredLabel,\n locale,\n discountLabel,\n plans,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n \n
\n {plans.map((plan) => (\n \n \n
\n {plan.name}\n {plan.featured && {featuredLabel}}\n
\n {plan.description}\n
\n \n \n \n {plan.price.unit}\n \n \n
    \n {plan.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n {plan.button.label}\n \n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/pricing-2.json b/public/r/pricing-2.json index d474a8d12..14d7ffde3 100644 --- a/public/r/pricing-2.json +++ b/public/r/pricing-2.json @@ -16,7 +16,7 @@ "files": [ { "path": "src/components/blocks/pricing-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n plans: {\n name: string\n description: string\n price: number\n compareAt?: number\n currency: string\n unit: string\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }[]\n}\n\nconst { class: className, title, description, plans, ...props } = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n {plans.map((plan, index) => (\n \n \n {plan.name}\n {plan.description}\n \n \n \n \n {plan.unit}\n \n \n
    \n {plan.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n {plan.button.label}\n \n \n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n locale?: string\n discountLabel?: string\n plans: {\n name: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n featured?: boolean\n features: string[]\n button: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n locale,\n discountLabel,\n plans,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {title}\n {description}\n
\n
\n {plans.map((plan) => (\n \n \n {plan.name}\n {plan.description}\n \n \n \n \n {plan.price.unit}\n \n \n
    \n {plan.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n {plan.button.label}\n \n \n
\n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/pricing-3.json b/public/r/pricing-3.json index f924ce05f..5e767ea90 100644 --- a/public/r/pricing-3.json +++ b/public/r/pricing-3.json @@ -17,7 +17,7 @@ "files": [ { "path": "src/components/blocks/pricing-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n offer: {\n name: string\n description: string\n price: number\n currency: string\n unit: string\n features: string[]\n button: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }\n }\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n offer,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n {title}\n {description && {description}}\n
\n \n \n {offer.name}\n {offer.description}\n \n \n \n \n {offer.unit}\n \n \n
    \n {offer.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n {offer.button.label}\n \n \n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport { CheckIcon } from \"@lucide/astro\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n locale?: string\n discountLabel?: string\n offer: {\n name: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n features: string[]\n button: {\n label: string\n href: string\n }\n }\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n locale,\n discountLabel,\n offer,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n {description}\n
\n \n \n {offer.name}\n {offer.description}\n \n \n \n \n {offer.price.unit}\n \n \n
    \n {offer.features.map((feature) => (\n
  • \n \n {feature}\n
  • \n ))}\n
\n
\n \n \n \n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/product-1.json b/public/r/product-1.json index 69e448d08..d09a7114b 100644 --- a/public/r/product-1.json +++ b/public/r/product-1.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/product-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n price: {\n value: number\n currency: string\n unit: string\n }\n note: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n image,\n price,\n note,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n \n {badge}\n \n

\n {title}\n

\n

{description}

\n \n \n {price.unit}\n \n

{note}

\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n image: {\n src: ImageMetadata\n alt: string\n }\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n locale?: string\n discountLabel?: string\n note: string\n buttons: {\n label: string\n href: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n image,\n price,\n locale,\n discountLabel,\n note,\n buttons,\n ...props\n} = Astro.props\n---\n\n
\n \n \n
\n \n {badge}\n \n

\n {title}\n

\n

{description}

\n \n \n {price.unit}\n \n

{note}

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/products-1.json b/public/r/products-1.json index 551e0e726..2bc2c4508 100644 --- a/public/r/products-1.json +++ b/public/r/products-1.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/products-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products, ...props } = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((product) => (\n \n \n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n locale?: string\n discountLabel?: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n locale,\n discountLabel,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((product) => (\n \n \n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/products-2.json b/public/r/products-2.json index 47d395874..34a441afd 100644 --- a/public/r/products-2.json +++ b/public/r/products-2.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/products-2.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n products: {\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products, ...props } = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((item) => (\n
\n \n
\n
\n

{item.title}

\n

\n {item.description}\n

\n
\n \n \n {item.price.unit}\n \n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n locale?: string\n discountLabel?: string\n products: {\n title: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n locale,\n discountLabel,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((item) => (\n
\n \n
\n
\n

{item.title}

\n

\n {item.description}\n

\n
\n \n \n {item.price.unit}\n \n
\n
\n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/products-3.json b/public/r/products-3.json index 91921d696..0e6645c63 100644 --- a/public/r/products-3.json +++ b/public/r/products-3.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/products-3.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n products: {\n title: string\n description: string\n price: {\n value: number\n currency: string\n }\n }[]\n}\n\nconst { class: className, badge, title, products, ...props } = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((product) => (\n \n \n \n \n \n \n \n {product.title}\n {product.description}\n \n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n locale?: string\n discountLabel?: string\n products: {\n title: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n locale,\n discountLabel,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n
\n {products.map((product) => (\n \n \n \n \n \n \n \n {product.title}\n {product.description}\n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/products-4.json b/public/r/products-4.json index b5deb3d87..6885edb3d 100644 --- a/public/r/products-4.json +++ b/public/r/products-4.json @@ -12,7 +12,7 @@ "files": [ { "path": "src/components/blocks/products-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n
\n
\n {products.map((product) => (\n \n \n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n \n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n locale?: string\n discountLabel?: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n locale,\n discountLabel,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }) => (\n \n ))}\n
\n
\n
\n {products.map((product) => (\n \n \n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/products-5.json b/public/r/products-5.json index d0bae90d8..9b0a09fb9 100644 --- a/public/r/products-5.json +++ b/public/r/products-5.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/products-5.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n buttons: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n buttons,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n
\n
\n {products.map((product) => (\n \n
\n \n
\n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\"\nimport { Price, PriceUnit, PriceValue } from \"@/components/ui/price\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n buttons: {\n label: string\n href: string\n }[]\n locale?: string\n discountLabel?: string\n products: {\n image: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n price: {\n value: number\n compareAt?: number\n currency: string\n unit: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n buttons,\n locale,\n discountLabel,\n products,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n
\n {buttons.map(({ href, label }) => (\n \n ))}\n
\n
\n
\n {products.map((product) => (\n \n \n \n {product.title}\n {product.description}\n \n \n \n \n {product.price.unit}\n \n \n \n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/rating.json b/public/r/rating.json index 7490c6dbb..57afb7920 100644 --- a/public/r/rating.json +++ b/public/r/rating.json @@ -9,7 +9,7 @@ "files": [ { "path": "src/components/ui/rating/rating.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Star from \"@lucide/astro/icons/star\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n value?: number\n}\n\nconst {\n value = 5,\n class: className,\n \"aria-label\": ariaLabel = `Rated ${value} out of 5`,\n ...props\n} = Astro.props\n---\n\n\n {Array.from({ length: 5 }).map((_, index) => {\n const fillPercentage =\n index < Math.floor(value)\n ? 100\n : index === Math.floor(value)\n ? (value % 1) * 100\n : 0\n\n return (\n \n \n {fillPercentage > 0 && (\n \n \n \n )}\n \n )\n })}\n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport Star from \"@lucide/astro/icons/star\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n value?: number\n}\n\nconst {\n value = 5,\n class: className,\n \"aria-label\": ariaLabel = `Rated ${value} out of 5`,\n \"data-slot\": dataSlot = \"rating\",\n ...props\n} = Astro.props\n---\n\n\n {Array.from({ length: 5 }).map((_, index) => {\n const fillPercentage =\n index < Math.floor(value)\n ? 100\n : index === Math.floor(value)\n ? (value % 1) * 100\n : 0\n\n return (\n \n \n {fillPercentage > 0 && (\n \n \n \n )}\n \n )\n })}\n\n", "type": "registry:ui" }, { diff --git a/public/r/registry.json b/public/r/registry.json index 7d74eff2f..ba9d1ef86 100644 --- a/public/r/registry.json +++ b/public/r/registry.json @@ -1064,16 +1064,36 @@ "name": "marquee", "type": "registry:ui", "title": "Marquee", - "description": "A continuous scrolling animation component for displaying content in a loop.", + "description": "A continuously scrolling row of content, with a pause control and a static fallback.", "categories": [ "ui" ], "docs": "https://ui.full.dev/components/marquee/", + "dependencies": [ + "embla-carousel@8.6.0", + "embla-carousel-auto-scroll@8.6.0", + "@lucide/astro" + ], + "registryDependencies": [ + "@fulldev/button" + ], "files": [ { "path": "src/components/ui/marquee/marquee.astro", "type": "registry:ui" }, + { + "path": "src/components/ui/marquee/marquee-content.astro", + "type": "registry:ui" + }, + { + "path": "src/components/ui/marquee/marquee-item.astro", + "type": "registry:ui" + }, + { + "path": "src/components/ui/marquee/marquee-toggle.astro", + "type": "registry:ui" + }, { "path": "src/components/ui/marquee/index.ts", "type": "registry:ui" @@ -2535,7 +2555,6 @@ "docs": "https://ui.full.dev/blocks/article/", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ @@ -2556,7 +2575,6 @@ "docs": "https://ui.full.dev/blocks/article/", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ @@ -2577,7 +2595,6 @@ "docs": "https://ui.full.dev/blocks/articles/", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ @@ -2619,7 +2636,6 @@ "docs": "https://ui.full.dev/blocks/articles/", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ @@ -2640,7 +2656,6 @@ "docs": "https://ui.full.dev/blocks/articles/", "registryDependencies": [ "@fulldev/avatar", - "@fulldev/badge", "@fulldev/section" ], "files": [ @@ -2726,16 +2741,9 @@ "contact" ], "docs": "https://ui.full.dev/blocks/contact/", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ @@ -2754,16 +2762,9 @@ "contact" ], "docs": "https://ui.full.dev/blocks/contact/", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ @@ -2782,16 +2783,9 @@ "contact" ], "docs": "https://ui.full.dev/blocks/contact/", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ "@fulldev/button", - "@fulldev/field", - "@fulldev/input", "@fulldev/section", - "@fulldev/textarea", - "@fulldev/form", "@fulldev/icon" ], "files": [ @@ -3253,11 +3247,7 @@ "features" ], "docs": "https://ui.full.dev/blocks/features/", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], @@ -3320,11 +3310,7 @@ "features" ], "docs": "https://ui.full.dev/blocks/features/", - "dependencies": [ - "@lucide/astro" - ], "registryDependencies": [ - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], @@ -3431,6 +3417,9 @@ "header" ], "docs": "https://ui.full.dev/blocks/header/", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -3455,6 +3444,9 @@ "header" ], "docs": "https://ui.full.dev/blocks/header/", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -3479,6 +3471,9 @@ "header" ], "docs": "https://ui.full.dev/blocks/header/", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -3504,6 +3499,9 @@ "header" ], "docs": "https://ui.full.dev/blocks/header/", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -3528,6 +3526,9 @@ "header" ], "docs": "https://ui.full.dev/blocks/header/", + "dependencies": [ + "@lucide/astro" + ], "registryDependencies": [ "@fulldev/button", "@fulldev/header", @@ -3838,7 +3839,7 @@ "name": "links-2", "type": "registry:block", "title": "Links 2", - "description": "Link carousel blocks for presenting related pages, components, or resources.", + "description": "Link grid blocks for presenting related pages, components, or resources.", "categories": [ "links" ], @@ -3847,12 +3848,7 @@ "@lucide/astro" ], "registryDependencies": [ - "@fulldev/accordion", - "@fulldev/button", - "@fulldev/card", - "@fulldev/carousel", - "@fulldev/section", - "@fulldev/tabs" + "@fulldev/section" ], "files": [ { @@ -4381,7 +4377,6 @@ ], "registryDependencies": [ "@fulldev/badge", - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], @@ -4470,7 +4465,6 @@ "@fulldev/header", "@fulldev/icon", "@fulldev/kbd", - "@fulldev/layout", "@fulldev/logo", "@fulldev/separator", "@fulldev/sidebar", diff --git a/public/r/reviews-1.json b/public/r/reviews-1.json index ac00928ae..d4fae359c 100644 --- a/public/r/reviews-1.json +++ b/public/r/reviews-1.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/reviews-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title?: string\n description?: string\n reviews: {\n rating: number\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, title, description, reviews, ...props } = Astro.props\n---\n\n
\n {(title || description) && (\n \n {title && {title}}\n {description && (\n {description}\n )}\n \n )}\n \n
\n {reviews.map((item) => (\n \n \n
\n \n \n
\n

\n {item.quote}\n

\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n reviews: {\n rating: number\n ratingLabel: string\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, title, description, reviews, ...props } = Astro.props\n---\n\n
\n \n {title}\n {description}\n \n \n
\n {reviews.map((item) => (\n \n \n
\n
\n \n \n
\n
\n

{item.quote}

\n
\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n
\n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/reviews-2.json b/public/r/reviews-2.json index 353359080..494ef9157 100644 --- a/public/r/reviews-2.json +++ b/public/r/reviews-2.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/reviews-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n featured: {\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }\n reviews: {\n rating: number\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, featured, reviews, ...props } = Astro.props\n---\n\n
\n \n
\n \n
\n {featured.quote}\n
\n
\n \n \n {featured.initials}\n \n
\n

{featured.name}

\n

{featured.role}

\n
\n
\n
\n
\n {reviews.map((item) => (\n
\n \n
\n \n

\n {item.quote}\n

\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Rating } from \"@/components/ui/rating\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport { Separator } from \"@/components/ui/separator\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n featured: {\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }\n reviews: {\n rating: number\n ratingLabel: string\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, featured, reviews, ...props } = Astro.props\n---\n\n
\n \n
\n \n
\n

{featured.quote}

\n
\n
\n \n \n {featured.initials}\n \n
\n

{featured.name}

\n

{featured.role}

\n
\n
\n
\n
\n {reviews.map((item) => (\n
\n \n
\n \n
\n

{item.quote}

\n
\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/reviews-3.json b/public/r/reviews-3.json index 7642fe047..5f405a1b8 100644 --- a/public/r/reviews-3.json +++ b/public/r/reviews-3.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/reviews-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/components/ui/carousel\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title?: string\n description?: string\n reviews: {\n rating: number\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, title, description, reviews, ...props } = Astro.props\n---\n\n
\n {(title || description) && (\n \n {title && {title}}\n {description && (\n {description}\n )}\n \n )}\n \n \n \n {reviews.map((item) => (\n \n
\n \n \n
\n {item.quote}\n
\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n
\n \n \n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronLeftIcon from \"@lucide/astro/icons/chevron-left\"\nimport ChevronRightIcon from \"@lucide/astro/icons/chevron-right\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/components/ui/carousel\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n labels: {\n previous: string\n next: string\n carousel: string\n slide: string\n }\n reviews: {\n rating: number\n ratingLabel: string\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n labels,\n reviews,\n ...props\n} = Astro.props\n---\n\n
\n \n {title}\n {description}\n \n \n \n \n {reviews.map((item) => (\n \n
\n \n \n
\n

{item.quote}

\n
\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n
\n \n \n {labels.previous}\n \n \n \n {labels.next}\n \n \n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/reviews-4.json b/public/r/reviews-4.json index c7bab1225..3c962de9f 100644 --- a/public/r/reviews-4.json +++ b/public/r/reviews-4.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/reviews-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport { Marquee } from \"@/components/ui/marquee\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title?: string\n description?: string\n reviews: {\n rating: number\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst { class: className, title, description, reviews, ...props } = Astro.props\n\nconst half = Math.ceil(reviews.length / 2)\nconst topRow = reviews.slice(0, half)\nconst bottomRow = reviews.slice(half)\n---\n\n
\n {(title || description) && (\n \n {title && {title}}\n {description && (\n {description}\n )}\n \n )}\n
\n div]:items-stretch\"\n >\n {topRow.map((item) => (\n \n \n \n

\n {item.quote}\n

\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n \n div]:items-stretch\"\n >\n {bottomRow.map((item) => (\n \n \n \n

\n {item.quote}\n

\n
\n \n \n {item.initials}\n \n
\n

{item.name}

\n

{item.role}

\n
\n
\n
\n
\n ))}\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Card, CardContent } from \"@/components/ui/card\"\nimport {\n Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeToggle,\n} from \"@/components/ui/marquee\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n labels: {\n play: string\n pause: string\n }\n reviews: {\n rating: number\n ratingLabel: string\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n labels,\n reviews,\n ...props\n} = Astro.props\n\nconst half = Math.ceil(reviews.length / 2)\nconst rows = [reviews.slice(0, half), reviews.slice(half)]\n---\n\n
\n \n {title}\n {description}\n \n \n \n \n \n {rows\n .filter((row) => row.length > 0)\n .map((row, index) => (\n \n {row.map((item) => (\n \n \n \n
\n \n
\n

{item.quote}

\n
\n
\n \n \n {item.initials}\n \n
\n

\n {item.name}\n

\n

{item.role}

\n
\n
\n
\n
\n
\n
\n ))}\n
\n ))}\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/reviews-5.json b/public/r/reviews-5.json index 0369cd763..4f438bd1b 100644 --- a/public/r/reviews-5.json +++ b/public/r/reviews-5.json @@ -15,7 +15,7 @@ "files": [ { "path": "src/components/blocks/reviews-5.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Marquee } from \"@/components/ui/marquee\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title?: string\n description?: string\n reviews: {\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n rating: number\n }[]\n}\n\nconst { class: className, title, description, reviews, ...props } = Astro.props\n\nconst third = Math.ceil(reviews.length / 3)\nconst row1 = reviews.slice(0, third)\nconst row2 = reviews.slice(third, third * 2)\nconst row3 = reviews.slice(third * 2)\n---\n\n
\n {(title || description) && (\n \n {title && {title}}\n {description && (\n {description}\n )}\n \n )}\n
\n div]:items-stretch\"\n >\n {row1.map((item) => (\n
\n
\n
\n
\n \n \n {item.initials}\n \n
\n

\n {item.name}\n

\n

{item.role}

\n
\n
\n \n
\n
\n \n

\n {item.quote}\n

\n
\n
\n
\n ))}\n \n div]:items-stretch\"\n >\n {row2.map((item) => (\n
\n
\n
\n
\n \n \n {item.initials}\n \n
\n

\n {item.name}\n

\n

{item.role}

\n
\n
\n \n
\n
\n \n

\n {item.quote}\n

\n
\n
\n
\n ))}\n \n div]:items-stretch\"\n >\n {row3.map((item) => (\n
\n
\n
\n
\n \n \n {item.initials}\n \n
\n

\n {item.name}\n

\n

{item.role}

\n
\n
\n \n
\n
\n \n

\n {item.quote}\n

\n
\n
\n
\n ))}\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport QuoteIcon from \"@lucide/astro/icons/quote\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport {\n Marquee,\n MarqueeContent,\n MarqueeItem,\n MarqueeToggle,\n} from \"@/components/ui/marquee\"\nimport { Rating } from \"@/components/ui/rating\"\nimport {\n Section,\n SectionContainer,\n SectionDescription,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n labels: {\n play: string\n pause: string\n }\n reviews: {\n quote: string\n image?: ImageMetadata\n initials: string\n name: string\n role: string\n rating: number\n ratingLabel: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n labels,\n reviews,\n ...props\n} = Astro.props\n\nconst third = Math.ceil(reviews.length / 3)\nconst rows = [\n reviews.slice(0, third),\n reviews.slice(third, third * 2),\n reviews.slice(third * 2),\n]\n---\n\n
\n \n {title}\n {description}\n \n \n \n \n \n {rows\n .filter((row) => row.length > 0)\n .map((row, index) => (\n \n {row.map((item) => (\n \n
\n
\n
\n \n \n {item.initials}\n \n
\n

\n {item.name}\n

\n

{item.role}

\n
\n
\n \n
\n
\n \n
\n

{item.quote}

\n
\n
\n
\n
\n ))}\n
\n ))}\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/section.json b/public/r/section.json index 1f4c5a200..929ff6ee8 100644 --- a/public/r/section.json +++ b/public/r/section.json @@ -6,12 +6,12 @@ "files": [ { "path": "src/components/ui/section/section.astro", - "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<\"section\"> & VariantProps\n\nconst variants = cva(\"gap-16 py-[var(--section-padding,--spacing(16))] relative flex scroll-mt-12 flex-col\", {\n variants: {\n variant: {\n default: \"w-full bg-background\",\n floating:\n \"my-16 rounded-xl border bg-background shadow-md mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst { class: className, variant, ...props } = Astro.props\n---\n\n\n \n\n", + "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<\"section\"> & VariantProps\n\nconst variants = cva(\"gap-16 py-[var(--section-padding,--spacing(16))] relative flex scroll-mt-12 flex-col\", {\n variants: {\n variant: {\n default: \"w-full bg-background\",\n floating:\n \"my-16 rounded-xl border bg-background shadow-md mx-auto w-[calc(100%-2*var(--gutter,--spacing(4)))] max-w-[calc(var(--container,var(--container-7xl))-2*var(--gutter,--spacing(4)))] overflow-hidden\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst {\n class: className,\n variant = \"default\",\n \"data-slot\": dataSlot = \"section\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { "path": "src/components/ui/section/section-container.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"section-container\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst {\n class: className,\n \"data-slot\": dataSlot = \"section-container\",\n ...props\n} = Astro.props\n---\n\n\n \n\n", "type": "registry:ui" }, { diff --git a/public/r/services-1.json b/public/r/services-1.json index f934c1f9b..0ad551b55 100644 --- a/public/r/services-1.json +++ b/public/r/services-1.json @@ -14,7 +14,7 @@ "files": [ { "path": "src/components/blocks/services-1.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label?: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {badge && {badge}}\n {title}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => {\n const Wrapper = service.href ? \"a\" : \"div\"\n return (\n \n \n
\n {service.label && (\n \n {service.label}\n \n )}\n

{service.title}

\n

\n {service.description}\n

\n {service.href && (\n \n \n \n )}\n
\n \n )\n })}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n buttons: {\n label: string\n href: string\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {badge}\n {title}\n
\n
\n {buttons.map(({ href, label }) => (\n \n ))}\n
\n
\n
\n {services.map((service) => {\n const Wrapper = service.href != null ? \"a\" : \"div\"\n return (\n \n \n
\n \n {service.label}\n \n

{service.title}

\n

\n {service.description}\n

\n {service.href != null && (\n \n \n \n )}\n
\n \n )\n })}\n
\n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/services-2.json b/public/r/services-2.json index 36df53f2c..8c24f803c 100644 --- a/public/r/services-2.json +++ b/public/r/services-2.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/services-2.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label?: string\n title: string\n description: string\n button?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n {title}\n {description && (\n

\n {description}\n

\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => (\n
\n \n
\n {service.label && (\n \n {service.label}\n \n )}\n

{service.title}

\n

\n {service.description}\n

\n {service.button && (\n \n {service.button.label}\n \n )}\n
\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label: string\n title: string\n description: string\n button: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n

\n {description}\n

\n
\n
\n {services.map((service) => (\n
\n \n
\n \n {service.label}\n \n

{service.title}

\n

\n {service.description}\n

\n \n {service.button.label}\n \n
\n
\n ))}\n
\n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/services-3.json b/public/r/services-3.json index c031f55bc..53b390522 100644 --- a/public/r/services-3.json +++ b/public/r/services-3.json @@ -11,7 +11,7 @@ "files": [ { "path": "src/components/blocks/services-3.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n button?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n {title}\n {description && (\n

\n {description}\n

\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => (\n
\n \n
\n
\n

{service.title}

\n

\n {service.description}\n

\n {service.button && (\n \n {service.button.label}\n \n )}\n
\n
\n ))}\n
\n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n button: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n {services.map((service) => (\n
\n \n
\n
\n

{service.title}

\n

\n {service.description}\n

\n \n {service.button.label}\n \n
\n
\n ))}\n
\n \n
\n", "type": "registry:block" }, { diff --git a/public/r/services-4.json b/public/r/services-4.json index 8319c0db0..a848dbe59 100644 --- a/public/r/services-4.json +++ b/public/r/services-4.json @@ -13,7 +13,7 @@ "files": [ { "path": "src/components/blocks/services-4.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n {description && (\n

\n {description}\n

\n )}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => (\n
\n \n
\n

{service.title}

\n

\n {service.description}\n

\n
\n {service.href && (\n \n Learn more\n \n \n )}\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n link?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n {services.map((service) => (\n
\n \n
\n

{service.title}

\n

\n {service.description}\n

\n
\n {service.link && (\n \n {service.link.label}\n \n \n )}\n
\n ))}\n
\n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/services-5.json b/public/r/services-5.json index b20aeb7ab..2458133c0 100644 --- a/public/r/services-5.json +++ b/public/r/services-5.json @@ -8,14 +8,13 @@ ], "registryDependencies": [ "@fulldev/badge", - "@fulldev/button", "@fulldev/icon", "@fulldev/section" ], "files": [ { "path": "src/components/blocks/services-5.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n icon?: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n {title}\n {description && (\n

\n {description}\n

\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => (\n
\n
\n \n
\n

{service.title}

\n

\n {service.description}\n

\n {service.href && (\n \n Learn more\n \n \n )}\n
\n ))}\n
\n
\n
\n", + "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Icon } from \"@/components/ui/icon\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n services: {\n icon: string\n title: string\n description: string\n link?: {\n label: string\n href: string\n }\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n {title}\n

\n {description}\n

\n
\n
\n {services.map((service) => (\n
\n
\n \n
\n

{service.title}

\n

\n {service.description}\n

\n {service.link && (\n \n {service.link.label}\n \n \n )}\n
\n ))}\n
\n
\n
\n", "type": "registry:block" } ], diff --git a/public/r/services-6.json b/public/r/services-6.json index d20c3c556..82f8c027b 100644 --- a/public/r/services-6.json +++ b/public/r/services-6.json @@ -14,7 +14,7 @@ "files": [ { "path": "src/components/blocks/services-6.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge && {badge}}\n

\n {title}\n

\n {description && (\n

\n {description}\n

\n )}\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service) => (\n
\n \n
\n
\n
\n

{service.title}

\n

\n {service.description}\n

\n
\n {service.href && (\n \n \n \n )}\n
\n
\n ))}\n
\n \n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Section, SectionContainer } from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n buttons: {\n label: string\n href: string\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n {badge}\n

\n {title}\n

\n

\n {description}\n

\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n {services.map((service) => (\n
\n \n
\n
\n
\n

{service.title}

\n

\n {service.description}\n

\n
\n {service.href != null && (\n \n \n \n )}\n
\n
\n ))}\n
\n \n
\n", "type": "registry:block" }, { diff --git a/public/r/services-7.json b/public/r/services-7.json index 9a22c4444..bbc7e0404 100644 --- a/public/r/services-7.json +++ b/public/r/services-7.json @@ -14,7 +14,7 @@ "files": [ { "path": "src/components/blocks/services-7.astro", - "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge?: string\n title: string\n description?: string\n buttons?: {\n label: string\n href: string\n variant?: \"default\" | \"outline\" | \"secondary\" | \"ghost\"\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label?: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {badge && {badge}}\n {title}\n {description && (\n

\n {description}\n

\n )}\n
\n {buttons?.length && (\n
\n {buttons.map(({ href, label, ...button }) => (\n \n ))}\n
\n )}\n
\n
\n {services.map((service, index) => (\n \n \n
\n {service.label && (\n \n {service.label}\n \n )}\n \n {service.title}\n \n

\n {service.description}\n

\n \n Learn more\n \n
\n
\n \n ))}\n \n
\n
\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { Image } from \"astro:assets\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ArrowRightIcon from \"@lucide/astro/icons/arrow-right\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Section,\n SectionContainer,\n SectionTitle,\n} from \"@/components/ui/section\"\nimport PlaceholderImage from \"@/assets/placeholder.svg\"\n\ntype Props = HTMLAttributes<\"section\"> & {\n badge: string\n title: string\n description: string\n linkLabel: string\n buttons: {\n label: string\n href: string\n }[]\n services: {\n image?: {\n src: ImageMetadata\n alt: string\n }\n label: string\n title: string\n description: string\n href?: string\n }[]\n}\n\nconst {\n class: className,\n badge,\n title,\n description,\n buttons,\n linkLabel,\n services,\n ...props\n} = Astro.props\n---\n\n
\n \n
\n
\n {badge}\n {title}\n

\n {description}\n

\n
\n
\n {buttons.map(({ href, label }, index) => (\n \n {label}\n \n ))}\n
\n
\n
\n {services.map((service, index) => {\n const Wrapper = service.href != null ? \"a\" : \"div\"\n return (\n \n \n
\n \n {service.label}\n \n \n {service.title}\n \n

\n {service.description}\n

\n {service.href != null && (\n \n {linkLabel}\n \n
\n )}\n
\n \n )\n })}\n \n
\n
\n", "type": "registry:block" }, { diff --git a/public/r/sidebar-1.json b/public/r/sidebar-1.json index c09ee6102..4ec41b325 100644 --- a/public/r/sidebar-1.json +++ b/public/r/sidebar-1.json @@ -14,7 +14,6 @@ "@fulldev/header", "@fulldev/icon", "@fulldev/kbd", - "@fulldev/layout", "@fulldev/logo", "@fulldev/separator", "@fulldev/sidebar", @@ -23,7 +22,7 @@ "files": [ { "path": "src/components/blocks/sidebar-1.astro", - "content": "---\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\nimport SearchIcon from \"@lucide/astro/icons/search\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandShortcut,\n} from \"@/components/ui/command\"\nimport { DialogTrigger } from \"@/components/ui/dialog\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Kbd } from \"@/components/ui/kbd\"\nimport { LogoImage, LogoText } from \"@/components/ui/logo\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sidebar,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarTrigger,\n} from \"@/components/ui/sidebar\"\nimport { ThemeToggle } from \"@/components/ui/theme-toggle\"\n\ntype Props = {\n class?: string\n logo: {\n label: string\n href: string\n src?: any\n srcLight?: any\n srcDark?: any\n alt?: string\n }\n search: {\n label: string\n empty: string\n items: {\n label: string\n href: string\n title: string\n path: string\n description: string\n group: string\n }[]\n }\n breadcrumb: {\n items: {\n label: string\n href: string\n }[]\n menu: {\n label: string\n href: string\n }[]\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n githubRepo: string\n}\n\nconst {\n class: className,\n logo,\n search,\n breadcrumb,\n navigation,\n githubRepo,\n}: Props = Astro.props\n\nconst normalizePath = (path: string) => {\n if (path === \"/\") return path\n\n return path.replace(/\\/$/, \"\")\n}\nconst currentPath = normalizePath(Astro.url.pathname)\nconst searchGroups = search.items.reduce<\n { label: string; items: typeof search.items }[]\n>((groups, item) => {\n const group = groups.find((entry) => entry.label === item.group)\n\n if (group) {\n group.items.push(item)\n } else {\n groups.push({ label: item.group, items: [item] })\n }\n\n return groups\n}, [])\n\nlet githubStars = \"Stars\"\n\ntry {\n const response = await fetch(`https://api.github.com/repos/${githubRepo}`)\n const data = await response.json()\n\n if (response.ok && typeof data.stargazers_count === \"number\") {\n githubStars = new Intl.NumberFormat().format(data.stargazers_count)\n }\n} catch {\n // Keep the fallback label when GitHub is unavailable.\n}\n\n/* eslint-disable astro/jsx-a11y/no-autofocus -- Focus moves into the search dialog when it opens. */\n---\n\n\n \n \n \n \n {logo.label}\n \n \n \n \n {search.label}\n \n ⌘ + K\n \n \n\n \n \n \n {search.empty}\n\n {searchGroups.map((group) => (\n \n {group.items.map((item) => (\n \n {item.label}\n {item.href}\n \n ))}\n \n ))}\n \n \n \n \n \n {navigation.map((group) => (\n \n {group.label}\n \n {(group.links ?? [group]).map((item) => (\n \n \n {item.label}\n \n \n ))}\n \n \n ))}\n \n \n \n
\n \n \n \n \n \n \n {breadcrumb.items.map((item, index) => {\n const isLast = index === breadcrumb.items.length - 1\n const isHome = item.href === \"/\"\n const hasMenu =\n !isHome &&\n breadcrumb.menu.some(\n (menuItem) =>\n normalizePath(menuItem.href) === normalizePath(item.href)\n )\n\n return (\n <>\n {index > 0 && /}\n \n {hasMenu ? (\n \n \n {item.label}\n \n \n \n \n {breadcrumb.menu.map((menuItem) => (\n \n {menuItem.label}\n \n ))}\n \n \n \n ) : isLast ? (\n {item.label}\n ) : (\n \n {item.label}\n \n )}\n \n \n )\n })}\n {breadcrumb.menu.length > 0 && currentPath === \"/\" && (\n <>\n /\n \n \n \n \n Toggle menu\n \n \n \n {breadcrumb.menu.map((item) => (\n \n {item.label}\n \n ))}\n \n \n \n \n \n )}\n \n \n \n \n \n \n {githubStars}\n \n \n \n \n
\n \n
\n
\n\n\n", + "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport type { HTMLAttributes } from \"astro/types\"\nimport ChevronDownIcon from \"@lucide/astro/icons/chevron-down\"\nimport SearchIcon from \"@lucide/astro/icons/search\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandShortcut,\n} from \"@/components/ui/command\"\nimport { DialogTrigger } from \"@/components/ui/dialog\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\nimport { Header, HeaderContainer, HeaderGroup } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Kbd } from \"@/components/ui/kbd\"\nimport { LogoImage, LogoText } from \"@/components/ui/logo\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sidebar,\n SidebarContent,\n SidebarGroup,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarTrigger,\n} from \"@/components/ui/sidebar\"\nimport { ThemeToggle } from \"@/components/ui/theme-toggle\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n currentPath: string\n logo: {\n label: string\n href: string\n src?: ImageMetadata\n srcLight?: ImageMetadata\n srcDark?: ImageMetadata\n }\n search: {\n label: string\n empty: string\n items: {\n label: string\n href: string\n title: string\n path: string\n description: string\n group: string\n }[]\n }\n breadcrumb: {\n items: {\n label: string\n href: string\n }[]\n menu: {\n label: string\n href: string\n }[]\n }\n navigation: {\n label: string\n href: string\n links?: {\n label: string\n href: string\n }[]\n }[]\n githubRepo: string\n githubStars?: number\n labels: {\n sidebar: string\n github: string\n stars: string\n breadcrumb: string\n breadcrumbMenu: string\n sidebarToggle: string\n mobileTitle: string\n mobileDescription: string\n theme: string\n shortcut: {\n mac: string\n other: string\n }\n }\n}\n\nconst {\n currentPath: rawCurrentPath,\n logo,\n search,\n breadcrumb,\n navigation,\n githubRepo,\n githubStars,\n labels,\n ...props\n} = Astro.props\n\nconst normalizePath = (path: string) => {\n if (path === \"/\") return path\n\n return path.replace(/\\/$/, \"\")\n}\nconst currentPath = normalizePath(rawCurrentPath)\nconst searchGroups = search.items.reduce<\n { label: string; items: typeof search.items }[]\n>((groups, item) => {\n const group = groups.find((entry) => entry.label === item.group)\n\n if (group) {\n group.items.push(item)\n } else {\n groups.push({ label: item.group, items: [item] })\n }\n\n return groups\n}, [])\n\nconst githubStarsLabel =\n githubStars === undefined\n ? labels.stars\n : new Intl.NumberFormat().format(githubStars)\n\n/* eslint-disable astro/jsx-a11y/no-autofocus -- Focus moves into the search dialog when it opens. */\n---\n\n\n \n \n \n \n {logo.label}\n \n \n \n \n {search.label}\n \n {labels.shortcut.mac}\n \n \n\n \n \n \n {search.empty}\n\n {searchGroups.map((group) => (\n \n {group.items.map((item) => (\n \n {item.label}\n {item.href}\n \n ))}\n \n ))}\n \n \n \n \n \n {navigation.map((group) => (\n \n {group.label}\n \n {(group.links ?? [group]).map((item) => (\n \n \n {item.label}\n \n \n ))}\n \n \n ))}\n \n \n \n
\n \n \n \n \n \n \n {breadcrumb.items.map((item, index) => {\n const isLast = index === breadcrumb.items.length - 1\n const isHome = item.href === \"/\"\n const hasMenu =\n !isHome &&\n breadcrumb.menu.some(\n (menuItem) =>\n normalizePath(menuItem.href) === normalizePath(item.href)\n )\n\n return (\n <>\n {index > 0 && /}\n \n {hasMenu ? (\n \n \n {item.label}\n \n \n \n \n {breadcrumb.menu.map((menuItem) => (\n \n {menuItem.label}\n \n ))}\n \n \n \n ) : isLast ? (\n {item.label}\n ) : (\n \n {item.label}\n \n )}\n \n \n )\n })}\n {breadcrumb.menu.length > 0 && currentPath === \"/\" && (\n <>\n /\n \n \n \n \n {labels.breadcrumbMenu}\n \n \n \n {breadcrumb.menu.map((item) => (\n \n {item.label}\n \n ))}\n \n \n \n \n \n )}\n \n \n \n \n \n \n {labels.github}\n {githubStarsLabel}\n \n \n \n \n
\n \n
\n
\n\n\n", "type": "registry:block" } ], diff --git a/public/r/sidebar.json b/public/r/sidebar.json index 07ce66f00..c2d2a3d09 100644 --- a/public/r/sidebar.json +++ b/public/r/sidebar.json @@ -24,7 +24,7 @@ }, { "path": "src/components/ui/sidebar/sidebar.astro", - "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\n\ntype Props = Omit, \"dir\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n state?: \"expanded\" | \"collapsed\"\n}\n\nconst {\n class: className,\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n state = \"expanded\",\n ...props\n} = Astro.props\n\nconst desktopState = collapsible === \"none\" ? \"expanded\" : state\nconst desktopCollapsible = desktopState === \"collapsed\" ? collapsible : \"\"\n---\n\n{collapsible === \"none\" ? (\n \n \n \n) : (\n <>\n \n \n \n Sidebar\n Displays the mobile sidebar.\n \n
\n \n
\n \n
\n\n