Login Form

Split login page section with editable credentials form and social sign-in buttons.

---
import Form from "@forms/form/Form.astro";
import Input from "@forms/input/Input.astro";
import Submit from "@forms/submit/Submit.astro";
import LoginForm from "@page-sections/ctas/login-form/LoginForm.astro";
---

<LoginForm backgroundColor="base" benefits={
  [
    {
      "title": "Shared visibility",
      "description": "Teams can review the same content and status updates in one place.",
      "iconName": "chart-bar",
      "iconColor": "blue"
    },
    {
      "title": "Faster edits",
      "description": "Visual editing keeps routine content changes out of the code queue.",
      "iconName": "pencil-square",
      "iconColor": "purple"
    },
    {
      "title": "Safer workflows",
      "description": "Structured components reduce one-off publishing mistakes.",
      "iconName": "shield-check",
      "iconColor": "green"
    }
  ]
} cardEyebrow="Welcome back" cardHeading="Log in to your account" cardText="Use your email and password, or continue with a social provider below." colorScheme="inherit" dividerText="Or continue with" footerLink="/sign-up/" footerLinkText="Create one" footerText="Need an account?" forgotPasswordLink="/reset-password/" forgotPasswordText="Forgot your password?" formAction="#" imageAlt="Quiet street with storefronts in warm evening light" imageSource="/src/assets/images/component-docs/quiet-street.jpg" introEyebrow="Member access" introHeading="Sign in and continue your work" introText="Access project history, manage content updates, and keep your team aligned from one account area." paddingVertical="5xl" socialButtonSections={
  [
    {
      "_component": "building-blocks/core-elements/button",
      "text": "Continue with Google",
      "hideText": false,
      "link": "/api/auth/oauth/google/start?returnTo=/account/",
      "iconName": "social/google",
      "iconPosition": "before",
      "variant": "tertiary",
      "size": "md"
    },
    {
      "_component": "building-blocks/core-elements/button",
      "text": "Continue with Facebook",
      "hideText": false,
      "link": "/api/auth/oauth/facebook/start?returnTo=/account/",
      "iconName": "social/facebook",
      "iconPosition": "before",
      "variant": "tertiary",
      "size": "md"
    }
  ]
}>
  <Form action="#">
    <Input iconName="envelope" iconPosition="before" label="Email address" name="email" placeholder="you@company.com" required type="email" />
    <Input iconName="lock-closed" iconPosition="before" label="Password" name="password" placeholder="Enter your password" required type="password" />
    <Submit size="md" variant="primary">
      Log in
    </Submit>
  </Form>
</LoginForm>
---
blocks:
  _component: page-sections/ctas/login-form
  introEyebrow: Member access
  introHeading: Sign in and continue your work
  introText: Access project history, manage content updates, and keep your team aligned from one account area.
  benefits:
    - title: Shared visibility
      description: Teams can review the same content and status updates in one place.
      iconName: chart-bar
      iconColor: blue
    - title: Faster edits
      description: Visual editing keeps routine content changes out of the code queue.
      iconName: pencil-square
      iconColor: purple
    - title: Safer workflows
      description: Structured components reduce one-off publishing mistakes.
      iconName: shield-check
      iconColor: green
  imageSource: /src/assets/images/component-docs/quiet-street.jpg
  imageAlt: Quiet street with storefronts in warm evening light
  cardEyebrow: Welcome back
  cardHeading: Log in to your account
  cardText: Use your email and password, or continue with a social provider below.
  formAction: '#'
  formBlocks:
    - _component: building-blocks/forms/input
      label: Email address
      name: email
      type: email
      placeholder: you@company.com
      required: true
      iconName: envelope
      iconPosition: before
    - _component: building-blocks/forms/input
      label: Password
      name: password
      type: password
      placeholder: Enter your password
      required: true
      iconName: lock-closed
      iconPosition: before
    - _component: building-blocks/forms/submit
      text: Log in
      variant: primary
      size: md
  forgotPasswordText: Forgot your password?
  forgotPasswordLink: /reset-password/
  dividerText: Or continue with
  socialButtonSections:
    - _component: building-blocks/core-elements/button
      text: Continue with Google
      hideText: false
      link: /api/auth/oauth/google/start?returnTo=/account/
      iconName: social/google
      iconPosition: before
      variant: tertiary
      size: md
    - _component: building-blocks/core-elements/button
      text: Continue with Facebook
      hideText: false
      link: /api/auth/oauth/facebook/start?returnTo=/account/
      iconName: social/facebook
      iconPosition: before
      variant: tertiary
      size: md
  footerText: Need an account?
  footerLinkText: Create one
  footerLink: /sign-up/
  colorScheme: inherit
  backgroundColor: base
  paddingVertical: 5xl
---

Overview

Use Login Form when you need a complete sign-in page inside the same editable page-section system as the rest of the starter. It keeps the credential fields, provider buttons, and supporting marketing content configurable without hardcoding auth-page markup into a one-off route.

Properties

introEyebrow string | default: Member access

Optional eyebrow above the marketing copy.

introHeading string | default: Welcome back to your workspace

Main heading shown beside the login card.

introText string | default: Sign in to manage your projects, review activity, and continue where you left off.

Supporting copy for the intro panel.

benefits array | default: array

Short proof points displayed in the intro panel.

Item Properties:

title string | default: Benefit title

Short benefit title.

description string | default: Brief supporting detail for this login-page benefit.

Supporting copy for the benefit.

iconName enum | default: check-circle

Icon shown for this benefit.

iconColor enum | default: blue

Accent color applied to the icon.

Accepted values:
  • default
  • blue
  • green
  • yellow
  • orange
  • red
  • purple
  • pink
  • cyan

imageSource string | default: /src/assets/images/component-docs/quiet-street.jpg

Image displayed in the intro panel.

imageAlt string | default: Quiet street with storefronts and warm evening light

Alt text describing the intro image.

cardEyebrow string | default: Sign in

Optional eyebrow above the login form card.

cardHeading string | default: Access your account

Heading shown inside the login form card.

cardText string | default: Use your email and password, or continue with a social provider below.

Supporting copy inside the login form card.

formAction string | default: #

Form action used when the login form is submitted.

formBlocks array | default: array

Form fields rendered inside the login form.

forgotPasswordText string | default: Forgot your password?

Link text shown below the form fields.

forgotPasswordLink string | default: /reset-password/

URL for the forgot-password action.

dividerText string | default: Or continue with

Label shown between the form and social buttons.

socialButtonSections array | default: array

Social sign-in buttons, typically Google and Facebook.

footerText string | default: Don't have an account?

Small footer prompt shown below the social buttons.

footerLinkText string | default: Create one

Clickable footer link text.

footerLink string | default: /sign-up/

URL for the footer link.

colorScheme enum | default: inherit

Color scheme theme for the section.

Accepted values:
  • inherit
  • light
  • dark

backgroundColor enum | default: base

Background color behind the section.

Accepted values:
  • none
  • base
  • surface
  • accent
  • highlight

paddingVertical enum | default: 5xl

Vertical padding for the section.

Accepted values:
  • xs
  • sm
  • md
  • lg
  • xl
  • 2xl
  • 3xl
  • 4xl
  • 5xl
  • 6xl