Tipografía
El paquete Tailwind v4 usa la clase por defecto de Tailwind font-sans (ui-sans-serif, system-ui, sans-serif, ...). Como la propiedad CSS font-family se hereda, puedes sobrescribir la fuente del selector envolviéndolo en un contenedor con un estilo fontFamily. La fuente del contenedor se propaga en cascada a todos los elementos del selector.
Familia de Fuentes
Envuelve el selector y establece fontFamily en el contenedor para cambiar las fuentes:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
const fonts = { system: "inherit", serif: "'Georgia', 'Times New Roman', serif", mono: "'JetBrains Mono', 'Fira Code', monospace",};
type FontName = keyof typeof fonts;
function CompoundCustomFont() { const [value, setValue] = useState<Date | null>(null); const [font, setFont] = useState<FontName>("system");
return ( <div> <div style={{ display: "flex", gap: 8, marginBottom: 16 }}> {(Object.keys(fonts) as FontName[]).map((name) => ( <button key={name} onClick={() => setFont(name)} style={{ padding: "4px 12px", borderRadius: 4, border: `1px solid ${font === name ? "#3b82f6" : "#d1d5db"}`, background: font === name ? "#eff6ff" : "#fff", color: font === name ? "#3b82f6" : "#374151", cursor: "pointer", fontSize: 13, fontFamily: fonts[name], textTransform: "capitalize", }} > {name} </button> ))} </div> <div style={{ fontFamily: fonts[font] }}> <DatePicker value={value} onChange={setValue} inline /> </div> </div> );}Usando Fuentes Web (Noto Sans)
Carga una fuente web en tiempo de ejecución y aplícala a través de un contenedor. Este ejemplo carga Noto Sans desde Google Fonts:
import { useState, useEffect } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
function CompoundNotoSans() { const [value, setValue] = useState<Date | null>(null);
useEffect(() => { if (!document.getElementById("noto-sans-font")) { const link = document.createElement("link"); link.id = "noto-sans-font"; link.rel = "stylesheet"; link.href = "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;600;700&display=swap"; document.head.appendChild(link); } }, []);
return ( <div style={{ fontFamily: '"Noto Sans", sans-serif' }}> <DatePicker value={value} onChange={setValue} inline /> </div> );}En un proyecto real, carga la fuente a través de una etiqueta <link> en el <head> de tu HTML o a través de tu empaquetador de CSS en lugar de inyectarla en tiempo de ejecución. El enfoque con useEffect aquí es solo para fines de demostración.
Galería de Fuentes Web
Compara diferentes fuentes web para ver cómo la tipografía cambia drásticamente la apariencia del selector. Todas las fuentes a continuación admiten la renderización en múltiples idiomas (latín, CJK, coreano).
import { useState, useEffect } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
const WEB_FONTS = [ { name: "Noto Sans", family: '"Noto Sans", sans-serif' }, { name: "Noto Serif", family: '"Noto Serif", serif' }, { name: "IBM Plex Sans", family: '"IBM Plex Sans", sans-serif' }, { name: "Roboto Slab", family: '"Roboto Slab", serif' },];
const FONT_URL = "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Noto+Sans:wght@400;500;600;700&family=Noto+Serif:wght@400;500;600;700&family=Roboto+Slab:wght@400;500;600;700&display=swap";
function CompoundWebFonts() { const [value, setValue] = useState<Date | null>(null); const [active, setActive] = useState(0);
useEffect(() => { if (!document.getElementById("web-fonts-link")) { const link = document.createElement("link"); link.id = "web-fonts-link"; link.rel = "stylesheet"; link.href = FONT_URL; document.head.appendChild(link); } }, []);
return ( <div> <div style={{ display: "flex", gap: 6, marginBottom: 12, flexWrap: "wrap" }}> {WEB_FONTS.map((f, i) => ( <button key={f.name} onClick={() => setActive(i)} style={{ padding: "6px 14px", border: `1px solid ${active === i ? "#3b82f6" : "#d1d5db"}`, borderRadius: 6, background: active === i ? "#eff6ff" : "#fff", color: active === i ? "#3b82f6" : "#374151", cursor: "pointer", fontSize: 13, fontFamily: f.family, }} > {f.name} </button> ))} </div> <div style={{ fontFamily: WEB_FONTS[active].family }}> <DatePicker value={value} onChange={setValue} inline /> </div> </div> );}