import { Canvas, Meta, Story, ArgsTable } from "@storybook/addon-docs";

import {
  Examples,
  Example,
  Note,
  Title,
  CustomArgsTable,
  VariantsTable,
  VariantRow,
} from "@calcom/storybook/components";

import { CheckboxField as Checkbox } from "./Checkbox";

<Meta title="UI/Form/Checkbox" component={Checkbox} />

<Title title="Checkbox  " suffix="Brief" subtitle="Version 2.0 — Last Update: 22 Aug 2022" />

## Definition

Checkboxes are used in forms and databases to indicate an answer to a question, apply a batch of settings or allow the user to make a multi-selection from a list. Alternatively, a single checkbox may be used for making single selections

## Structure

<CustomArgsTable of={Checkbox} />

<Examples title="Checkbox style">
  <Example title="Default">
    <Checkbox label="Default" />
  </Example>
  <Example title="Error">
    <Checkbox label="Error" error />
  </Example>
  <Example title="Disabled">
    <Checkbox label="Disabled" disabled />
  </Example>
  <Example title="Disabled">
    <Checkbox label="Disabled Checked" checked disabled />
  </Example>
</Examples>

<Examples title="Description As Label">
  <Example title="Default">
    <Checkbox descriptionAsLabel description="Default Description" />
  </Example>
  <Example title="Error">
    <Checkbox descriptionAsLabel description="Default Description" error />
  </Example>
  <Example title="Disabled">
    <Checkbox descriptionAsLabel description="Default Description" disabled />
  </Example>
  <Example title="Disabled">
    <Checkbox descriptionAsLabel description="Default Description" disabled checked />
  </Example>
</Examples>

<Canvas>
  <Story
    name="Checkbox"
    args={{
      label: "Default",
      description: "Default Description",
      error: false,
      disabled: false,
    }}
    argTypes={{
      label: {
        control: {
          type: "text",
        },
      },
      description: {
        control: {
          type: "text",
        },
      },
      error: {
        control: {
          type: "boolean",
        },
      },
      disabled: {
        control: {
          type: "boolean",
        },
      },
    }}>
    {({ label, description, error, disabled }) => (
      <VariantsTable titles={[""]} columnMinWidth={150}>
        <VariantRow variant="Default">
          <Checkbox label={label} error={error} disabled={disabled} />
        </VariantRow>
        <VariantRow variant="Description As Label">
          <Checkbox description={description} error={error} disabled={disabled} descriptionAsLabel />
        </VariantRow>
      </VariantsTable>
    )}
  </Story>
</Canvas>
