• English
  • Quick start

    Install the package and import its stylesheet once in your application entry point.

    Your first button

    Live previewYour first button
    getting-started.tsx
    import { Button } from '@sudden3/leaf-ui';
    import '@sudden3/leaf-ui/styles.css';
    import { useState } from 'react';
    
    export function GettingStartedExample() {
      const [count, setCount] = useState(0);
    
      return <Button onClick={() => setCount((value) => value + 1)}>Clicked {count} times</Button>;
    }
    

    Build a form

    Use FormField for labels and validation feedback. Read named values with FormData in the submission handler. Button defaults to type="button"; specify type="submit" when submitting a form.

    Live previewForm submission
    Used for project notifications
    basic.tsx
    import { Button, Form, FormField, Input, Select } from '@sudden3/leaf-ui';
    import { useState } from 'react';
    export function FormBasic() {
      const [result, setResult] = useState('');
      return (
        <Form
          className="leaf-demo-stack leaf-demo-stack--wide"
          onSubmit={(event) => {
            event.preventDefault();
            const data = new FormData(event.currentTarget);
            setResult(`${data.get('name')} · ${data.get('email')} · ${data.get('team')}`);
          }}
          onReset={() => setResult('')}
        >
          <FormField label="Name" required>
            <Input name="name" placeholder="Your name" />
          </FormField>
          <FormField label="Work email" required help="Used for project notifications">
            <Input name="email" type="email" placeholder="hello@example.com" />
          </FormField>
          <FormField label="Team" required>
            <Select
              name="team"
              options={[
                { value: 'design', label: 'Design team' },
                { value: 'engineering', label: 'Engineering team' },
              ]}
            />
          </FormField>
          <FormField>
            <div className="leaf-demo-row">
              <Button type="submit">Submit</Button>
              <Button type="reset" variant="outline">
                Reset
              </Button>
            </div>
          </FormField>
          {result && <output className="leaf-demo-note">{result}</output>}
        </Form>
      );
    }
    

    Choose a theme and language

    import { ConfigProvider, DatePicker } from '@sudden3/leaf-ui';
    
    <ConfigProvider locale="en-US" theme={{ primaryColor: '#3264d9', borderRadius: 6 }}>
      <DatePicker aria-label="Deadline" />
    </ConfigProvider>

    Explore components, icons and theming.