UNPKG

neumorphic-peripheral

Version:

A lightweight, framework-agnostic JavaScript/TypeScript library for beautiful neumorphic styling

110 lines (109 loc) 3.44 kB
"use strict"; // Add these functions to your existing src/utils/index.ts file Object.defineProperty(exports, "__esModule", { value: true }); exports.isElement = isElement; exports.addClassName = addClassName; exports.createElement = createElement; exports.getSizeValue = getSizeValue; exports.getElementValue = getElementValue; exports.setElementValue = setElementValue; exports.applyNeumorphicStyles = applyNeumorphicStyles; exports.createTransition = createTransition; exports.findParentWithClass = findParentWithClass; exports.insertAfter = insertAfter; exports.sanitizeClassName = sanitizeClassName; exports.mergeDeep = mergeDeep; function isElement(element) { return element instanceof HTMLElement; } function addClassName(element, className) { element.classList.add(`np-${className}`); } function createElement(tagName, attributes = {}) { const element = document.createElement(tagName); Object.entries(attributes).forEach(([key, value]) => { if (key === 'class') { element.className = value; } else { element.setAttribute(key, value); } }); return element; } function getSizeValue(size, property) { const sizeMap = { sm: { padding: '8px 12px', fontSize: '14px', height: '32px', borderRadius: '8px' }, md: { padding: '12px 16px', fontSize: '16px', height: '40px', borderRadius: '12px' }, lg: { padding: '16px 24px', fontSize: '18px', height: '48px', borderRadius: '16px' } }; return sizeMap[size]?.[property] || sizeMap.md[property]; } function getElementValue(element) { if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) { return element.value; } return ''; } function setElementValue(element, value) { if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) { element.value = value; } } function applyNeumorphicStyles(element, styles, theme) { Object.entries(styles).forEach(([property, value]) => { element.style.setProperty(property, value); }); } // Animation utilities function createTransition(duration = '0.3s', easing = 'cubic-bezier(0.25, 0.46, 0.45, 0.94)', properties = ['all']) { return properties.map(prop => `${prop} ${duration} ${easing}`).join(', '); } // DOM utilities function findParentWithClass(element, className) { let parent = element.parentElement; while (parent) { if (parent.classList.contains(className)) { return parent; } parent = parent.parentElement; } return null; } function insertAfter(newElement, referenceElement) { const parent = referenceElement.parentNode; if (parent) { parent.insertBefore(newElement, referenceElement.nextSibling); } } // Validation utilities function sanitizeClassName(className) { return className.replace(/[^a-zA-Z0-9-_]/g, ''); } function mergeDeep(target, source) { const result = { ...target }; for (const key in source) { if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) { result[key] = mergeDeep(result[key] || {}, source[key]); } else { result[key] = source[key]; } } return result; }