UNPKG

neumorphic-peripheral

Version:

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

132 lines (131 loc) 5.74 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.autoDetectTheme = exports.getCurrentTheme = exports.setTheme = exports.button = exports.ButtonComponent = exports.password = exports.PasswordComponent = exports.input = exports.InputComponent = exports.card = exports.CardComponent = exports.BaseComponent = void 0; // Core exports __exportStar(require("./types"), exports); __exportStar(require("./themes"), exports); __exportStar(require("./utils"), exports); __exportStar(require("./validators"), exports); // Component exports var base_1 = require("./components/base"); Object.defineProperty(exports, "BaseComponent", { enumerable: true, get: function () { return base_1.BaseComponent; } }); var card_1 = require("./components/card"); Object.defineProperty(exports, "CardComponent", { enumerable: true, get: function () { return card_1.CardComponent; } }); Object.defineProperty(exports, "card", { enumerable: true, get: function () { return card_1.card; } }); var input_1 = require("./components/input"); Object.defineProperty(exports, "InputComponent", { enumerable: true, get: function () { return input_1.InputComponent; } }); Object.defineProperty(exports, "input", { enumerable: true, get: function () { return input_1.input; } }); var password_1 = require("./components/password"); Object.defineProperty(exports, "PasswordComponent", { enumerable: true, get: function () { return password_1.PasswordComponent; } }); Object.defineProperty(exports, "password", { enumerable: true, get: function () { return password_1.password; } }); var button_1 = require("./components/button"); Object.defineProperty(exports, "ButtonComponent", { enumerable: true, get: function () { return button_1.ButtonComponent; } }); Object.defineProperty(exports, "button", { enumerable: true, get: function () { return button_1.button; } }); // Main API const card_2 = require("./components/card"); const input_2 = require("./components/input"); const password_2 = require("./components/password"); const button_2 = require("./components/button"); const themes_1 = require("./themes"); Object.defineProperty(exports, "setTheme", { enumerable: true, get: function () { return themes_1.setTheme; } }); Object.defineProperty(exports, "getCurrentTheme", { enumerable: true, get: function () { return themes_1.getCurrentTheme; } }); Object.defineProperty(exports, "autoDetectTheme", { enumerable: true, get: function () { return themes_1.autoDetectTheme; } }); // Global configuration let globalConfig = { theme: (0, themes_1.getCurrentTheme)(), prefix: 'np', autoInit: false }; // Main neumorphic peripheral object const np = { // Component factories card: card_2.card, input: input_2.input, password: password_2.password, button: button_2.button, // Theme management setTheme: themes_1.setTheme, getCurrentTheme: themes_1.getCurrentTheme, autoDetectTheme: themes_1.autoDetectTheme, // Global configuration config(newConfig) { globalConfig = { ...globalConfig, ...newConfig }; if (newConfig.theme) { (0, themes_1.setTheme)(newConfig.theme); } }, getConfig() { return { ...globalConfig }; }, // Utility methods init() { // Auto-initialize components if enabled if (globalConfig.autoInit) { this.autoInit(); } }, autoInit() { // Auto-initialize components based on data attributes const elements = document.querySelectorAll('[data-np]'); elements.forEach(element => { const component = element.getAttribute('data-np'); const configAttr = element.getAttribute('data-np-config'); let config = {}; if (configAttr) { try { config = JSON.parse(configAttr); } catch (e) { console.warn('Invalid JSON in data-np-config:', configAttr); } } switch (component) { case 'card': this.card(element, config); break; case 'input': this.input(element, config); break; case 'password': this.password(element, config); break; case 'button': this.button(element, config); break; } }); }, // Version info version: '1.0.0', // Destroy all components destroyAll() { // This would require keeping track of all instances // For now, emit a global event that components can listen to window.dispatchEvent(new CustomEvent('np:destroy-all')); } }; // Auto-initialize when DOM is ready if (typeof window !== 'undefined') { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => np.init()); } else { np.init(); } } // Default export exports.default = np;