diff --git a/docs/app/page.tsx b/docs/app/page.tsx index 32382de304..ee45e76020 100644 --- a/docs/app/page.tsx +++ b/docs/app/page.tsx @@ -1,9 +1,9 @@ import Link from "next/link"; -import {} from "better-auth/client"; import Section from "@/components/landing/section"; import Hero from "@/components/landing/hero"; import { Separator } from "@/components/ui/separator"; import { FeaturesSectionDemo } from "@/components/blocks/features-section-demo-3"; +import Features from "@/components/features"; export default function HomePage() { return (
@@ -15,6 +15,7 @@ export default function HomePage() { id="hero" > +
); diff --git a/docs/components/display-techstack.tsx b/docs/components/display-techstack.tsx new file mode 100644 index 0000000000..6174622bda --- /dev/null +++ b/docs/components/display-techstack.tsx @@ -0,0 +1,44 @@ +import { cn } from "@/lib/utils"; +import { techStackIcons } from "./techstack-icons"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; + + +type TechStackIconType = { + [key: string]: { + name: string; + icon: any; + }; +}; +export const TechStackDisplay = ({ + skills, + className, +}: { + skills: string[]; + className?: string; +}) => { + return ( +
+ {skills.map((icon) => { + return ( + + + + + {techStackIcons[icon].icon} + + + + {techStackIcons[icon].name} + + + + ); + })} +
+ ); +}; \ No newline at end of file diff --git a/docs/components/features.tsx b/docs/components/features.tsx new file mode 100644 index 0000000000..d4b45b8474 --- /dev/null +++ b/docs/components/features.tsx @@ -0,0 +1,225 @@ +"use client"; +import { + CheckIcon, + Globe2Icon, + PlugIcon, + PlugZap2Icon, + Plus, + RabbitIcon, + ShieldCheckIcon, + Webhook, + XIcon, +} from "lucide-react"; +import { + LockClosedIcon, +} from "@radix-ui/react-icons"; +import Link from "next/link"; +import { Button } from "./ui/button"; +import React, { useState } from "react"; +import { TechStackDisplay } from "./display-techstack"; +import { Ripple } from "./ripple"; + + +export default function Features() { + + return ( +
+ +
+
+ + +
+ +

Framework Agnostic

+
+
+
+
+

+ Supports popular frameworks +

+
+
+

+ Supports your favorite frontend, backend and meta frameworks, including React, Vue, Svelte, Solid, Next.js, Nuxt.js, Hono, and more{" "} + + Learn more + +

+
+
+
+ + +
+ +

Authentication

+
+
+
+
+

+ Email & Password Authentication +

+
+
+

+ Builtin support for email and password authentication, with secure password hashing and account management features{" "} + + Learn more + +

+
+
+
+ + +
+ +

Social Sign-on

+
+
+
+
+

+ Support multiple providers. +

+
+
+

+ Allow users to sign in with their accounts, including Github, Google, Discord, Twitter, and more.{" "} + + Learn more + +

+
+
+
+
+ +

Two Factor

+
+
+
+
+

+ 2FA right out of the box. +

+
+
+

+ Supports your favorite frontend, backend and meta frameworks, including React, Vue, Svelte, Solid, Next.js, Nuxt.js, Hono, and more, + {" "} + + Learn more + +

+
+
+
+
+ +

Organization & Access Control

+
+
+
+
+

+ Gain and manage access. +

+
+
+

+ Manage users and their access to resources within your application.{" "} + + Learn more + +

+
+
+
+ +
+ +

Plugin Ecosystem

+
+
+
+

+ Pluggable with custom. +

+
+
+
+

+ Enhance your application with our official plugins and those created by the community.{" "} + + Learn more + +

+
+
+
+
+
+
+ +

Start in a minute

+
+

+ Start in a minute and. accelerate with 10x speed +

+
+ +
+ + + + +
+
+ + + +
+
+
+ ); +} \ No newline at end of file diff --git a/docs/components/icons.tsx b/docs/components/icons.tsx index d5a819f5ed..cea363301d 100644 --- a/docs/components/icons.tsx +++ b/docs/components/icons.tsx @@ -1,6 +1,7 @@ export const Icons = { - nextJS: () => ( + nextJS: ({className}: {className?:string}) => ( ), - nuxt: () => ( + nuxt: ({className}: {className?:string}) => ( ), - svelteKit: () => ( + svelteKit: ({className}: {className?:string}) => ( ), - solidStart: () => ( + solidStart: ({className}: {className?:string}) => ( ), - react: () => ( + react: ({className}: {className?:string}) => ( ), - hono: () => ( + hono: ({className}: {className?:string}) => ( + {Array.from({ length: numCircles }, (_, i) => { + const size = mainCircleSize + i * 70; + const opacity = mainCircleOpacity - i * 0.03; + const animationDelay = `${i * 0.06}s`; + const borderStyle = i === numCircles - 1 ? "dashed" : "solid"; + const borderOpacity = 5 + i * 5; + + return ( +
+ ); + })} +
+ ); +}); \ No newline at end of file diff --git a/docs/components/techstack-icons.tsx b/docs/components/techstack-icons.tsx new file mode 100644 index 0000000000..c91ad5b435 --- /dev/null +++ b/docs/components/techstack-icons.tsx @@ -0,0 +1,36 @@ + +import {Icons} from './icons' +type TechStackIconType = { + [key: string]: { + name: string; + icon: any; + }; + }; +export const techStackIcons: TechStackIconType = { + nextJs: { + name: "Nextjs", + icon: , + }, + nuxt: { + name: "Nuxt", + icon: , + }, + svelteKit: { + name: "Svelte Kit", + icon: , + }, + solidStart: { + name: "Solid Start", + icon: , + }, + react: { + name: "Reaact", + icon: , + }, + hono: { + name: "Hono", + icon: , + }, + + + }; \ No newline at end of file diff --git a/docs/content/changelog/changelog.mdx b/docs/content/changelog/changelog.mdx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/package.json b/docs/package.json index 3b198c6429..b7b18ea328 100644 --- a/docs/package.json +++ b/docs/package.json @@ -41,7 +41,7 @@ "@tsparticles/engine": "^3.5.0", "@tsparticles/react": "^3.0.0", "@tsparticles/slim": "^3.5.0", - "better-auth": "^0.0.8-beta.6", + "better-auth": "workspace:*", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "1.0.0", diff --git a/docs/tailwind.config.js b/docs/tailwind.config.js index 09dc410b74..3a06d1ea24 100644 --- a/docs/tailwind.config.js +++ b/docs/tailwind.config.js @@ -102,6 +102,14 @@ export default { }, }, keyframes: { + ripple: { + "0% , 100%": { + transform: "translate(-50% , -50%) scale(1)", + }, + "50%": { + transform: "translate(-50% , -50%) scale(0.9)", + }, + }, "accordion-down": { from: { height: "0", @@ -122,6 +130,7 @@ export default { animation: { "accordion-down": "accordion-down 0.2s ease-out", "accordion-up": "accordion-up 0.2s ease-out", + ripple: "ripple var(--duration,2s) ease calc(var(--i, 0)*.2s) infinite", }, }, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8755fe8fd3..b7bcacd9ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,7 +109,7 @@ importers: version: 0.6.0 better-auth: specifier: ^0.0.8-beta.6 - version: link:../../packages/better-auth + version: 0.0.8-beta.25(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.1(typescript@5.5.4)) oslo: specifier: ^1.2.1 version: 1.2.1 @@ -589,7 +589,7 @@ importers: specifier: ^3.5.0 version: 3.5.0 better-auth: - specifier: ^0.0.8-beta.6 + specifier: workspace:* version: link:../packages/better-auth class-variance-authority: specifier: ^0.7.0 @@ -2735,7 +2735,7 @@ packages: '@expo/bunyan@4.0.1': resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + engines: {'0': node >=0.10.0} '@expo/cli@0.18.29': resolution: {integrity: sha512-X810C48Ss+67RdZU39YEO1khNYo1RmjouRV+vVe0QhMoTe8R6OA3t+XYEdwaNbJ5p/DJN7szfHfNmX2glpC7xg==} @@ -5415,6 +5415,10 @@ packages: arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argon2@0.31.2: + resolution: {integrity: sha512-QSnJ8By5Mth60IEte45w9Y7v6bWcQw3YhRtJKKN8oNCxnTLDiv/AXXkDPf2srTMfxFVn3QJdVv2nhXESsUa+Yg==} + engines: {node: '>=14.0.0'} + argon2@0.41.1: resolution: {integrity: sha512-dqCW8kJXke8Ik+McUcMDltrbuAWETPyU6iq+4AhxqKphWi7pChB/Zgd/Tp/o8xRLbg8ksMj46F/vph9wnxpTzQ==} engines: {node: '>=16.17.0'} @@ -5580,6 +5584,10 @@ packages: resolution: {integrity: sha512-PR1bR6zbgNRkSHZAPQQEqaHpHMyASXwBU2IbDY60gDWJO72d3wBSCiOKQcSGJRxJ55O9jitHVMHqHcAtC0++0A==} hasBin: true + better-auth@0.0.8-beta.25: + resolution: {integrity: sha512-UPXF+77OG7FkpQCqCO3qA8wWja3VptKsLkS0k8EEFyL3WwVncpJfysJg2BqSMUjxAkHoGZnSCq6tuFMMxTLzlA==} + hasBin: true + better-call@0.1.0: resolution: {integrity: sha512-CfLBgWyReKx2fXJb0OkNV0/ot8BMO+HDRKJRCidIGuCBkk07d7NzVZR4BnnOy02Jiuh4x3l5oupKQGXw78fqSA==} peerDependencies: @@ -5590,6 +5598,11 @@ packages: peerDependencies: typescript: ^5.6.0-beta + better-call@0.2.0: + resolution: {integrity: sha512-a2NFJP2BBnUzyaHHwDldUBc4mr3V0czleV4t0Di9e2zewzFVNdCY1m5ZugbIhzY1b5xoUN8R1yMhyZFDuZh2aA==} + peerDependencies: + typescript: ^5.6.0-beta + better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -17815,6 +17828,15 @@ snapshots: arg@5.0.2: {} + argon2@0.31.2: + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@phc/format': 1.0.0 + node-addon-api: 7.1.1 + transitivePeerDependencies: + - encoding + - supports-color + argon2@0.41.1: dependencies: '@phc/format': 1.0.0 @@ -18085,6 +18107,53 @@ snapshots: - typescript - vue + better-auth@0.0.8-beta.25(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.1(typescript@5.5.4)): + dependencies: + '@better-fetch/fetch': 1.1.4 + '@better-fetch/logger': 1.1.3 + '@chronark/access-policies': 0.0.2 + '@nanostores/query': 0.3.4(nanostores@0.11.2) + '@nanostores/react': 0.7.3(nanostores@0.11.2)(react@18.3.1) + '@nanostores/solid': 0.4.2(nanostores@0.11.2)(solid-js@1.8.21) + '@nanostores/vue': 0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.1(typescript@5.5.4)) + '@noble/ciphers': 0.6.0 + '@noble/hashes': 1.4.0 + '@paralleldrive/cuid2': 2.2.2 + '@simplewebauthn/browser': 10.0.0 + '@simplewebauthn/server': 10.0.1 + arctic: 2.0.0-next.5 + argon2: 0.31.2 + better-call: 0.2.0(typescript@5.5.4) + better-sqlite3: 11.1.2 + chalk: 5.3.0 + commander: 12.1.0 + consola: 3.2.3 + defu: 6.1.4 + dotenv: 16.4.5 + jiti: 1.21.6 + jose: 5.7.0 + kysely: 0.27.4 + mysql2: 3.11.0 + nanostores: 0.11.2 + oauth4webapi: 2.12.0 + ora: 8.0.1 + oslo: 1.2.1 + pg: 8.12.0 + prompts: 2.4.2 + tiny-glob: 0.2.9 + ts-morph: 23.0.0 + zod: 3.23.8 + transitivePeerDependencies: + - '@nanostores/logger' + - '@vue/devtools-api' + - encoding + - pg-native + - react + - solid-js + - supports-color + - typescript + - vue + better-call@0.1.0(typescript@5.5.4): dependencies: '@better-fetch/fetch': 1.1.4 @@ -18107,6 +18176,14 @@ snapshots: set-cookie-parser: 2.7.0 typescript: 5.6.0-beta + better-call@0.2.0(typescript@5.5.4): + dependencies: + '@better-fetch/fetch': 1.1.4 + '@types/set-cookie-parser': 2.4.10 + rou3: 0.5.1 + set-cookie-parser: 2.7.0 + typescript: 5.5.4 + better-opn@3.0.2: dependencies: open: 8.4.2