UNPKG

@damourlabs/euro-clinical-trials

Version:

A Nuxt 3 application for visualizing and managing clinical trials data in Europe, built with modern web technologies.

20 lines (17 loc) 1 kB
import { z } from 'zod'; // Unicode-aware string validation export const createInternationalText = (minLength: number, maxLength: number, required: boolean = true) => { const base = z.string() .refine(val => { // Count Unicode code points, not bytes const codePoints = [...val].length; return codePoints >= minLength && codePoints <= maxLength; }, `Must be between ${minLength} and ${maxLength} characters`) .transform(val => val.trim().replace(/\s+/g, ' ')); // Normalize whitespace return required ? base.refine(val => val.length > 0, "Field is required") : base.optional(); }; // Name validation supporting international characters export const internationalNameRegex = /^[\p{L}\p{M}\p{Zs}\p{Pd}'\u0027\u2019]+$/u; export const validateInternationalName = z.string() .regex(internationalNameRegex, "Name contains invalid characters") .refine(val => [...val].length >= 1 && [...val].length <= 255, "Name length invalid");