0.3.1 • Published 12 months ago

@renzodas/payload-lexical-typography v0.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

Payload Lexical Typography

This plugin extends the default Payload Lexical editor functionality by adding more customization options for text elements.

Core Features 🧩

  • Text color - ability to change text color to predefined colors or selected color using color picker.
  • Font size - ability to change font size to predefined sizes or custom size using input field.
  • Letter spacing - ability to change letter spacing to predefined values or custom value using input field.
  • Line height - ability to change line height to predefined values or custom value using input field.
  • Font family - ability to change font family to predefined fonts or custom font using input field.

Installation šŸ“¦

To get plugin up and running, follow these steps:

  1. Install package from NPM:

    pnpm add @renzodas/payload-lexical-typography
    # OR
    npm install @renzodas/payload-lexical-typography
  2. Add features you want to include in your lexical editor config, you can also pass additional props:

    import { lexicalEditor } from "@payloadcms/richtext-lexical";
    import {
      TextColorFeature,
      TextSizeFeature,
      TextLetterSpacingFeature,
      TextLineHeightFeature,
      TextFontFamilyFeature,
    } from "@renzodas/payload-lexical-typography";
    
    lexicalEditor({
      features: () => {
        return [
          TextColorFeature({
            colors: ["#FFFFFF", "#000000", "#FF0000", "#00FF00", "#0000FF"],
          }),
          TextSizeFeature(),
          TextLetterSpacingFeature(),
          TextLineHeightFeature(),
          TextFontFamilyFeature(),
        ];
      },
    });
  3. Add converters to your RichText component

    āš ļø Warning: Starting from version 0.1.0, converters must be imported from the /converters submodule instead of /client.

    JSX Converters

    import { TypographyJSXConverters } from "payload-lexical-typography/converters";
    
    const jsxConverters: JSXConvertersFunction<NodeTypes> = ({ defaultConverters }) => ({
      ...defaultConverters,
      ...TypographyJSXConverters,
    });

    HTML Converters

    For HTML converter, use TypographyHTMLConverters instead of TypographyJSXConverters, from /converters submodule.

Configuration šŸ› 

TextColorFeature

TextSizeFeature

TextLetterSpacingFeature

TextLineHeightFeature

TextFontFamilyFeature

āš ļø Warning: If the fonts aren't default system fonts, you still need to import them to your project layout, if you want to see them in the editor you have to add proper @font-face rules in your custom.scss file too.

Shared Options

License šŸ“œ

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing šŸ¤

If you have any ideas on how this plugin can be improved, please feel free to open an issue or a pull request.

Contact šŸ“§

If you have any questions, feel free to reach out to me at adrianmaj1122@gmail.com, or on my Linkedin profile Adrian Maj.

Support the Project

If you find this plugin useful, you can support the project by giving it a ā­ļø, or buying me a coffee ā˜•ļø, for motivation to keep working on it. Thanks for your support!