Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .coderabbit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ reviews:
- Correct formatting and grammar.
- Any broken links or images.
- check for if we have any new component additions it follows the same format as the other examples or the src/template/page.mdx.
- If you are updating a component's documentation, please ensure you also update the `lastModified` date for that component in `src/data/navigation.ts`. This is crucial for SEO.
- path: "src/components/**/*.tsx"
instructions: |
These are changes to UI components. Please check for:
Expand All @@ -64,4 +65,5 @@ reviews:
- The necessity of any new dependencies.
- Potential for conflicts or security vulnerabilities.
- That the changes are reflected in the lock file.
- For every new change (in the form of PR) should bump the version in package.json.
Summarize the changes in package.json, focusing on new, updated, or removed dependencies.
9 changes: 7 additions & 2 deletions Checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,15 @@ Follow these steps to add a new component to the project. Each step includes det

- [ ] **Add your component to navigation:**
Edit `src/data/navigation.ts`.
Add an entry for your component with its name and href.
Add an entry for your component with its name, href, and `lastModified` date.
_Example:_
```ts
{ name: "Fancy Button", href: "/docs/fancy-button" }
{ name: "Fancy Button", href: "/docs/fancy-button", lastModified: "2025-10-31T12:00:00+05:30" }
```
- [ ] **Add the `lastModified` date.** This is important for SEO. To get the date, you can use the following command in your terminal:
```bash
node
new Date().toISOString()
```

## 2. Component Source File
Expand Down
8 changes: 4 additions & 4 deletions Todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

### SEO

- [ ] create `sitemap.xml` and `robots.txt`.
- [ ] Add specific metadata to the landing page.
- [ ] Add specific metadata to MDX pages.
- [ ] Review and update `site.ts` and ensure all the information is accurate and complete. The `fallbackURL` should be updated to the production URL.
- [x] create `sitemap.xml` and `robots.txt`.
- [x] Add specific metadata to the landing page.
- [x] Add specific metadata to MDX pages.
- [x] Review and update `site.ts` and ensure all the information is accurate and complete. The `fallbackURL` should be updated to the production URL.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "aether-ui",
"version": "0.1.8",
"version": "0.1.9",
"private": true,
"scripts": {
"dev": "next dev --turbopack",
Expand Down
3 changes: 3 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
User-agent: *
Allow: /
Sitemap: https://aetherui.in/sitemap.xml
25 changes: 25 additions & 0 deletions src/app/(marketing)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,35 @@
import Hero from "@/components/landing/Hero";
import LandingHeader from "@/components/landing/header";
import Footer from "@/components/landing/Footer";
import { metaConfig, siteConfig } from "@/config/site";

export const metadata = metaConfig({
title: "Aether/UI - Beautifully designed, animated components for your next product.",
description:
"Aether/ui is a collection of beautiful, animated components for your next product, built with Motion and Tailwind CSS.",
isRoot: true,
});

const structuredData = {
"@context": "https://schema.org",
"@type": "WebSite",
url: siteConfig.url,
name: siteConfig.name,
description: siteConfig.description,
publisher: {
"@type": "Person",
name: "pantharhsit007",
url: "https://hrshit.in",
},
};

export default function Home() {
return (
<div className="relative">
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
/>
<LandingHeader />
<Hero />
<Footer />
Expand Down
31 changes: 31 additions & 0 deletions src/app/sitemap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { MetadataRoute } from "next";
import { NavigationLinks } from "@/data/navigation";
import { siteConfig } from "@/config/site";

const URL = siteConfig.url;

export default function sitemap(): MetadataRoute.Sitemap {
const staticRoutes = [
{
url: `${URL}/`,
lastModified: "2025-10-31T13:22:44+05:30",
},
{
url: `${URL}/community`,
lastModified: "2025-03-29T19:57:56+05:30",
},
{
url: `${URL}/showcase`,
lastModified: "2025-03-29T19:57:56+05:30",
},
];

const componentRoutes = NavigationLinks.flatMap((group) =>
group.children.map((item) => ({
url: `${URL}${item.href}`,
lastModified: item.lastModified || new Date().toISOString(),
}))
);
Comment on lines +8 to +28
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Reconsider using new Date() for all lastModified values.

Setting lastModified: new Date() for every route on every build signals to search engines that all pages changed, even when content is unchanged. This can negatively impact crawl efficiency and indexing.

Consider one of these approaches:

  • Use static dates for routes that don't change frequently
  • Retrieve actual file modification times for dynamic routes
  • Omit lastModified if you don't track content changes (Next.js will handle it appropriately)

Example with static dates:

 const staticRoutes = [
   {
     url: `${URL}/`,
-    lastModified: new Date(),
+    lastModified: new Date("2025-10-31"),
   },
   // ... similar for other static routes
 ];

Committable suggestion skipped: line range outside the PR's diff.


return [...staticRoutes, ...componentRoutes];
}
14 changes: 7 additions & 7 deletions src/components/landing/Hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ function Hero() {
src={src}
className="absolute inset-0 h-full w-full object-cover"
fill
alt="hero-bg-image"
alt="Abstract background image for the hero section of Aether/UI."
priority
placeholder="empty"
/>
Expand All @@ -50,15 +50,15 @@ function Hero() {
transition={variant.transition}
className="mx-auto -mt-12 flex w-fit max-w-screen-lg flex-col justify-center"
>
<div className="font-instrument-serif text-5xl font-bold tracking-tight text-transparent md:text-6xl lg:text-7xl xl:text-[5rem] xl:leading-[1]">
<p className="landing-gradient">
<h1 className="font-instrument-serif text-5xl font-bold tracking-tight text-transparent md:text-6xl lg:text-7xl xl:text-[5rem] xl:leading-[1]">
<span className="landing-gradient block">
Build <span className="text-shadow-glow text-cyan-900">Fast.</span> Animate{" "}
<span className="text-shadow-glow text-cyan-900">Bold.</span>
</p>
<p className="landing-gradient pb-1.5">
</span>
<span className="landing-gradient block pb-1.5">
Ship <span className="text-shadow-glow text-cyan-900">Beautiful.</span>
</p>
</div>
</span>
</h1>

<p className="font-bricolage-grotesque text-shadow-glow-2 mx-auto mt-2.5 text-center text-base tracking-tight text-zinc-200 md:w-[70%] md:text-lg">
Breathe life into your website with beautifully designed animated components, a
Expand Down
6 changes: 4 additions & 2 deletions src/config/site.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ const formatName = (name: string) => {
export interface MetaConfigProps {
title: string;
description: string;
isRoot?: boolean;
}

const fallbackURL = "https://ui-aether.vercel.app";
const fallbackURL = "https://aetherui.in";

/**
* @param title: Metadata["title"];
Expand All @@ -36,6 +37,7 @@ const fallbackURL = "https://ui-aether.vercel.app";
export const metaConfig = ({
title = siteConfig.name,
description = siteConfig.description,
isRoot = false,
}: MetaConfigProps): Metadata => ({
title,
description,
Expand Down Expand Up @@ -65,7 +67,7 @@ export const metaConfig = ({
title,
description,
siteName: siteConfig.name,
url: `${siteConfig.url}/docs/${formatName(title)}`,
url: isRoot ? siteConfig.url : `${siteConfig.url}/docs/${formatName(title)}`,
locale: "en_US",
images: [
{
Expand Down
15 changes: 15 additions & 0 deletions src/data/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export type NavigationItem = {
href: string;
isNew?: boolean;
isUpdated?: boolean;
lastModified?: string;
};

type NavigationGroup = {
Expand All @@ -17,10 +18,12 @@ export const NavigationLinks: NavigationGroup[] = [
{
name: "Introduction",
href: "/docs",
lastModified: "2025-04-19T02:27:15+05:30",
},
{
name: "Installation",
href: "/docs/installation",
lastModified: "2025-06-21T14:25:42+05:30",
},
],
},
Expand All @@ -30,35 +33,43 @@ export const NavigationLinks: NavigationGroup[] = [
{
name: "Button",
href: "/docs/button",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Hover Card",
href: "/docs/hover-card",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Morphing Card",
href: "/docs/morphing-card",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Feedback Modal",
href: "/docs/feedback-modal",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Bento Grid",
href: "/docs/bento-grid",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Mouse Trailer",
href: "/docs/mouse-trailer",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Help Desk",
href: "/docs/help-desk",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Scroll Indicator",
href: "/docs/scroll-indicator",
isNew: true,
lastModified: "2025-10-23T02:49:32+05:30",
},
],
},
Expand All @@ -68,15 +79,18 @@ export const NavigationLinks: NavigationGroup[] = [
{
name: "Fuzzy Text",
href: "/docs/fuzzy-text",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Smooth Slider",
href: "/docs/smooth-slider",
lastModified: "2025-10-13T00:55:14+05:30",
},
{
name: "Thinking Loader",
href: "/docs/thinking-loader",
isNew: true,
lastModified: "2025-10-22T16:00:03+05:30",
},
],
},
Expand All @@ -87,6 +101,7 @@ export const NavigationLinks: NavigationGroup[] = [
name: "Tilted Carousel",
href: "/docs/tilted-carousel",
isNew: true,
lastModified: "2025-10-13T02:21:26+05:30",
},
],
},
Expand Down