mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-13 21:01:21 +08:00
Some checks failed
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
DB migration compat / Check if migrations changed (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests (Local Emulator) / E2E Tests (Local Emulator, Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
DB migration compat / Back-compat — Current branch migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code (push) Has been cancelled
DB migration compat / Forward-compat — Current branch code with ${{ needs.check-migrations-changed.outputs.base_branch }} branch migrations (push) Has been cancelled
DB migration compat / No migration changes (skipped) (push) Has been cancelled
67 lines
2.0 KiB
Plaintext
67 lines
2.0 KiB
Plaintext
---
|
|
title: Components
|
|
description: Pre-built Next.js components to make your life easier
|
|
sidebarTitle: Components
|
|
icon: "puzzle-piece"
|
|
---
|
|
|
|
# Components
|
|
|
|
In [the last guide](./setup), we initialized Stack. This time, we will take a quick look at some of the most useful Next.js components.
|
|
|
|
For the full documentation of all available components, please refer to the [components reference](../components).
|
|
|
|
## `<UserButton />`
|
|
|
|
The `<UserButton />` component shows the user's avatar that opens a dropdown with various user settings on click.
|
|
|
|
<Frame>
|
|
<img src="/images/user-button.png" alt="UserButton" width={200} height={200} />
|
|
</Frame>
|
|
|
|
```tsx title="page.tsx"
|
|
import { UserButton } from '@stackframe/stack';
|
|
|
|
export default function Page() {
|
|
return (
|
|
<UserButton />
|
|
);
|
|
}
|
|
```
|
|
|
|
## `<SignIn />` and `<SignUp />`
|
|
|
|
These components show a sign-in and sign-up form, respectively.
|
|
|
|
<Frame>
|
|
<img src="/images/sign-in.png" alt="SignIn" width={350} height={350} />
|
|
</Frame>
|
|
|
|
```tsx title="page.tsx"
|
|
import { SignIn } from '@stackframe/stack';
|
|
|
|
export default function Page() {
|
|
return (
|
|
<SignIn />
|
|
);
|
|
}
|
|
```
|
|
|
|
All of Stack's components are modular and built from smaller primitives. For example, the `<SignIn />` component is composed of the following:
|
|
|
|
- An `<OAuthButtonGroup />`, which itself is composed of multiple `<OAuthButton />` components
|
|
- A `<MagicLinkSignIn />`, which has a text field and calls `useStackApp().signInWithMagicLink()`
|
|
- A `<CredentialSignIn />`, which has two text fields and calls `useStackApp().signInWithCredential()`
|
|
|
|
You can use these components individually to build a custom sign-in component.
|
|
|
|
To change the default sign-in URL to your own, see the documentation on [custom pages](../customization/custom-pages).
|
|
|
|
## Others
|
|
|
|
Stack has many more components available. For a comprehensive list, please check the documentation on [components](../components).
|
|
|
|
## Next steps
|
|
|
|
In the next guide, we will do a deep-dive into retrieving and modifying user objects, as well as how to protect a page.
|