softable-pixels-web 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/TabSwitch-D6OPAUjC.js +304 -0
- package/dist/TabSwitch-D6OPAUjC.js.map +1 -0
- package/dist/ThemeContext-CRXby8a0.js +539 -0
- package/dist/ThemeContext-CRXby8a0.js.map +1 -0
- package/dist/index-CZOu4S--.d.ts +69 -0
- package/dist/index-jFi4YRO5.d.ts +277 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/mask-modules.d.ts +144 -0
- package/dist/mask-modules.js +705 -0
- package/dist/mask-modules.js.map +1 -0
- package/dist/tab-switch.d.ts +2 -0
- package/dist/tab-switch.js +3 -0
- package/dist/theme-context.d.ts +2 -0
- package/dist/theme-context.js +3 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-modules.js","names":["locales: LocaleRegistry"],"sources":["../src/services/MaskModule/MaskModule.ts","../src/services/MaskModule/enums.ts","../src/services/MaskModule/base/maskUtils.ts","../src/services/MaskModule/base/BaseMask.ts","../src/services/MaskModule/locales/br/masks/CpfMask.ts","../src/services/MaskModule/locales/br/masks/CnpjMask.ts","../src/services/MaskModule/locales/br/masks/DateMask.ts","../src/services/MaskModule/locales/br/masks/PhoneMask.ts","../src/services/MaskModule/locales/br/masks/FloatMask.ts","../src/services/MaskModule/locales/br/masks/MoneyMask.ts","../src/services/MaskModule/locales/br/masks/IntegerMask.ts","../src/services/MaskModule/locales/br/masks/ZipCodeMask.ts","../src/services/MaskModule/types.ts","../src/services/MaskModule/locales/br/masks/DocumentMask.ts","../src/services/MaskModule/locales/br/masks/NumericSymbolMask.ts","../src/services/MaskModule/base/BaseValidator.ts","../src/services/MaskModule/locales/br/validators/CpfValidator.ts","../src/services/MaskModule/locales/br/validators/CnpjValidator.ts","../src/services/MaskModule/locales/br/validators/DateValidator.ts","../src/services/MaskModule/locales/br/validators/PhoneValidator.ts","../src/services/MaskModule/locales/br/validators/FloatValidator.ts","../src/services/MaskModule/locales/br/validators/MoneyValidator.ts","../src/services/MaskModule/locales/br/validators/IntegerValidator.ts","../src/services/MaskModule/locales/br/validators/ZipCodeValidator.ts","../src/services/MaskModule/locales/br/validators/DocumentValidator.ts","../src/services/MaskModule/locales/br/validators/NumericSymbolValidator.ts","../src/services/MaskModule/locales/br/registerMasks.ts","../src/services/MaskModule/index.ts"],"sourcesContent":["// Types\nimport type { Locale, MaskType } from './enums'\nimport type { BaseMask } from './base/BaseMask'\nimport type { BaseValidator } from './base/BaseValidator'\n\ntype MaskRegistry = {\n masks: Record<MaskType, BaseMask>\n validators: Record<MaskType, BaseValidator>\n}\n\ntype LocaleRegistry = Record<Locale, MaskRegistry>\n\nconst locales: LocaleRegistry = {} as LocaleRegistry\n\nfunction ensureLocale(locale: Locale): void {\n if (!locales[locale]) {\n locales[locale] = { masks: {}, validators: {} } as LocaleRegistry[Locale]\n }\n}\n\nexport const MaskModule = {\n registerMask(locale: Locale, type: MaskType, mask: BaseMask): void {\n ensureLocale(locale)\n locales[locale].masks[type] = mask\n },\n\n registerValidator(\n locale: Locale,\n type: MaskType,\n validator: BaseValidator\n ): void {\n ensureLocale(locale)\n locales[locale].validators[type] = validator\n },\n\n getMask(locale: Locale, type: MaskType): BaseMask | undefined {\n return locales[locale]?.masks[type]\n },\n\n getValidator(locale: Locale, type: MaskType): BaseValidator | undefined {\n return locales[locale]?.validators[type]\n },\n\n reset(): void {\n Object.keys(locales).forEach(locale => {\n delete locales[locale as Locale]\n })\n }\n}\n","/**\n * Supported locales (country + language region).\n *\n * Extend this enum as needed for new countries.\n */\nexport enum Locale {\n BR = 'pt-BR', // Brazil\n US = 'en-US', // United States\n AR = 'es-AR' // Argentina\n}\n\n/**\n * Types of masks supported in the system.\n *\n * Add new types as needed for different data formats.\n */\nexport enum MaskType {\n CPF = 'CPF',\n CNPJ = 'CNPJ',\n DOCUMENT = 'DOCUMENT',\n PHONE = 'PHONE',\n DATE = 'DATE',\n FLOAT = 'FLOAT',\n INTEGER = 'INTEGER',\n MONEY = 'MONEY',\n ZIP_CODE = 'ZIP_CODE',\n NUMERIC_SYMBOL = 'NUMERIC_SYMBOL'\n}\n","/**\n * Removes all non-numeric characters from a string.\n * @param value - Input string.\n * @returns String containing only digits.\n */\nexport function onlyDigits(value: string): string {\n if (value == null) return ''\n return value.replace(/\\D/g, '')\n}\n\n/**\n * Applies the mask progressively according to the available characters.\n *\n * Alphanumeric characters (letters and digits) in the pattern will be replaced\n * by characters from the input `value`, in order. Non-alphanumeric characters\n * (e.g. `.`, `-`, `/`) are treated as static parts of the mask.\n *\n * Examples:\n *\n * applyPattern('12345', 'XXX.XXX.XXX-XX') -> '123.45'\n *\n * applyPattern('AB1234', 'AA-NN.NN') -> 'AB-12.34'\n *\n * applyPattern('12345678901', 'XXX.XXX.XXX-XX') -> '123.456.789-01'\n *\n * @param value - raw input string (partial or complete)\n * @param pattern - mask pattern where alphanumeric characters are placeholders\n * @returns partially formatted string\n */\nexport function applyPattern(value: string, pattern: string): string {\n if (value == null) return ''\n if (pattern == null) return value\n\n let result = ''\n let digitIndex = 0\n\n for (let i = 0; i < pattern.length; i++) {\n const char = pattern[i]\n\n if (/[a-zA-Z0-9]/.test(char)) {\n if (digitIndex < value.length) {\n result += value[digitIndex++]\n } else {\n break // No more digits available, stop applying more mask\n }\n } else {\n // Fixed mask character\n if (digitIndex < value.length) result += char\n }\n }\n\n return result\n}\n\n/**\n * Checks whether a string matches a regular expression.\n * @param value - Input string.\n * @param regex - Regular expression to test.\n * @returns Boolean indicating whether it matches.\n */\nexport function matchesPattern(value: string, regex: RegExp): boolean {\n return regex.test(value)\n}\n\n/**\n * Limits the length of a string to a maximum.\n * @param value - Input string.\n * @param maxLength - Maximum length allowed.\n * @returns Truncated string if longer than maxLength.\n */\nexport function limitLength(value: string, maxLength?: number): string {\n if (value == null) return ''\n if (maxLength === undefined) return value\n return value.slice(0, maxLength)\n}\n\n/**\n * Checks if a string meets min and max length constraints.\n * @param value - Input string.\n * @param min - Minimum length (optional).\n * @param max - Maximum length (optional).\n * @returns Boolean indicating whether the length is valid.\n */\nexport function isValidLength(\n value: string,\n min?: number,\n max?: number\n): boolean {\n if (value == null) return false\n\n if (min !== undefined && value.length < min) return false\n if (max !== undefined && value.length > max) return false\n return true\n}\n","import type { Mask } from '../types'\nimport { onlyDigits } from './maskUtils'\n\n/**\n * Abstract class that provides default behavior for most masks.\n * - Implements unmask() by removing all non-numeric characters.\n * - Supports optional maxLength and minLength constraints.\n */\nexport abstract class BaseMask implements Mask {\n /**\n * Maximum length of the masked string (optional).\n */\n maxLength?: number\n\n /**\n * Minimum length of the masked string (optional).\n */\n minLength?: number\n\n constructor(minLength?: number, maxLength?: number) {\n this.maxLength = maxLength\n this.minLength = minLength\n }\n\n /**\n * Removes all non-numeric characters from a string.\n * @param value - Masked or unmasked string.\n * @returns Plain string with digits only.\n */\n unmask(value: string): string {\n return onlyDigits(value)\n }\n\n /**\n * Must be implemented by each concrete mask class.\n * Applies the mask format to the input string.\n * @param value - Raw string.\n * @returns Masked string.\n */\n abstract format(value: string): string\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { applyPattern, limitLength, onlyDigits } from '../../../base/maskUtils'\n\nexport const CPF_PATTERN = 'XXX.XXX.XXX-XX'\n\nexport class CpfMask extends BaseMask {\n constructor() {\n const length = CPF_PATTERN.length\n super(length, length)\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n const formatted = applyPattern(digits, CPF_PATTERN)\n\n return limitLength(formatted, this.maxLength)\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { applyPattern, limitLength, onlyDigits } from '../../../base/maskUtils'\n\nexport const CNPJ_PATTERN = 'XX.XXX.XXX/XXXX-XX'\n\nexport class CnpjMask extends BaseMask {\n constructor() {\n const length = CNPJ_PATTERN.length\n super(length, length)\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n const formatted = applyPattern(digits, CNPJ_PATTERN)\n\n return limitLength(formatted, this.maxLength)\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { limitLength, onlyDigits } from '../../../base/maskUtils'\n\nconst DATE_PATTERN = 'DD/MM/YYYY'\n\nexport class DateMask extends BaseMask {\n constructor() {\n const length = DATE_PATTERN.length\n super(length, length)\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n\n let day = digits.slice(0, 2)\n let month = digits.slice(2, 4)\n let year = digits.slice(4, 8)\n\n // Clamp day (01–31)\n if (day.length === 2) {\n const parsed = parseInt(day)\n if (parsed > 31) day = '31'\n else if (parsed < 1) day = '01'\n }\n\n // Clamp month (01–12)\n if (month.length === 2) {\n const parsed = parseInt(month)\n if (parsed > 12) month = '12'\n else if (parsed < 1) month = '01'\n }\n\n // Clamp year (>= 0000)\n if (year.length === 4) {\n const parsed = parseInt(year)\n if (parsed < 0) year = '0000'\n }\n\n // Rebuild progressively\n let result = ''\n if (day) result += day\n if (month) result += `/${month}`\n if (year) result += `/${year}`\n\n return limitLength(result, this.maxLength)\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { limitLength, onlyDigits } from '../../../base/maskUtils'\n\n/**\n * Formats a Brazilian phone number progressively:\n * (XX) XXXXX-XXXX or (XX) XXXX-XXXX depending on length.\n */\nexport class PhoneMask extends BaseMask {\n constructor(maxLength = 15) {\n super(14, maxLength) // 14 (fixo) or 15 (celular)\n }\n\n format(value: string): string {\n const digits = limitLength(onlyDigits(value), this.maxLength)\n if (!digits) return ''\n\n // DDD\n if (digits.length < 3) return `(${digits}`\n\n const ddd = digits.slice(0, 2)\n const rest = digits.slice(2)\n\n // Fixo: 8 dígitos / Celular: 9 dígitos\n if (rest.length <= 4) {\n return `(${ddd}) ${rest}`\n } else if (rest.length <= 8) {\n const part1 = rest.slice(0, 4)\n const part2 = rest.slice(4)\n return `(${ddd}) ${part1}${part2 ? `-${part2}` : ''}`\n } else {\n const part1 = rest.slice(0, 5)\n const part2 = rest.slice(5)\n return `(${ddd}) ${part1}-${part2}`\n }\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { onlyDigits, limitLength } from '../../../base/maskUtils'\n\n/**\n * Automatically formats a numeric input as a float using comma as decimal separator.\n *\n * Ignores user-entered punctuation and inserts the comma based on configured decimal places.\n */\nexport class FloatMask extends BaseMask {\n private maxDecimalPlaces: number\n\n constructor(decimalDigits = 2, maxLength = 20) {\n super(1, maxLength)\n this.maxDecimalPlaces = decimalDigits\n }\n\n format(value: string): string {\n const rawDigits = onlyDigits(value)\n const digits = limitLength(rawDigits, this.maxLength)\n\n if (!digits) return ''\n\n const length = digits.length\n\n // If the string is shorter than or equal to the number of decimal places, prefix with zeros\n if (length <= this.maxDecimalPlaces) {\n const padded = digits.padStart(this.maxDecimalPlaces + 1, '0')\n const intPart = padded.slice(0, padded.length - this.maxDecimalPlaces)\n const decimalPart = padded.slice(-this.maxDecimalPlaces)\n return `${intPart},${decimalPart}`\n }\n\n const intPart = digits.slice(0, length - this.maxDecimalPlaces)\n const decimalPart = digits.slice(-this.maxDecimalPlaces)\n const intFormatted = this.formatThousands(intPart)\n\n return `${intFormatted},${decimalPart}`\n }\n\n /**\n * Adds dot thousand separators to a string of digits.\n * Example: \"1234567\" => \"1.234.567\"\n */\n private formatThousands(value: string): string {\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { onlyDigits } from '../../../base/maskUtils'\n\n/**\n * Formats input as currency, with thousand separator, decimal comma,\n * optional prefix (e.g. R$, $), and support for negatives.\n *\n * Examples:\n * - \"123456\" → \"R$ 1.234,56\"\n * - \"-123\" → \"R$ -1,23\"\n */\nexport class MoneyMask extends BaseMask {\n private maxDecimalPlaces: number\n private prefix: string\n private allowNegative: boolean\n\n constructor({\n prefix = 'R$',\n maxDecimalPlaces = 2,\n allowNegative = true,\n maxLength = 20\n }: {\n prefix?: string\n maxDecimalPlaces?: number\n allowNegative?: boolean\n maxLength?: number\n } = {}) {\n super(1, maxLength)\n this.prefix = prefix\n this.maxDecimalPlaces = maxDecimalPlaces\n this.allowNegative = allowNegative\n }\n\n format(value: string): string {\n if (!value) return ''\n\n const isNegative = this.allowNegative && value.trim().startsWith('-')\n const digits = onlyDigits(value).slice(0, this.maxLength)\n\n if (!digits) {\n return isNegative\n ? `${this.prefix} -0,${'0'.repeat(this.maxDecimalPlaces)}`\n : `${this.prefix} 0,${'0'.repeat(this.maxDecimalPlaces)}`\n }\n\n const len = digits.length\n\n // Ex: 3 digits, 2 decimals → '003' => '0,03'\n if (len <= this.maxDecimalPlaces) {\n const padded = digits.padStart(this.maxDecimalPlaces + 1, '0')\n const intPart = padded.slice(0, padded.length - this.maxDecimalPlaces)\n const decimalPart = padded.slice(-this.maxDecimalPlaces)\n return `${this.prefix} ${isNegative ? '-' : ''}${intPart},${decimalPart}`\n }\n\n const intRaw = digits.slice(0, len - this.maxDecimalPlaces)\n const decimal = digits.slice(-this.maxDecimalPlaces)\n const intFormatted = this.formatThousands(intRaw)\n\n return `${this.prefix} ${isNegative ? '-' : ''}${intFormatted},${decimal}`\n }\n\n private formatThousands(value: string): string {\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.')\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { limitLength, onlyDigits } from '../../../base/maskUtils'\n\n/**\n * Formats integers, allowing only digits.\n */\nexport class IntegerMask extends BaseMask {\n constructor(maxLength = 15) {\n super(1, maxLength)\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n return limitLength(digits, this.maxLength)\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { applyPattern, limitLength, onlyDigits } from '../../../base/maskUtils'\n\nexport const ZIP_CODE_PATTERN = 'XXXXX-XXX'\n\nexport class ZipCodeMask extends BaseMask {\n constructor() {\n const length = ZIP_CODE_PATTERN.length\n super(length, length)\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n const formatted = applyPattern(digits, ZIP_CODE_PATTERN)\n\n return limitLength(formatted, this.maxLength)\n }\n}\n","/**\n * Represents a generic mask.\n *\n * A mask is responsible for formatting and unformatting (removing formatting) from a value.\n */\nexport interface Mask {\n /**\n * Optional minimum length of the masked string.\n */\n minLength?: number\n\n /**\n * Optional maximum length of the masked string.\n */\n maxLength?: number\n\n /**\n * Formats a plain string into a masked format.\n * @param value - Raw string (e.g., \"12345678901\").\n * @returns Masked string (e.g., \"123.456.789-01\").\n */\n format(value: string): string\n\n /**\n * Removes all mask characters from a formatted string.\n * @param value - Masked string (e.g., \"123.456.789-01\").\n * @returns Unmasked string (e.g., \"12345678901\").\n */\n unmask(value: string): string\n}\n\n/**\n * Represents a validator for a masked value.\n *\n * A validator checks whether a masked value is valid based on rules.\n */\nexport interface Validator {\n /**\n * Validates whether the input value is valid.\n * @param value - Masked string.\n * @returns `true` if valid, `false` otherwise.\n */\n validate(value: string): boolean\n}\n\n/**\n * Mode of document mask and validator.\n *\n * - AUTO: Automatically detect based on length.\n * - CPF: Force CPF.\n * - CNPJ: Force CNPJ.\n */\nexport enum DocumentMode {\n CPF = 'cpf',\n CNPJ = 'cnpj',\n AUTO = 'auto'\n}\n","import { CpfMask } from './CpfMask'\nimport { CnpjMask } from './CnpjMask'\nimport { BaseMask } from '../../../base/BaseMask'\nimport { onlyDigits } from '../../../base/maskUtils'\nimport { DocumentMode } from '../../../types'\n\nexport class DocumentMask extends BaseMask {\n private cpfMask = new CpfMask()\n private cnpjMask = new CnpjMask()\n private mode: DocumentMode\n\n constructor(mode: DocumentMode = DocumentMode.AUTO) {\n super()\n this.mode = mode\n }\n\n format(value: string): string {\n const digits = onlyDigits(value)\n const mode = this.resolveMode(digits)\n\n if (mode === DocumentMode.CPF) {\n return this.cpfMask.format(digits)\n }\n\n if (mode === DocumentMode.CNPJ) {\n return this.cnpjMask.format(digits)\n }\n\n return digits\n }\n\n private resolveMode(digits: string): DocumentMode.CPF | DocumentMode.CNPJ {\n if (this.mode === DocumentMode.CPF) return DocumentMode.CPF\n if (this.mode === DocumentMode.CNPJ) return DocumentMode.CNPJ\n\n return digits.length <= 11 ? DocumentMode.CPF : DocumentMode.CNPJ\n }\n}\n","import { BaseMask } from '../../../base/BaseMask'\nimport { limitLength } from '../../../base/maskUtils'\n\nexport class NumericSymbolMask extends BaseMask {\n constructor(maxLength = 25) {\n super(1, maxLength)\n }\n\n format(value: string): string {\n if (value == null) return ''\n\n const result = value.replace(/[^\\d.,/-]/g, '')\n return limitLength(result, this.maxLength)\n }\n}\n","import type { Validator } from '../types'\n\n/**\n * Abstract class providing common validation utilities.\n * - Supports regex validation.\n * - Supports min and max length validation.\n */\nexport abstract class BaseValidator implements Validator {\n protected pattern?: RegExp\n protected minLength?: number\n protected maxLength?: number\n\n constructor(options?: {\n pattern?: RegExp\n minLength?: number\n maxLength?: number\n }) {\n this.pattern = options?.pattern\n this.minLength = options?.minLength\n this.maxLength = options?.maxLength\n }\n\n /**\n * Validates the input value based on:\n * - Pattern matching (if defined)\n * - Min length (if defined)\n * - Max length (if defined)\n *\n * Override this method if you need custom validation logic.\n *\n * @param value - Value to validate (usually masked string)\n * @returns true if valid, false otherwise\n */\n validate(value: string): boolean {\n if (value == null) return false\n\n const length = value.length\n\n if (this.minLength !== undefined && length < this.minLength) {\n return false\n }\n\n if (this.maxLength !== undefined && length > this.maxLength) {\n return false\n }\n\n if (this.pattern && !this.pattern.test(value)) return false\n\n return true\n }\n}\n","import { CPF_PATTERN } from '../masks/CpfMask'\nimport { BaseValidator } from '../../../base/BaseValidator'\n\nexport class CpfValidator extends BaseValidator {\n constructor() {\n const length = CPF_PATTERN.length\n super({ minLength: length, maxLength: length })\n }\n\n validate(value: string): boolean {\n if (value == null) return false\n\n return isCpfValid(value)\n }\n}\n\n/**\n * Validates if a CPF (Brazilian tax ID) is valid.\n *\n * This function:\n * - Removes any non-digit characters (dots, dashes, spaces).\n * - Checks if CPF has 11 digits.\n * - Rejects CPFs where all digits are the same (e.g., '11111111111').\n * - Performs CPF check digit validation (standard algorithm).\n *\n * @param inputCPF - CPF as a string, can be formatted (e.g., \"123.456.789-09\").\n * @returns true if CPF is valid, false otherwise.\n */\nfunction isCpfValid(inputCPF: string): boolean {\n // Remove dots, dashes, and spaces\n const cpfOnlyNumbers = inputCPF.replace(/[\\s.-]/g, '')\n\n // CPF must be exactly 11 digits\n if (cpfOnlyNumbers.length !== 11) return false\n\n // Check if all digits are the same (invalid CPF)\n if (/^(\\d)\\1{10}$/.test(cpfOnlyNumbers)) return false\n\n // Validate first check digit\n let sum = 0\n for (let i = 0; i < 9; i++) {\n sum += parseInt(cpfOnlyNumbers.charAt(i)) * (10 - i)\n }\n\n let firstCheckDigit = (sum * 10) % 11\n if (firstCheckDigit === 10 || firstCheckDigit === 11) firstCheckDigit = 0\n if (firstCheckDigit !== parseInt(cpfOnlyNumbers.charAt(9))) return false\n\n // Validate second check digit\n sum = 0\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cpfOnlyNumbers.charAt(i)) * (11 - i)\n }\n\n let secondCheckDigit = (sum * 10) % 11\n if (secondCheckDigit === 10 || secondCheckDigit === 11) secondCheckDigit = 0\n if (secondCheckDigit !== parseInt(cpfOnlyNumbers.charAt(10))) return false\n\n return true\n}\n","import { CNPJ_PATTERN } from '../masks/CnpjMask'\nimport { BaseValidator } from '../../../base/BaseValidator'\n\nexport class CnpjValidator extends BaseValidator {\n constructor() {\n const length = CNPJ_PATTERN.length\n super({ minLength: length, maxLength: length })\n }\n\n validate(value: string): boolean {\n if (value == null) return false\n\n return isCnpjValid(value)\n }\n}\n\n/**\n * Validates whether a given CNPJ number is valid.\n * @param cnpj The CNPJ number as a string.\n * @returns True if valid, false otherwise.\n */\nfunction isCnpjValid(cnpj: string): boolean {\n if (!cnpj) return false\n\n // Remove any non-digit characters\n const cleanedCnpj = cnpj.replace(/[^\\d]+/g, '')\n\n // CNPJ must be exactly 14 digits\n if (cleanedCnpj.length !== 14) return false\n\n // Reject CNPJs with all identical digits (e.g., 00000000000000)\n if (/^(\\d)\\1{13}$/.test(cleanedCnpj)) return false\n\n // Extract the base CNPJ and the two check digits\n const baseCnpj = cleanedCnpj.slice(0, 12)\n const checkDigits = cleanedCnpj.slice(12)\n\n // Calculate first check digit\n const firstSum = calculateCnpjWeightedSum(baseCnpj, 12, 5)\n const firstCheckDigit = calculateCnpjCheckDigit(firstSum)\n\n if (firstCheckDigit !== Number(checkDigits.charAt(0))) {\n return false\n }\n\n // Calculate second check digit (base + first check digit)\n const secondSum = calculateCnpjWeightedSum(baseCnpj + firstCheckDigit, 13, 6)\n const secondCheckDigit = calculateCnpjCheckDigit(secondSum)\n\n if (secondCheckDigit !== Number(checkDigits.charAt(1))) {\n return false\n }\n\n return true\n}\n\n/**\n * Calculates the weighted sum for CNPJ verification digits.\n * @param numbers The numeric string of the CNPJ.\n * @param size The number of digits to consider for the calculation.\n * @param position The starting multiplier position (5 or 6).\n * @returns The weighted sum.\n */\nfunction calculateCnpjWeightedSum(\n numbers: string,\n size: number,\n position: number\n): number {\n let sum = 0\n\n for (let i = 0; i < size; i++) {\n sum += Number(numbers.charAt(i)) * position\n position--\n\n if (position < 2) {\n position = 9\n }\n }\n\n return sum\n}\n\n/**\n * Calculates the verification digit based on the weighted sum.\n * @param sum The weighted sum.\n * @returns The verification digit (0-9).\n */\nfunction calculateCnpjCheckDigit(sum: number): number {\n const remainder = sum % 11\n return remainder < 2 ? 0 : 11 - remainder\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\n/**\n * Validator for dates in the format dd/mm/yyyy.\n *\n * Ensures the format is correct and the date is valid in the calendar (e.g. 30/02 is invalid).\n */\nexport class DateValidator extends BaseValidator {\n constructor() {\n super({\n minLength: 10,\n maxLength: 10,\n pattern: /^\\d{2}\\/\\d{2}\\/\\d{4}$/ // Strictly requires dd/mm/yyyy format\n })\n }\n\n override validate(value: string): boolean {\n if (!super.validate(value)) return false\n\n const [dayStr, monthStr, yearStr] = value.split('/')\n const day = parseInt(dayStr, 10)\n const month = parseInt(monthStr, 10)\n const year = parseInt(yearStr, 10)\n\n const date = new Date(year, month - 1, day)\n\n return (\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n date.getDate() === day\n )\n }\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\n/**\n * Validates a Brazilian phone number with optional mobile or landline support.\n */\nexport class PhoneValidator extends BaseValidator {\n private allowedDDDs: string[]\n\n constructor({\n allowMobile = true,\n allowLandline = true,\n allowedDDDs = Array.from({ length: 89 }, (_, i) => `${i + 11}`), // 11–99\n minLength,\n maxLength\n }: {\n allowMobile?: boolean\n allowLandline?: boolean\n allowedDDDs?: string[]\n minLength?: number\n maxLength?: number\n } = {}) {\n const mobileRegex = /^\\(?(\\d{2})\\)?\\s?\\d{5}-?\\d{4}$/ // (11) 98765-4321\n const landlineRegex = /^\\(?(\\d{2})\\)?\\s?\\d{4}-?\\d{4}$/ // (11) 3456-7890\n\n const pattern =\n allowMobile && allowLandline\n ? /^\\(?\\d{2}\\)?\\s?(\\d{4,5})-?\\d{4}$/\n : allowMobile\n ? mobileRegex\n : landlineRegex\n\n super({ pattern, minLength, maxLength })\n\n this.allowedDDDs = allowedDDDs\n }\n\n validate(value: string): boolean {\n if (!super.validate(value)) return false\n\n const digits = value.replace(/\\D/g, '')\n if (digits.length !== 10 && digits.length !== 11) return false\n\n const ddd = digits.slice(0, 2)\n return this.allowedDDDs.includes(ddd)\n }\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\nexport class FloatValidator extends BaseValidator {\n constructor(maxDecimalPlaces = 3, minLength = 1, maxLength = 20) {\n const decimalRegex = new RegExp(`^\\\\d+(,\\\\d{1,${maxDecimalPlaces}})?$`)\n\n super({\n pattern: decimalRegex,\n minLength,\n maxLength\n })\n }\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\n/**\n * Validates formatted currency strings.\n *\n * Supports optional prefix, negative values, and comma decimal separator.\n */\nexport class MoneyValidator extends BaseValidator {\n constructor({\n prefix = 'R$',\n maxDecimalPlaces = 2,\n allowNegative = true,\n minLength,\n maxLength\n }: {\n prefix?: string\n maxDecimalPlaces?: number\n allowNegative?: boolean\n minLength?: number\n maxLength?: number\n } = {}) {\n // Escape prefix for regex (if it has symbols)\n const escapedPrefix = prefix.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n // Matches: R$ -1.234,56\n const pattern = new RegExp(\n `^${escapedPrefix}\\\\s?${allowNegative ? '-?' : ''}\\\\d{1,3}(\\\\.\\\\d{3})*(,\\\\d{1,${maxDecimalPlaces}})?$`\n )\n\n super({\n pattern,\n minLength,\n maxLength\n })\n }\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\nexport class IntegerValidator extends BaseValidator {\n constructor(minLength = 1, maxLength = 15) {\n super({\n pattern: /^\\d+$/,\n minLength,\n maxLength\n })\n }\n}\n","import { ZIP_CODE_PATTERN } from '../masks/ZipCodeMask'\nimport { BaseValidator } from '../../../base/BaseValidator'\n\nexport class ZipCodeValidator extends BaseValidator {\n constructor() {\n const length = ZIP_CODE_PATTERN.length\n super({ minLength: length, maxLength: length })\n }\n\n validate(value: string): boolean {\n if (value == null) return false\n\n if (this.minLength !== undefined && value.length < this.minLength)\n return false\n\n if (this.maxLength !== undefined && value.length > this.maxLength)\n return false\n\n return true\n }\n}\n","import { CpfValidator } from './CpfValidator'\nimport { CnpjValidator } from './CnpjValidator'\nimport { BaseValidator } from '../../../base/BaseValidator'\nimport { onlyDigits } from '../../../base/maskUtils'\nimport { DocumentMode } from '../../../types'\n\nexport class DocumentValidator extends BaseValidator {\n private cpfValidator = new CpfValidator()\n private cnpjValidator = new CnpjValidator()\n private mode: DocumentMode\n\n constructor(mode: DocumentMode = DocumentMode.AUTO) {\n super()\n this.mode = mode\n }\n\n validate(value: string): boolean {\n const digits = onlyDigits(value)\n const type = this.resolveType(digits)\n\n if (type === DocumentMode.CPF) {\n return this.cpfValidator.validate(value)\n }\n\n if (type === DocumentMode.CNPJ) {\n return this.cnpjValidator.validate(value)\n }\n\n return false\n }\n\n private resolveType(digits: string): DocumentMode.CPF | DocumentMode.CNPJ {\n if (this.mode === DocumentMode.CPF) return DocumentMode.CPF\n if (this.mode === DocumentMode.CNPJ) return DocumentMode.CNPJ\n\n return digits.length <= 11 ? DocumentMode.CPF : DocumentMode.CNPJ\n }\n}\n","import { BaseValidator } from '../../../base/BaseValidator'\n\nexport class NumericSymbolValidator extends BaseValidator {\n constructor(minLength = 1, maxLength = 25) {\n super({\n pattern: /^[\\d.,/-]+$/,\n minLength,\n maxLength\n })\n }\n}\n","import { MaskModule } from '../../MaskModule'\nimport { MaskType, Locale } from '../../enums'\n\nimport { CpfMask } from './masks/CpfMask'\nimport { CnpjMask } from './masks/CnpjMask'\nimport { DateMask } from './masks/DateMask'\nimport { PhoneMask } from './masks/PhoneMask'\nimport { FloatMask } from './masks/FloatMask'\nimport { MoneyMask } from './masks/MoneyMask'\nimport { IntegerMask } from './masks/IntegerMask'\nimport { ZipCodeMask } from './masks/ZipCodeMask'\nimport { DocumentMask } from './masks/DocumentMask'\nimport { NumericSymbolMask } from './masks/NumericSymbolMask'\n\nimport { CpfValidator } from './validators/CpfValidator'\nimport { CnpjValidator } from './validators/CnpjValidator'\nimport { DateValidator } from './validators/DateValidator'\nimport { PhoneValidator } from './validators/PhoneValidator'\nimport { FloatValidator } from './validators/FloatValidator'\nimport { MoneyValidator } from './validators/MoneyValidator'\nimport { IntegerValidator } from './validators/IntegerValidator'\nimport { ZipCodeValidator } from './validators/ZipCodeValidator'\nimport { DocumentValidator } from './validators/DocumentValidator'\nimport { NumericSymbolValidator } from './validators/NumericSymbolValidator'\n\nexport function registerBrMasks() {\n MaskModule.registerMask(Locale.BR, MaskType.CPF, new CpfMask())\n MaskModule.registerValidator(Locale.BR, MaskType.CPF, new CpfValidator())\n\n MaskModule.registerMask(Locale.BR, MaskType.CNPJ, new CnpjMask())\n MaskModule.registerValidator(Locale.BR, MaskType.CNPJ, new CnpjValidator())\n\n MaskModule.registerMask(Locale.BR, MaskType.DOCUMENT, new DocumentMask())\n MaskModule.registerValidator(\n Locale.BR,\n MaskType.DOCUMENT,\n new DocumentValidator()\n )\n\n MaskModule.registerMask(Locale.BR, MaskType.PHONE, new PhoneMask())\n MaskModule.registerValidator(Locale.BR, MaskType.PHONE, new PhoneValidator())\n\n MaskModule.registerMask(Locale.BR, MaskType.DATE, new DateMask())\n MaskModule.registerValidator(Locale.BR, MaskType.DATE, new DateValidator())\n\n MaskModule.registerMask(Locale.BR, MaskType.FLOAT, new FloatMask())\n MaskModule.registerValidator(Locale.BR, MaskType.FLOAT, new FloatValidator())\n\n MaskModule.registerMask(Locale.BR, MaskType.INTEGER, new IntegerMask())\n MaskModule.registerValidator(\n Locale.BR,\n MaskType.INTEGER,\n new IntegerValidator()\n )\n\n MaskModule.registerMask(Locale.BR, MaskType.MONEY, new MoneyMask())\n MaskModule.registerValidator(Locale.BR, MaskType.MONEY, new MoneyValidator())\n\n MaskModule.registerMask(\n Locale.BR,\n MaskType.NUMERIC_SYMBOL,\n new NumericSymbolMask()\n )\n MaskModule.registerValidator(\n Locale.BR,\n MaskType.NUMERIC_SYMBOL,\n new NumericSymbolValidator()\n )\n\n MaskModule.registerMask(Locale.BR, MaskType.ZIP_CODE, new ZipCodeMask())\n MaskModule.registerValidator(\n Locale.BR,\n MaskType.ZIP_CODE,\n new ZipCodeValidator()\n )\n}\n","import { registerBrMasks } from './locales/br/registerMasks'\n\nexport * from './enums'\nexport * from './MaskModule'\n\n// Register default locales\nregisterBrMasks()\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as ThemeName, c as ThemeRegistry, i as ThemeMode, l as ThemeTokens, n as useTheme, o as ThemePersistence, r as ThemeContextData, s as ThemeProviderProps, t as ThemeProvider } from "./index-jFi4YRO5.js";
|
|
2
|
+
export { ThemeContextData, ThemeMode, ThemeName, ThemePersistence, ThemeProvider, ThemeProviderProps, ThemeRegistry, ThemeTokens, useTheme };
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "softable-pixels-web",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"keywords": [],
|
|
6
|
+
"author": "softable",
|
|
7
|
+
"license": "ISC",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"repository": {
|
|
10
|
+
"url": "https://github.com/Softable-Engineering/pixel"
|
|
11
|
+
},
|
|
12
|
+
"main": "dist/index.js",
|
|
13
|
+
"types": "dist/index.d.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
19
|
+
"build": "rm -rf dist && tsdown"
|
|
20
|
+
},
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"import": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./mask-modules": {
|
|
27
|
+
"types": "./dist/mask-modules.d.ts",
|
|
28
|
+
"import": "./dist/mask-modules.js"
|
|
29
|
+
},
|
|
30
|
+
"./tab-switch": {
|
|
31
|
+
"types": "./dist/tab-switch.d.ts",
|
|
32
|
+
"import": "./dist/tab-switch.js"
|
|
33
|
+
},
|
|
34
|
+
"./theme-context": {
|
|
35
|
+
"types": "./dist/theme-context.d.ts",
|
|
36
|
+
"import": "./dist/theme-context.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"react": "~18.2.0",
|
|
41
|
+
"react-dom": "~18.2.0",
|
|
42
|
+
"framer-motion": "^11.0.3"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"tsdown": "^0.18.3",
|
|
46
|
+
"typescript": "^5.9.3",
|
|
47
|
+
"@biomejs/biome": "2.0.6",
|
|
48
|
+
"@types/node": "^18.18.3",
|
|
49
|
+
"@types/react": "^19.2.7",
|
|
50
|
+
"framer-motion": "^11.0.3",
|
|
51
|
+
"@types/react-dom": "^19.2.3"
|
|
52
|
+
},
|
|
53
|
+
"typesVersions": {
|
|
54
|
+
"*": {
|
|
55
|
+
"mask-modules": [
|
|
56
|
+
"dist/mask-modules/index.d.ts"
|
|
57
|
+
],
|
|
58
|
+
"tab-switch": [
|
|
59
|
+
"dist/tab-switch/index.d.ts"
|
|
60
|
+
],
|
|
61
|
+
"theme-context": [
|
|
62
|
+
"dist/theme-context/index.d.ts"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"packageManager": "pnpm@10.18.3"
|
|
67
|
+
}
|