From e5ebb669bf81ffcc7185ca8aab02a82f4cd05b36 Mon Sep 17 00:00:00 2001 From: Taesu Date: Sun, 8 Mar 2026 12:00:58 +0900 Subject: [PATCH] fix: restore features.tsx and align import with canary --- landing/app/docs/[[...slug]]/page.tsx | 2 +- landing/components/docs/features.tsx | 135 ++++++++++++++++++++++++++ 2 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 landing/components/docs/features.tsx diff --git a/landing/app/docs/[[...slug]]/page.tsx b/landing/app/docs/[[...slug]]/page.tsx index ee79e6aa00..c8a48c0fe6 100644 --- a/landing/app/docs/[[...slug]]/page.tsx +++ b/landing/app/docs/[[...slug]]/page.tsx @@ -13,12 +13,12 @@ import { import Link from "next/link"; import { notFound } from "next/navigation"; import { APIMethod } from "@/components/api-method"; +import { Features } from "@/components/docs/features"; import { AddToCursor, DatabaseTable, DividerText, Endpoint, - Features, ForkButton, GenerateAppleJwt, GenerateSecret, diff --git a/landing/components/docs/features.tsx b/landing/components/docs/features.tsx new file mode 100644 index 0000000000..1f86b0611b --- /dev/null +++ b/landing/components/docs/features.tsx @@ -0,0 +1,135 @@ +import { useId } from "react"; + +export function Features() { + return ( +
+
+ {grid.map((feature, i) => ( +
+ +

+ {feature.title} +

+

+ {feature.description} +

+
+ ))} +
+
+ ); +} + +const grid = [ + { + title: "Framework Agnostic", + description: "Support for most popular frameworks", + }, + { + title: "Email & Password", + description: + "Built-in support for secure email and password authentication", + }, + { + title: "Account & Session Management", + description: "Manage user accounts and sessions with ease", + }, + { + title: "Built-In Rate Limiter", + description: "Built-in rate limiter with custom rules", + }, + { + title: "Automatic Database Management", + description: "Automatic database management and migrations", + }, + { + title: "Social Sign-on", + description: "Multiple social sign-on providers", + }, + { + title: "Organization & Access Control", + description: "Manage organizations and access control", + }, + { + title: "Two Factor Authentication", + description: "Secure your users with two factor authentication", + }, + { + title: "Plugin Ecosystem", + description: "Even more capabilities with plugins", + }, +]; + +export const Grid = ({ + pattern, + size, +}: { + pattern?: number[][]; + size?: number; +}) => { + const p = pattern ?? [ + [Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1], + [Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1], + [Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1], + [Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1], + [Math.floor(Math.random() * 4) + 7, Math.floor(Math.random() * 6) + 1], + ]; + return ( +
+
+ +
+
+ ); +}; + +export function GridPattern({ width, height, x, y, squares, ...props }: any) { + const patternId = useId(); + + return ( + + ); +}