Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
6f749fd
Added async slash menu items POC
matthewlipski Jan 10, 2024
3d82986
Fixed vanilla example
matthewlipski Jan 10, 2024
c30d98e
Small test fix
matthewlipski Jan 10, 2024
22691e5
Implemented PR feedback
matthewlipski Jan 12, 2024
01c793e
Improved performance
matthewlipski Jan 12, 2024
7b39927
Simplified how outdated queries are ignored/cancelled
matthewlipski Jan 15, 2024
570e4c2
small fixes
YousefED Jan 15, 2024
d5cb006
Added custom suggestion menus PoC
matthewlipski Jan 15, 2024
03126c5
Updated custom mentions example
matthewlipski Jan 15, 2024
b6c5ce2
Add Liveblocks info and BlockNote download command (#540)
CTNicholas Jan 30, 2024
dc24296
wip: migrate to nextjs
YousefED Feb 1, 2024
c9ab68f
update docs2
YousefED Feb 1, 2024
2377bed
fixes
YousefED Feb 1, 2024
c70ee4d
fix: Mantine styles (#553)
matthewlipski Feb 1, 2024
9f4907e
Fixed paragraph shortcut (#556)
matthewlipski Feb 1, 2024
6ce6e57
v0.11.2
matthewlipski Feb 1, 2024
589643c
fix
YousefED Feb 1, 2024
0a9ac21
fix index
YousefED Feb 2, 2024
6c604e9
Converted more examples & small fixes
matthewlipski Feb 5, 2024
2dcf090
Added gen files for new examples
matthewlipski Feb 5, 2024
8749cdd
Small typing fixes
matthewlipski Feb 5, 2024
08599d7
misc
YousefED Feb 6, 2024
c8a785e
fix build
YousefED Feb 6, 2024
fb27c83
disable examples
YousefED Feb 6, 2024
09b966c
Converted remaining examples and small fixes
matthewlipski Feb 6, 2024
c199a24
improve examples
YousefED Feb 6, 2024
f1b1f43
react icon import only types
YousefED Feb 7, 2024
b132e29
fix build speed
YousefED Feb 7, 2024
3d9b869
Fixed demo & examples styling
matthewlipski Feb 8, 2024
09274ed
Small fix
matthewlipski Feb 8, 2024
5ed261b
basic auth working
YousefED Feb 8, 2024
3b0a7d7
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Feb 8, 2024
b089c0e
remove old site
YousefED Feb 8, 2024
0bdc2da
clean script + organize examples
YousefED Feb 8, 2024
d997c50
Changed home page gradients and styling fixes
matthewlipski Feb 8, 2024
85eeb48
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 8, 2024
f1e823d
update examples, docs, scripts
YousefED Feb 9, 2024
9ccc246
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Feb 9, 2024
71899fd
fix playground
YousefED Feb 9, 2024
2e81693
fix docs
YousefED Feb 9, 2024
fa46e7d
Merge remote-tracking branch 'TypeCellOS/main' into refactor/playgrou…
YousefED Feb 10, 2024
0c0a4e1
fix playground
YousefED Feb 10, 2024
692c5b3
add strictmode again!
YousefED Feb 10, 2024
44f804e
Revert "add strictmode again!"
YousefED Feb 10, 2024
74fe0f8
Revised features section and gradients
matthewlipski Feb 10, 2024
37125ef
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 10, 2024
39d7c42
small fixes
YousefED Feb 12, 2024
b127d54
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Feb 12, 2024
d438dea
small fixes
YousefED Feb 12, 2024
948b032
small fixes
YousefED Feb 12, 2024
7f1f2e6
try fix link clicks + speed
YousefED Feb 12, 2024
5b2f0d8
fix type issue
YousefED Feb 12, 2024
dfeb917
Revised styles, fixed dark mode, and small cleanup
matthewlipski Feb 13, 2024
886ebcb
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 13, 2024
32249f6
Small fix
matthewlipski Feb 13, 2024
fe45267
Improved dark mode selection
matthewlipski Feb 13, 2024
8ecb21b
Refactor/cleanup mount system (#567)
YousefED Feb 13, 2024
93e1d4f
refactor: Mentions & custom suggestion menus (#534)
matthewlipski Feb 13, 2024
242d42b
Refactored how remaining UI elements (except table handles) are creat…
matthewlipski Feb 13, 2024
89de7ac
Merge branch 'main' into mentions-suggestions
YousefED Feb 14, 2024
9563d8e
remove file left after merge
YousefED Feb 14, 2024
2cece52
Merge remote-tracking branch 'TypeCellOS/main' into mentions-suggestions
YousefED Feb 14, 2024
e196d3f
Replaced `data`/`position` hooks with refactored general hooks
matthewlipski Feb 14, 2024
7f47e5a
Fixed vanilla example
matthewlipski Feb 14, 2024
3f29e90
Lint fix
matthewlipski Feb 14, 2024
c9661ac
Minor fixes
matthewlipski Feb 14, 2024
8edebd1
Refactored table handles
matthewlipski Feb 14, 2024
4b9eb9a
Merge branch 'mentions-suggestions' into ui-component-creation-refactor
matthewlipski Feb 14, 2024
546d255
clean getitems
YousefED Feb 14, 2024
55ad4c0
misc
YousefED Feb 14, 2024
ce78cc6
test
YousefED Feb 14, 2024
9d4dcbd
tests
YousefED Feb 14, 2024
398fc25
small fixes
YousefED Feb 14, 2024
9de5fd5
Merge remote-tracking branch 'TypeCellOS/ui-component-creation-refact…
YousefED Feb 15, 2024
497ae27
about page
YousefED Feb 15, 2024
e0a7c25
Implemented PR feedback
matthewlipski Feb 15, 2024
d686d7f
Merge branch 'ui-component-creation-refactor' into mentions-suggestio…
matthewlipski Feb 15, 2024
7580ff9
Small naming fix
matthewlipski Feb 15, 2024
e1e774e
Merge pull request #576 from TypeCellOS/ui-component-creation-refactor
YousefED Feb 15, 2024
081db98
Added vanilla default slash menu items
matthewlipski Feb 15, 2024
9017f05
address feedback
YousefED Feb 15, 2024
175352b
Merge pull request #579 from TypeCellOS/mentions-suggestions-getitems
YousefED Feb 15, 2024
94db329
Merge remote-tracking branch 'TypeCellOS/refactor/playground-nextjs' …
YousefED Feb 15, 2024
caf4bba
Merge pull request #520 from TypeCellOS/mentions-suggestions
YousefED Feb 15, 2024
973654c
pair work
YousefED Feb 15, 2024
5a87a95
add footer
YousefED Feb 20, 2024
df05099
small fix
YousefED Feb 20, 2024
260d25f
faq, sponsors
YousefED Feb 20, 2024
4ce0fba
noteplan
YousefED Feb 20, 2024
07f348a
readme todo
YousefED Feb 20, 2024
c5eeeb3
Cleaned up homepage
matthewlipski Feb 27, 2024
1b47bfa
Addressed docs TODOs and cleanup
matthewlipski Feb 27, 2024
f69f532
refactor: UI component types, names, and API (#584)
matthewlipski Feb 28, 2024
485c5a7
Fixed demo styles & windows scrollbars
matthewlipski Feb 28, 2024
e5c0223
fix build
YousefED Feb 28, 2024
cde0188
fix og image?
YousefED Feb 28, 2024
5dec3fd
Changed selections demo(s) & fixed various styles
matthewlipski Feb 28, 2024
0e341bc
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 28, 2024
6c4516f
fix lint
YousefED Feb 28, 2024
c93ae36
lint fix
YousefED Feb 28, 2024
cdd9677
Fixed demo input/output TODOs and removed hide last line hack
matthewlipski Feb 28, 2024
b4dead8
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 28, 2024
ea23c06
fix tests
YousefED Feb 28, 2024
f56c920
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Feb 28, 2024
78c624c
try fix tests
YousefED Feb 28, 2024
9332330
Updated e2e test setup
matthewlipski Feb 29, 2024
d990098
Updated e2e test setup
matthewlipski Feb 29, 2024
3fd5946
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Feb 29, 2024
a5cd7f0
Added docs pages redirects and misc changes
matthewlipski Feb 29, 2024
563c205
scripts
YousefED Feb 29, 2024
86b1aa5
Updated screenshots
matthewlipski Feb 29, 2024
bd407e9
Fixed various docs TODOs
matthewlipski Feb 29, 2024
bb1cee7
webpack stats / github ci
YousefED Mar 1, 2024
dbf3cdc
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Mar 1, 2024
6d959a0
WIP: Fix/polish examples
matthewlipski Mar 1, 2024
e43da91
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Mar 1, 2024
8367f6c
ci update
YousefED Mar 1, 2024
0c11f88
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Mar 1, 2024
71d37cf
Finished examples cleanup (expect collab)
matthewlipski Mar 1, 2024
8dfde7b
Fixed toolbar button click behaviour for Safari
matthewlipski Mar 3, 2024
4cd12ec
Fixed collaboration examples
matthewlipski Mar 3, 2024
400a587
Revert dependency changes
matthewlipski Mar 3, 2024
801d1e8
fix package json
YousefED Mar 4, 2024
2fde96e
separate inter font
YousefED Mar 4, 2024
fd3fa3d
fix xss https://github.com/TypeCellOS/BlockNote/issues/601
YousefED Mar 4, 2024
631089e
Implemented PR feedback
matthewlipski Mar 4, 2024
f60ac1d
small edits
YousefED Mar 4, 2024
975b5f1
small cleanup
YousefED Mar 4, 2024
b8aecfb
fix bugs
YousefED Mar 4, 2024
7f6435e
features (wip)
YousefED Mar 4, 2024
c9f9cb2
fix
YousefED Mar 4, 2024
e0fedc2
only apply fix to safari
YousefED Mar 4, 2024
05dae5c
Merge pull request #599 from TypeCellOS/safari-toolbar-click-fix
YousefED Mar 4, 2024
6bd954e
comments
YousefED Mar 4, 2024
e17544c
Merge pull request #602 from TypeCellOS/site-updates
YousefED Mar 4, 2024
fd82aa3
fix package lock
YousefED Mar 4, 2024
3e676e1
fix authors
YousefED Mar 4, 2024
faa198b
fix bug
YousefED Mar 4, 2024
264ac05
fix inline content api
YousefED Mar 4, 2024
224cf88
Added insert inline content docs
matthewlipski Mar 4, 2024
1860dcd
update docs
YousefED Mar 4, 2024
23d7d39
small fixes
YousefED Mar 4, 2024
c90d7bb
update readme
YousefED Mar 4, 2024
98a65e9
text
YousefED Mar 4, 2024
3e18130
Merge pull request #600 from TypeCellOS/separate-font
YousefED Mar 5, 2024
47efc74
feat: Editor option to customize placeholders (#503)
matthewlipski Mar 5, 2024
990e424
fix Incorrect blocknote styles affecting Mantine ToolTip component st…
YousefED Mar 5, 2024
6cd4507
export
YousefED Mar 5, 2024
155362b
Cleaned up home page code
matthewlipski Mar 5, 2024
cb8ad02
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Mar 5, 2024
ae39426
Added font import
matthewlipski Mar 5, 2024
7753809
update about
YousefED Mar 5, 2024
9448e34
Merge branch 'refactor/playground-nextjs' of github.com:TypeCellOS/Bl…
YousefED Mar 5, 2024
9c9db69
Implemented community/faq feedback
matthewlipski Mar 5, 2024
59ff292
Merge remote-tracking branch 'origin/refactor/playground-nextjs' into…
matthewlipski Mar 5, 2024
ad50751
Updated test screenshots
matthewlipski Mar 5, 2024
713a21b
Updated features gifs
matthewlipski Mar 5, 2024
cc2d0c9
Removed TODOs (added corresponding GH issues)
matthewlipski Mar 5, 2024
6e85966
Fixed link
matthewlipski Mar 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 7 additions & 7 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: "18.x"
node-version: "20.x"

- name: Cache node modules
uses: actions/cache@v3
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
Expand All @@ -32,7 +32,7 @@ jobs:

- name: cache playwright
id: playwright-cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: pw-new-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
working-directory: ./tests
run: npx playwright test

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
Expand All @@ -80,5 +80,5 @@ jobs:
- name: Upload webpack stats artifact (editor)
uses: relative-ci/agent-upload-artifact-action@v1
with:
webpackStatsFile: ./examples/editor/dist/webpack-stats.json
webpackStatsFile: ./playground/dist/webpack-stats.json
artifactName: relative-ci-artifacts-editor
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v18.16.0
v20.11.0
26 changes: 11 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
<p align="center">
<a href="https://www.blocknotejs.org">
<img alt="TypeCell" src="https://github.com/TypeCellOS/BlockNote/raw/main/packages/website/docs/public/img/logos/banner.svg?raw=true" width="300" />
<img alt="TypeCell" src="https://github.com/TypeCellOS/BlockNote/raw/main/docs/public/img/logos/banner.svg?raw=true" width="300" />
</a>
</p>

<p align="center">
Welcome to BlockNote! The open source Block-Based
rich text editor. Easily add a modern text editing experience to your app.
React rich text editor. Easily add a modern text editing experience to your app.
</p>

<p align="center">
<a href="https://discord.gg/Qc2QTTH5dF"><img alt="Discord" src="https://img.shields.io/badge/Chat on discord%20-%237289DA.svg?&style=for-the-badge&logo=discord&logoColor=white"/></a> <a href="https://matrix.to/#/#typecell-space:matrix.org"><img alt="Matrix" src="https://img.shields.io/badge/Chat on matrix%20-%23000.svg?&style=for-the-badge&logo=matrix&logoColor=white"/></a>
<a href="https://discord.gg/Qc2QTTH5dF"><img alt="Discord" src="https://img.shields.io/badge/Chat on discord%20-%237289DA.svg?&style=for-the-badge&logo=discord&logoColor=white"/></a>
</p>

<p align="center">
<a href="https://www.blocknotejs.org">
Homepage
</a> - <a href="https://www.blocknotejs.org/docs/introduction">
Introduction
</a> - <a href="https://www.blocknotejs.org/docs/quickstart">
Documentation
</a> - <a href="https://www.blocknotejs.org/docs/quickstart">
Quickstart
</a>- <a href="https://www.blocknotejs.org/docs/examples">
Examples
</a>
</p>

# Live demo

Play with the editor @ [https://playground.blocknotejs.org/](https://playground.blocknotejs.org/).

(Source in [examples](/examples))
See our homepage @ [https://www.blocknotejs.org](https://www.blocknotejs.org/) or browse the [examples](https://www.blocknotejs.org/examples).

# Example code (React)

[![npm version](https://badge.fury.io/js/%40blocknote%2Freact.svg)](https://badge.fury.io/js/%40blocknote%2Freact)

```typescript
import { BlockNoteView, useBlockNote } from "@blocknote/react";
import { BlockNoteView, useCreateBlockNote } from "@blocknote/react";
import "@blocknote/core/fonts/inter.css";
import "@blocknote/react/style.css";

function App() {
const editor = useBlockNote({
onEditorContentChange: (editor) => {
// Log the document to console on every update
console.log(editor.getJSON());
},
});
const editor = useCreateBlockNote();

return <BlockNoteView editor={editor} />;
}
Expand Down
4 changes: 4 additions & 0 deletions docs/.env.local.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
AUTH_SECRET= # Linux: `openssl rand -hex 32` or go to https://generate-secret.vercel.app/32

AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
3 changes: 3 additions & 0 deletions docs/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "next/core-web-vitals"
}
36 changes: 36 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
36 changes: 36 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
2 changes: 2 additions & 0 deletions docs/app/api/auth/[...nextauth]/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { GET, POST } from "../../../../auth";
export const runtime = "edge"; // optional
19 changes: 7 additions & 12 deletions packages/website/api/og.tsx → docs/app/api/og/route.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
import { ImageResponse } from "@vercel/og";
import React from "react";
import { ImageResponse } from "next/og";

export const config = {
runtime: "edge",
};
export const runtime = "edge";

const font = fetch(
new URL("../docs/public/fonts/Gilroy-Regular.ttf", import.meta.url)
).then((res) => res.arrayBuffer());

export default async function handler(request) {
export async function GET(request: Request) {
try {
const fontData = await fetch(
new URL("../../../assets/fonts/Gilroy-Regular.ttf", import.meta.url),
).then((res) => res.arrayBuffer());

const { searchParams } = new URL(request.url);
let title = searchParams.get("title");
if (title && title.length > 100) {
title = title.slice(0, 99) + "…";
}

const fontData = await font;

const bannerSVG = (
<svg
width="938"
Expand Down
Binary file added docs/app/favicon.ico
Binary file not shown.
33 changes: 33 additions & 0 deletions docs/app/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

:root {
--foreground-rgb: 0, 0, 0;
--background-start-rgb: 214, 219, 220;
--background-end-rgb: 255, 255, 255;
}

@media (prefers-color-scheme: dark) {
:root {
--foreground-rgb: 255, 255, 255;
--background-start-rgb: 0, 0, 0;
--background-end-rgb: 0, 0, 0;
}
}

body {
color: rgb(var(--foreground-rgb));
background: linear-gradient(
to bottom,
transparent,
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb));
}

@layer utilities {
.text-balance {
text-wrap: balance;
}
}
22 changes: 22 additions & 0 deletions docs/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";

const inter = Inter({ subsets: ["latin"] });

export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};

export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
);
}
113 changes: 113 additions & 0 deletions docs/app/page.tsx.bak
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import Image from "next/image";

export default function Home() {
return (
<main className="flex min-h-screen flex-col items-center justify-between p-24">
<div className="z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex">
<p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30">
Get started by editing&nbsp;
<code className="font-mono font-bold">app/page.tsx</code>
</p>
<div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:h-auto lg:w-auto lg:bg-none">
<a
className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0"
href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
By{" "}
<Image
src="/vercel.svg"
alt="Vercel Logo"
className="dark:invert"
width={100}
height={24}
priority
/>
</a>
</div>
</div>

<div className="relative flex place-items-center before:absolute before:h-[300px] before:w-full sm:before:w-[480px] before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-full sm:after:w-[240px] after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 before:lg:h-[360px] z-[-1]">
<Image
className="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert"
src="/next.svg"
alt="Next.js Logo"
width={180}
height={37}
priority
/>
</div>

<div className="mb-32 grid text-center lg:max-w-5xl lg:w-full lg:mb-0 lg:grid-cols-4 lg:text-left">
<a
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 className={`mb-3 text-2xl font-semibold`}>
Docs{" "}
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p className={`m-0 max-w-[30ch] text-sm opacity-50`}>
Find in-depth information about Next.js features and API.
</p>
</a>

<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 className={`mb-3 text-2xl font-semibold`}>
Learn{" "}
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p className={`m-0 max-w-[30ch] text-sm opacity-50`}>
Learn about Next.js in an interactive course with&nbsp;quizzes!
</p>
</a>

<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 className={`mb-3 text-2xl font-semibold`}>
Templates{" "}
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p className={`m-0 max-w-[30ch] text-sm opacity-50`}>
Explore starter templates for Next.js.
</p>
</a>

<a
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30"
target="_blank"
rel="noopener noreferrer"
>
<h2 className={`mb-3 text-2xl font-semibold`}>
Deploy{" "}
<span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">
-&gt;
</span>
</h2>
<p className={`m-0 max-w-[30ch] text-sm opacity-50 text-balance`}>
Instantly deploy your Next.js site to a shareable URL with Vercel.
</p>
</a>
</div>
</main>
);
}
Loading