Skip to content

Temas

Introducción

Los temas son una forma de personalizar la apariencia de Easy Docs. Puedes crear un tema personalizado para que coincida con la identidad visual de tu empresa o simplemente para agregar un poco de personalidad a tu PDF.

Inicialmente, Easy Docs viene con un tema predeterminado, pero puedes crear un nuevo tema o modificar el tema predeterminado para satisfacer tus necesidades o crear un tema completamente nuevo.

Vamos a crear un nuevo tema llamado custom-theme y personalizarlo.

Creando un nuevo tema

Navega hasta la carpeta templates > lib > theme

Crea un nuevo archivo llamado custom-theme.ts.

Easy Docs ofrece varios tokens para personalizar el tema, impórtalos en tu archivo custom-theme.ts:

Ejemplo de tema:

ts
import { Borders } from "./tokens/borders";
import { BrandColorsType, GlobalColors } from "./tokens/colors";
import { Opacities } from "./tokens/opacities";
import { Shadows } from "./tokens/shadows";
import { Spacings } from "./tokens/spacings";
import { Typography } from "./tokens/typography";
import { AppThemeType } from "./types";

const brandColors: BrandColorsType = {
  ...GlobalColors,

  primaryDarkest: "#610D1C",
  primaryDark: "#AD1732",
  primaryBase: "#E11E42",
  primaryLight: "#E6637B",
  primaryLightest: "#FADFE4",

  secondaryDarkest: "#160F41",
  secondaryDark: "#1D135B",
  secondaryBase: "#2F208C",
  secondaryLight: "#6357B0",
  secondaryLightest: "#E8E4FF",

  brandSecondaryDarkest: "#243380",
  brandSecondaryDark: "#3952CC",
  brandSecondaryBase: "#4867FF",
  brandSecondaryLight: "#94A6FF",
  brandSecondaryLightest: "#EFF2FE",
};

const CustomTheme: AppThemeType = {
  colors: brandColors,
  borders: Borders,
  opacities: Opacities,
  shadows: Shadows,
  spacings: Spacings,
  typography: Typography,
  companyName: "Mi tema",
};

export default CustomTheme;

Configuración del tema

Accede al archivo index.ts en la carpeta templates > lib > theme > index.ts y añade tu tema:

ts
import CustomTheme from "./custom-theme";

export enum Themes {
  coop = "coop",
  sample = "sample",
  customTheme = "customTheme",
}

const THEMES: Record<Themes, AppThemeType> = {
  coop: ExampleTheme,
  sample: SampleTheme,
  customTheme: CustomTheme,
};

Utilizando el tema

Para utilizar el tema creado, primero necesitaremos ajustar nuestro componente, utilizando un Hook llamado useTheme que es responsable de devolver el tema actual.

tsx
import { useTheme } from "templates/lib/theme";

Y ahora solo necesitas usar el hook useTheme para acceder al tema actual.

tsx
const theme = useTheme();

Listo, ahora podemos utilizar todas las propiedades del tema.

Ejemplo:

tsx
return (
  <div>
    <Text title={theme.colors.brandSecondaryDark} color="primaryBase">
      Example:
      {theme.companyName}
    </Text>

    <img src={theme.logo} alt="logo" />
  </div>
);

Para utilizar el tema creado, solo pasa el nombre del tema creado en el endpoint de generación, en la propiedad theme.

json
{
  "theme": "customTheme", // nombre del tema
  "templateName": "FirstComponent",
  "templateProps": {
    "title": "First "
  }
}

Siéntete libre de personalizar el tema de acuerdo con tus necesidades, añade nuevas propiedades, elimina las existentes o crea un nuevo tema desde cero, solo recuerda que el tema necesita seguir la estructura de AppThemeType.

ts
export type AppThemeType = {
  borders: BordersType;
  colors: BrandColorsType;
  opacities: OpacitiesType;
  shadows: ShadowsType;
  spacings: SpacingsType;
  typography: TypographyType;
  logo: string;
  companyName: string;
};